From 1ba87165b054b6e2d4697d6e1f6da19443c6a0f2 Mon Sep 17 00:00:00 2001 From: Regalis Date: Sat, 8 Oct 2016 17:19:54 +0300 Subject: [PATCH] Fixed camera being placed at {-2147483647, -2147483647} when starting a round, fixed debugdraw crashing the game, moving spectator camera along with the closest sub in Submarine.ForceTranslate --- Subsurface/Source/Camera.cs | 2 ++ Subsurface/Source/Map/Hull.cs | 2 +- Subsurface/Source/Map/SubmarineBody.cs | 22 ++++++++++++++-------- Subsurface/Source/Screens/GameScreen.cs | 2 +- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/Subsurface/Source/Camera.cs b/Subsurface/Source/Camera.cs index 67a5b2431..b3f4f7088 100644 --- a/Subsurface/Source/Camera.cs +++ b/Subsurface/Source/Camera.cs @@ -110,6 +110,8 @@ namespace Barotrauma viewMatrix = Matrix.CreateTranslation(new Vector3(GameMain.GraphicsWidth / 2.0f, GameMain.GraphicsHeight / 2.0f, 0)); + + UpdateTransform(); } public Vector2 TargetPos diff --git a/Subsurface/Source/Map/Hull.cs b/Subsurface/Source/Map/Hull.cs index 76ef052cb..62f5ddcdd 100644 --- a/Subsurface/Source/Map/Hull.cs +++ b/Subsurface/Source/Map/Hull.cs @@ -586,7 +586,7 @@ namespace Barotrauma GUI.DrawRectangle(spriteBatch, new Vector2(drawRect.X, -drawRect.Y), new Vector2(rect.Width, rect.Height), - Color.Blue,false,0, (int)Math.Max((1.5f / GameScreen.Selected.Cam.Zoom), 1.0f)); + Color.Blue,false,0, (int)Math.Max((1.5f / Screen.Selected.Cam.Zoom), 1.0f)); GUI.DrawRectangle(spriteBatch, new Rectangle(drawRect.X, -drawRect.Y, rect.Width, rect.Height), diff --git a/Subsurface/Source/Map/SubmarineBody.cs b/Subsurface/Source/Map/SubmarineBody.cs index 4f37daf94..b6d4f7cfa 100644 --- a/Subsurface/Source/Map/SubmarineBody.cs +++ b/Subsurface/Source/Map/SubmarineBody.cs @@ -268,16 +268,22 @@ namespace Barotrauma { Body.SetTransform(Body.Position + ConvertUnits.ToSimUnits(amount), 0.0f); - if (Character.Controlled != null) + bool isClosestSub = false; + if (Character.Controlled == null) { - Character.Controlled.CursorPosition += amount; + isClosestSub = Submarine.GetClosest(GameMain.GameScreen.Cam.WorldViewCenter) == submarine; + } + else + { + isClosestSub = Character.Controlled.Submarine == submarine; - if (Character.Controlled.Submarine == submarine || - (Character.Controlled == null && Submarine.GetClosest(GameMain.GameScreen.Cam.WorldViewCenter) == submarine)) - { - GameMain.GameScreen.Cam.Position += amount; - if (GameMain.GameScreen.Cam.TargetPos != Vector2.Zero) GameMain.GameScreen.Cam.TargetPos += amount; - } + Character.Controlled.CursorPosition += amount; + } + + if (isClosestSub) + { + GameMain.GameScreen.Cam.Position += amount; + if (GameMain.GameScreen.Cam.TargetPos != Vector2.Zero) GameMain.GameScreen.Cam.TargetPos += amount; } } diff --git a/Subsurface/Source/Screens/GameScreen.cs b/Subsurface/Source/Screens/GameScreen.cs index b03e8afe2..3dfcc9889 100644 --- a/Subsurface/Source/Screens/GameScreen.cs +++ b/Subsurface/Source/Screens/GameScreen.cs @@ -24,7 +24,7 @@ namespace Barotrauma public BackgroundCreatureManager BackgroundCreatureManager; - public Camera Cam + public override Camera Cam { get { return cam; } }