From 73bde75c2e00a0b4a7933ab14d6a02548126f745 Mon Sep 17 00:00:00 2001 From: Regalis11 Date: Sun, 1 Nov 2015 17:47:59 +0200 Subject: [PATCH] Obstructing vision when wearing a diving suit or mask --- .vs/Subsurface_Solution/v14/.suo | Bin 735744 -> 735744 bytes Subsurface/Barotrauma.csproj | 3 ++ .../Content/Items/Diving/divinggear.xml | 4 +- Subsurface/Content/Lights/visioncircle.png | Bin 0 -> 28614 bytes Subsurface/Source/Characters/Character.cs | 9 +++- Subsurface/Source/Map/Lights/LightManager.cs | 51 +++++++++++++++--- Subsurface/Source/Map/Lights/LightSource.cs | 20 ++++--- Subsurface/Source/Screens/GameScreen.cs | 5 +- 8 files changed, 77 insertions(+), 15 deletions(-) create mode 100644 Subsurface/Content/Lights/visioncircle.png diff --git a/.vs/Subsurface_Solution/v14/.suo b/.vs/Subsurface_Solution/v14/.suo index 69b1e8619c80de0553fafc6294ed18c8560c7eff..25aff956228d78e6f45b74d8f3ddcd6b80cc2344 100644 GIT binary patch delta 11415 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 delta 11369 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 PreserveNewest + + PreserveNewest + PreserveNewest diff --git a/Subsurface/Content/Items/Diving/divinggear.xml b/Subsurface/Content/Items/Diving/divinggear.xml index 016106d69..6de52afec 100644 --- a/Subsurface/Content/Items/Diving/divinggear.xml +++ b/Subsurface/Content/Items/Diving/divinggear.xml @@ -28,6 +28,8 @@ + + @@ -61,7 +63,7 @@ - + diff --git a/Subsurface/Content/Lights/visioncircle.png b/Subsurface/Content/Lights/visioncircle.png new file mode 100644 index 0000000000000000000000000000000000000000..39ff2ecb32de4000878ce634873e7e4a3d5b1de3 GIT binary patch literal 28614 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 QfWY4d=2qv2PVAWf13EZiKmY&$ literal 0 HcmV?d00001 diff --git a/Subsurface/Source/Characters/Character.cs b/Subsurface/Source/Characters/Character.cs index 00183e073..05a63261f 100644 --- a/Subsurface/Source/Characters/Character.cs +++ b/Subsurface/Source/Characters/Character.cs @@ -1,4 +1,5 @@ -using FarseerPhysics; + +using FarseerPhysics; using FarseerPhysics.Dynamics; using FarseerPhysics.Dynamics.Joints; using Lidgren.Network; @@ -151,6 +152,11 @@ namespace Barotrauma set { lowPassMultiplier = MathHelper.Clamp(value, 0.0f, 1.0f); } } + public bool ObstructVision + { + get; set; + } + public float SoundRange { get { return aiTarget.SoundRange; } @@ -859,6 +865,7 @@ namespace Barotrauma if (aiTarget != null) aiTarget.SoundRange = 0.0f; lowPassMultiplier = MathHelper.Lerp(lowPassMultiplier, 1.0f, 0.1f); + ObstructVision = false; if (needsAir) { diff --git a/Subsurface/Source/Map/Lights/LightManager.cs b/Subsurface/Source/Map/Lights/LightManager.cs index b5799e9a8..de5cab385 100644 --- a/Subsurface/Source/Map/Lights/LightManager.cs +++ b/Subsurface/Source/Map/Lights/LightManager.cs @@ -11,7 +11,7 @@ namespace Barotrauma.Lights public Color AmbientLight; - RenderTarget2D lightMap; + RenderTarget2D lightMap, losTexture; private static Texture2D alphaClearTexture; @@ -21,10 +21,9 @@ namespace Barotrauma.Lights public bool LightingEnabled = true; - //public RenderTarget2D LightMap - //{ - // get { return lightMap; } - //} + public bool ObstructVision; + + private Texture2D visionCircle; public LightManager(GraphicsDevice graphics) { @@ -32,6 +31,8 @@ namespace Barotrauma.Lights AmbientLight = new Color(80, 80, 80, 255); + visionCircle = Sprite.LoadTexture("Content/Lights/visioncircle.png"); + var pp = graphics.PresentationParameters; lightMap = new RenderTarget2D(graphics, @@ -39,6 +40,7 @@ namespace Barotrauma.Lights pp.BackBufferFormat, pp.DepthStencilFormat, pp.MultiSampleCount, RenderTargetUsage.DiscardContents); + losTexture = new RenderTarget2D(graphics, GameMain.GraphicsWidth, GameMain.GraphicsHeight); if (alphaClearTexture==null) { @@ -56,7 +58,7 @@ namespace Barotrauma.Lights lights.Remove(light); } - public void DrawLOS(GraphicsDevice graphics, Camera cam, Vector2 pos) + public void DrawLOS(GraphicsDevice graphics, SpriteBatch spriteBatch, Camera cam, Vector2 pos) { if (!LosEnabled) return; @@ -72,6 +74,11 @@ namespace Barotrauma.Lights convexHull.DrawShadows(graphics, cam, pos, shadowTransform); } + if (!ObstructVision) return; + + spriteBatch.Begin(SpriteSortMode.Immediate, CustomBlendStates.Multiplicative); + spriteBatch.Draw(losTexture, Vector2.Zero); + spriteBatch.End(); } public void OnMapLoaded() @@ -140,6 +147,38 @@ namespace Barotrauma.Lights //clear alpha, to avoid messing stuff up later ClearAlphaToOne(graphics, spriteBatch); graphics.SetRenderTarget(null); + + + } + + public void UpdateObstructVision(GraphicsDevice graphics, SpriteBatch spriteBatch, Camera cam, Vector2 lookAtPosition) + { + + if (!ObstructVision) return; + + graphics.SetRenderTarget(losTexture); + graphics.Clear(Color.Black); + + spriteBatch.Begin(SpriteSortMode.Immediate, null, null, null, null, null, cam.Transform); + + Vector2 diff = lookAtPosition - ViewPos; + diff.Y = -diff.Y; + float rotation = MathUtils.VectorToAngle(diff); + + Vector2 scale = new Vector2(3.0f, 1.0f); + + spriteBatch.Draw(LightSource.LightTexture, new Vector2(ViewPos.X, -ViewPos.Y), null, Color.White, rotation, + new Vector2(LightSource.LightTexture.Width*0.2f, LightSource.LightTexture.Height/2), scale, SpriteEffects.None, 0.0f); + spriteBatch.End(); + + //ClearAlphaToOne(graphics, spriteBatch); + + graphics.SetRenderTarget(null); + + //spriteBatch.Begin(); + //spriteBatch.Draw(lightMap, Vector2.Zero, Color.White); + //spriteBatch.End(); + } private void ClearAlphaToOne(GraphicsDevice graphics, SpriteBatch spriteBatch) diff --git a/Subsurface/Source/Map/Lights/LightSource.cs b/Subsurface/Source/Map/Lights/LightSource.cs index 6dd94e1ad..5bb4ced6d 100644 --- a/Subsurface/Source/Map/Lights/LightSource.cs +++ b/Subsurface/Source/Map/Lights/LightSource.cs @@ -32,6 +32,19 @@ namespace Barotrauma.Lights } } + public static Texture2D LightTexture + { + get + { + if (lightTexture == null) + { + lightTexture = TextureLoader.FromFile("Content/Lights/light.png"); + } + + return lightTexture; + } + } + public Color Color { get { return color; } @@ -59,11 +72,6 @@ namespace Barotrauma.Lights this.range = range; this.color = color; - if (lightTexture == null) - { - lightTexture = TextureLoader.FromFile("Content/Lights/light.png"); - } - texture = lightTexture; GameMain.LightManager.AddLight(this); @@ -82,7 +90,7 @@ namespace Barotrauma.Lights public void Draw(SpriteBatch spriteBatch) { - Vector2 center = new Vector2(lightTexture.Width / 2, lightTexture.Height / 2); + Vector2 center = new Vector2(LightTexture.Width / 2, LightTexture.Height / 2); float scale = range / (lightTexture.Width / 2.0f); spriteBatch.Draw(lightTexture, new Vector2(Position.X, -Position.Y), null, color, 0, center, scale, SpriteEffects.None, 1); } diff --git a/Subsurface/Source/Screens/GameScreen.cs b/Subsurface/Source/Screens/GameScreen.cs index 974e2bc18..6cd0d8461 100644 --- a/Subsurface/Source/Screens/GameScreen.cs +++ b/Subsurface/Source/Screens/GameScreen.cs @@ -161,8 +161,11 @@ namespace Barotrauma public void DrawMap(GraphicsDevice graphics, SpriteBatch spriteBatch) { + GameMain.LightManager.ObstructVision = Character.Controlled != null && Character.Controlled.ObstructVision; GameMain.LightManager.UpdateLightMap(graphics, spriteBatch, cam); + GameMain.LightManager.UpdateObstructVision(graphics, spriteBatch, cam, + Character.Controlled==null ? LightManager.ViewPos : Character.Controlled.CursorPosition); //---------------------------------------------------------------------------------------- //1. draw the background, characters and the parts of the submarine that are behind them @@ -312,7 +315,7 @@ namespace Barotrauma spriteBatch.End(); - GameMain.LightManager.DrawLOS(graphics, cam, LightManager.ViewPos); + GameMain.LightManager.DrawLOS(graphics, spriteBatch, cam, LightManager.ViewPos); } } }