diff --git a/Subsurface/Barotrauma.csproj b/Subsurface/Barotrauma.csproj
index d8487f80e..d9ae80cc0 100644
--- a/Subsurface/Barotrauma.csproj
+++ b/Subsurface/Barotrauma.csproj
@@ -1049,6 +1049,9 @@
PreserveNewest
+
+ PreserveNewest
+
PreserveNewest
@@ -1648,6 +1651,9 @@
PreserveNewest
+
+ PreserveNewest
+
PreserveNewest
diff --git a/Subsurface/Content/Content.mgcb b/Subsurface/Content/Content.mgcb
index 3b1a5e869..48c1e7111 100644
--- a/Subsurface/Content/Content.mgcb
+++ b/Subsurface/Content/Content.mgcb
@@ -49,3 +49,8 @@
/processorParam:DebugMode=Auto
/build:damageshader.fx
+#begin utg_4.mp4
+/importer:H264Importer
+/processor:VideoProcessor
+/build:utg_4.mp4
+
diff --git a/Subsurface/Content/utg_4.mp4 b/Subsurface/Content/utg_4.mp4
new file mode 100644
index 000000000..1f606677d
Binary files /dev/null and b/Subsurface/Content/utg_4.mp4 differ
diff --git a/Subsurface/Content/utg_4.xnb b/Subsurface/Content/utg_4.xnb
new file mode 100644
index 000000000..a9e458b1b
Binary files /dev/null and b/Subsurface/Content/utg_4.xnb differ
diff --git a/Subsurface/Source/Camera.cs b/Subsurface/Source/Camera.cs
index dc04f3e7f..77dea4601 100644
--- a/Subsurface/Source/Camera.cs
+++ b/Subsurface/Source/Camera.cs
@@ -7,6 +7,8 @@ namespace Barotrauma
{
public class Camera
{
+ public static bool FollowSub = true;
+
const float DefaultZoom = 1.0f;
const float ZoomSmoothness = 8.0f;
const float MoveSmoothness = 8.0f;
@@ -186,7 +188,7 @@ namespace Barotrauma
if (GameMain.Config.KeyBind(InputType.Up).IsDown()) moveCam.Y += moveSpeed;
}
- if (Screen.Selected == GameMain.GameScreen)
+ if (Screen.Selected == GameMain.GameScreen && FollowSub)
{
var closestSub = Submarine.FindClosest(WorldViewCenter);
if (closestSub != null)
diff --git a/Subsurface/Source/Characters/Character.cs b/Subsurface/Source/Characters/Character.cs
index 847cb072f..ab6ce84a7 100644
--- a/Subsurface/Source/Characters/Character.cs
+++ b/Subsurface/Source/Characters/Character.cs
@@ -1588,6 +1588,8 @@ namespace Barotrauma
Vector2 closestItemPos = closestItem != null ? closestItem.DrawPosition : Vector2.Zero;
closestItemPos.Y = -closestItemPos.Y;
GUI.DrawLine(spriteBatch, closestItemPos - new Vector2(0, 5), closestItemPos + new Vector2(0, 5), Color.Lime, 0, 10);
+
+ if (this == controlled || GUI.DisableHUD) return;
Vector2 pos = DrawPosition;
pos.Y = -pos.Y;
@@ -1601,7 +1603,6 @@ namespace Barotrauma
if (this == controlled) return;
-
if (info != null)
{
Vector2 namePos = new Vector2(pos.X, pos.Y - 110.0f - (5.0f / cam.Zoom)) - GUI.Font.MeasureString(Info.Name) * 0.5f / cam.Zoom;
diff --git a/Subsurface/Source/Characters/CharacterHUD.cs b/Subsurface/Source/Characters/CharacterHUD.cs
index 8f81e6214..39a3156a3 100644
--- a/Subsurface/Source/Characters/CharacterHUD.cs
+++ b/Subsurface/Source/Characters/CharacterHUD.cs
@@ -34,6 +34,8 @@ namespace Barotrauma
public static void AddToGUIUpdateList(Character character)
{
+ if (GUI.DisableHUD) return;
+
if (cprButton != null && cprButton.Visible) cprButton.AddToGUIUpdateList();
if (suicideButton != null && suicideButton.Visible) suicideButton.AddToGUIUpdateList();
@@ -118,6 +120,8 @@ namespace Barotrauma
damageOverlay = new Sprite("Content/UI/damageOverlay.png", Vector2.Zero);
}
+ if (GUI.DisableHUD) return;
+
if (character.Inventory != null)
{
for (int i = 0; i < character.Inventory.Items.Length - 1; i++)
diff --git a/Subsurface/Source/DebugConsole.cs b/Subsurface/Source/DebugConsole.cs
index 0cb827891..96b064fac 100644
--- a/Subsurface/Source/DebugConsole.cs
+++ b/Subsurface/Source/DebugConsole.cs
@@ -510,6 +510,12 @@ namespace Barotrauma
Submarine.MainSub.GodMode = !Submarine.MainSub.GodMode;
break;
+ case "lockx":
+ Submarine.LockX = !Submarine.LockX;
+ break;
+ case "locky":
+ Submarine.LockY = !Submarine.LockY;
+ break;
case "dumpids":
try
{
@@ -683,6 +689,14 @@ namespace Barotrauma
case "debugdraw":
GameMain.DebugDraw = !GameMain.DebugDraw;
break;
+ case "disablehud":
+ case "hud":
+ GUI.DisableHUD = !GUI.DisableHUD;
+ GameMain.Instance.IsMouseVisible = !GameMain.Instance.IsMouseVisible;
+ break;
+ case "followsub":
+ Camera.FollowSub = !Camera.FollowSub;
+ break;
case "drawaitargets":
case "showaitargets":
AITarget.ShowAITargets = !AITarget.ShowAITargets;
diff --git a/Subsurface/Source/GUI/GUI.cs b/Subsurface/Source/GUI/GUI.cs
index ed3373261..18723768d 100644
--- a/Subsurface/Source/GUI/GUI.cs
+++ b/Subsurface/Source/GUI/GUI.cs
@@ -64,6 +64,8 @@ namespace Barotrauma
get { return arrow; }
}
+ public static bool DisableHUD;
+
public static void Init(ContentManager content)
{
Font = ToolBox.TryLoadFont("SpriteFont1", content);
@@ -497,8 +499,9 @@ namespace Barotrauma
DebugConsole.Draw(spriteBatch);
if (GUIComponent.MouseOn != null && !string.IsNullOrWhiteSpace(GUIComponent.MouseOn.ToolTip)) GUIComponent.MouseOn.DrawToolTip(spriteBatch);
-
- cursor.Draw(spriteBatch, PlayerInput.LatestMousePosition);
+
+ if (!GUI.DisableHUD)
+ cursor.Draw(spriteBatch, PlayerInput.LatestMousePosition);
}
public static void AddToGUIUpdateList()
diff --git a/Subsurface/Source/GUI/LoadingScreen.cs b/Subsurface/Source/GUI/LoadingScreen.cs
index b30e1b720..f635b71f2 100644
--- a/Subsurface/Source/GUI/LoadingScreen.cs
+++ b/Subsurface/Source/GUI/LoadingScreen.cs
@@ -1,6 +1,7 @@
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
+using Microsoft.Xna.Framework.Media;
using System;
using System.Collections.Generic;
using System.Diagnostics;
@@ -23,6 +24,9 @@ namespace Barotrauma
private float? loadState;
+ Video splashScreenVideo;
+ VideoPlayer videoPlayer;
+
public Vector2 TitleSize
{
get { return new Vector2(titleTexture.Width, titleTexture.Height); }
@@ -49,10 +53,23 @@ namespace Barotrauma
get;
set;
}
-
public LoadingScreen(GraphicsDevice graphics)
{
+ if (GameMain.Config.EnableSplashScreen)
+ {
+ try
+ {
+ splashScreenVideo = GameMain.Instance.Content.Load