diff --git a/CrashReporter/Content/Content.mgcb b/CrashReporter/Content/Content.mgcb
new file mode 100644
index 000000000..ccb6d33b2
--- /dev/null
+++ b/CrashReporter/Content/Content.mgcb
@@ -0,0 +1,15 @@
+
+#----------------------------- Global Properties ----------------------------#
+
+/outputDir:bin/Windows
+/intermediateDir:obj/Windows
+/platform:Windows
+/config:
+/profile:Reach
+/compress:False
+
+#-------------------------------- References --------------------------------#
+
+
+#---------------------------------- Content ---------------------------------#
+
diff --git a/CrashReporter/CrashReporter.csproj b/CrashReporter/CrashReporter.csproj
new file mode 100644
index 000000000..525989800
--- /dev/null
+++ b/CrashReporter/CrashReporter.csproj
@@ -0,0 +1,73 @@
+
+
+
+ Debug
+ x86
+ 8.0.30703
+ 2.0
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}
+ WinExe
+ Properties
+ CrashReporter
+ CrashReporter
+ 512
+ Windows
+
+
+
+
+ x86
+ true
+ full
+ false
+ bin\Windows\Debug\
+ DEBUG;TRACE;WINDOWS
+ prompt
+ 4
+
+
+ x86
+ pdbonly
+ true
+ bin\Windows\Release\
+ TRACE;WINDOWS
+ prompt
+ 4
+
+
+ Icon.ico
+
+
+
+
+
+
+
+
+ $(MSBuildProgramFiles32)\MonoGame\v3.0\Assemblies\Windows\MonoGame.Framework.dll
+
+
+
+
+
+
+
+
+
+
+
+
+ {008c0f83-e914-4966-9135-ea885059edd8}
+ Subsurface
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CrashReporter/Icon.ico b/CrashReporter/Icon.ico
new file mode 100644
index 000000000..7d9dec187
Binary files /dev/null and b/CrashReporter/Icon.ico differ
diff --git a/CrashReporter/Program.cs b/CrashReporter/Program.cs
new file mode 100644
index 000000000..083028b83
--- /dev/null
+++ b/CrashReporter/Program.cs
@@ -0,0 +1,26 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+#endregion
+
+namespace CrashReporter
+{
+#if WINDOWS || LINUX
+ ///
+ /// The main class.
+ ///
+ public static class Program
+ {
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ using (var game = new ReporterMain())
+ game.Run();
+ }
+ }
+#endif
+}
diff --git a/CrashReporter/Properties/AssemblyInfo.cs b/CrashReporter/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..7385f58a5
--- /dev/null
+++ b/CrashReporter/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("CrashReporter")]
+[assembly: AssemblyProduct("CrashReporter")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyCopyright("Copyright © 2015")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("5087c690-b7c4-4087-979a-a064ada558b4")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.3.0.2069")]
+[assembly: AssemblyFileVersion("3.3.0.2069")]
diff --git a/CrashReporter/ReporterMain.cs b/CrashReporter/ReporterMain.cs
new file mode 100644
index 000000000..a28497c0f
--- /dev/null
+++ b/CrashReporter/ReporterMain.cs
@@ -0,0 +1,147 @@
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Input;
+using Subsurface;
+using System.IO;
+
+namespace CrashReporter
+{
+ ///
+ /// This is the main type for your game
+ ///
+ public class ReporterMain : Game
+ {
+ GraphicsDeviceManager graphics;
+ SpriteBatch spriteBatch;
+
+ int graphicsWidth, graphicsHeight;
+
+ Texture2D backgroundTexture, titleTexture;
+
+ GUIFrame guiRoot;
+
+ string crashReport;
+
+ public ReporterMain()
+ : base()
+ {
+ graphics = new GraphicsDeviceManager(this);
+ Content.RootDirectory = "Content";
+
+ graphics = new GraphicsDeviceManager(this);
+ graphics.PreferredBackBufferWidth = 640;
+ graphics.PreferredBackBufferHeight = 360;
+ }
+
+ ///
+ /// Allows the game to perform any initialization it needs to before starting to run.
+ /// This is where it can query for any required services and load any non-graphic
+ /// related content. Calling base.Initialize will enumerate through any components
+ /// and initialize them as well.
+ ///
+ protected override void Initialize()
+ {
+ // TODO: Add your initialization logic here
+
+ base.Initialize();
+ }
+
+ ///
+ /// LoadContent will be called once per game and is the place to load
+ /// all of your content.
+ ///
+ protected override void LoadContent()
+ {
+ // Create a new SpriteBatch, which can be used to draw textures.
+ spriteBatch = new SpriteBatch(GraphicsDevice);
+
+ graphicsWidth = GraphicsDevice.Viewport.Width;
+ graphicsHeight = GraphicsDevice.Viewport.Height;
+
+ TextureLoader.Init(GraphicsDevice);
+
+ GUI.Init(Content);
+
+ // Create a new SpriteBatch, which can be used to draw textures.
+ spriteBatch = new SpriteBatch(GraphicsDevice);
+
+ GUI.LoadContent(GraphicsDevice);
+
+ backgroundTexture = TextureLoader.FromFile("Content/UI/titleBackground.png");
+ titleTexture = TextureLoader.FromFile("Content/UI/titleText.png");
+
+ guiRoot = new GUIFrame(new Rectangle(0, 0, graphicsWidth, graphicsHeight), Color.Transparent);
+ guiRoot.Padding = new Vector4(40.0f, 40.0f, 40.0f, 40.0f);
+
+ GUIListBox infoBox = new GUIListBox(new Rectangle(0, 0, 330, 150), GUI.Style, guiRoot);
+ infoBox.Visible = false;
+
+ crashReport = System.IO.File.ReadAllText("CrashReport.txt");
+
+ string wrappedText = ToolBox.WrapText(crashReport, infoBox.Rect.Width, GUI.SmallFont);
+
+ int lineHeight = (int)GUI.SmallFont.MeasureString(" ").Y;
+
+ string[] lines = wrappedText.Split('\n');
+ foreach (string line in lines)
+ {
+ if (string.IsNullOrWhiteSpace(line)) continue;
+
+ GUITextBlock textBlock = new GUITextBlock(
+ new Rectangle(0, 0, 0, lineHeight),
+ line, GUI.Style,
+ Alignment.TopLeft, Alignment.TopLeft,
+ infoBox, false, GUI.SmallFont);
+ textBlock.CanBeFocused = false;
+ }
+
+ GUIButton sendButton = new GUIButton(new Rectangle(0, 0, 100, 30), "SEND", Alignment.BottomRight, GUI.Style, guiRoot);
+ //se.OnClicked = LaunchClick;
+ }
+
+ ///
+ /// UnloadContent will be called once per game and is the place to unload
+ /// all content.
+ ///
+ protected override void UnloadContent()
+ {
+ // TODO: Unload any non ContentManager content here
+ }
+
+ ///
+ /// Allows the game to run logic such as updating the world,
+ /// checking for collisions, gathering input, and playing audio.
+ ///
+ /// Provides a snapshot of timing values.
+ protected override void Update(GameTime gameTime)
+ {
+ if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
+ Exit();
+
+ // TODO: Add your update logic here
+
+ base.Update(gameTime);
+
+ guiRoot.Update((float)gameTime.ElapsedGameTime.TotalMilliseconds);
+ }
+
+ ///
+ /// This is called when the game should draw itself.
+ ///
+ /// Provides a snapshot of timing values.
+ protected override void Draw(GameTime gameTime)
+ {
+ GraphicsDevice.Clear(Color.CornflowerBlue);
+
+ spriteBatch.Begin();
+
+ guiRoot.Draw(spriteBatch);
+
+ spriteBatch.End();
+ }
+
+ private void SendReport()
+ {
+ }
+ }
+}
diff --git a/CrashReporter/StyleCop.Cache b/CrashReporter/StyleCop.Cache
new file mode 100644
index 000000000..a7ba852c6
--- /dev/null
+++ b/CrashReporter/StyleCop.Cache
@@ -0,0 +1,416 @@
+
+ 12
+
+ DEBUG;TRACE;WINDOWS
+
+
+
+ 2014.04.01 10:18:24.000
+ 2012.09.27 21:03:32.000
+ 2015.09.17 23:21:18.138
+ 2014.04.01 10:18:24.000
+ 2014.04.01 10:18:24.000
+ -1945363787
+ 2014.04.01 10:18:24.000
+ 0
+ 2014.04.01 10:18:24.000
+ 0
+ 2014.04.01 10:18:24.000
+ 0
+ 2014.04.01 10:18:24.000
+ 0
+ 2014.04.01 10:18:24.000
+ 0
+ 2014.04.01 10:18:24.000
+ 0
+
+
+
+ The file has no header, the header Xml is invalid, or the header is not located at the top of the file.
+ 1
+ False
+
+
+ All using directives must be placed inside of the namespace.
+ 1
+ False
+
+
+ All using directives must be placed inside of the namespace.
+ 2
+ False
+
+
+ All using directives must be placed inside of the namespace.
+ 3
+ False
+
+
+ All using directives must be placed inside of the namespace.
+ 4
+ False
+
+
+ All using directives must be placed inside of the namespace.
+ 5
+ False
+
+
+ System using directives must be placed before all other using directives.
+ 5
+ False
+
+
+ The code must not contain multiple blank lines in a row.
+ 23
+ False
+
+
+ The code must not contain multiple blank lines in a row.
+ 24
+ False
+
+
+ The field must have a documentation header.
+ 14
+ False
+
+
+ The field must have an access modifier.
+ 14
+ False
+
+
+ The field must have a documentation header.
+ 15
+ False
+
+
+ The field must have an access modifier.
+ 15
+ False
+
+
+ The field must have a documentation header.
+ 17
+ False
+
+
+ The field must have an access modifier.
+ 17
+ False
+
+
+ The field must have a documentation header.
+ 19
+ False
+
+
+ The field must have an access modifier.
+ 19
+ False
+
+
+ The field must have a documentation header.
+ 21
+ False
+
+
+ The field must have an access modifier.
+ 21
+ False
+
+
+ The constructor must have a documentation header.
+ 25
+ False
+
+
+ The call to graphics must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call.
+ 28
+ 601
+ 608
+ 28
+ 13
+ 28
+ 20
+ False
+
+
+ The call to graphics must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call.
+ 31
+ 708
+ 715
+ 31
+ 13
+ 31
+ 20
+ False
+
+
+ The call to graphics must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call.
+ 32
+ 765
+ 772
+ 32
+ 13
+ 32
+ 20
+ False
+
+
+ The call to graphics must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call.
+ 33
+ 819
+ 826
+ 33
+ 13
+ 33
+ 20
+ False
+
+
+ A single-line comment must not be followed by a blank line. To ignore this error when commenting out a line of code, begin the comment with '////' rather than '//'.
+ 44
+ False
+
+
+ The body of the if statement must be wrapped in opening and closing curly brackets.
+ 88
+ False
+
+
+ A single-line comment must be preceded by a blank line or another single-line comment, or must be the first item in its scope. To ignore this error when commenting out a line of code, begin the comment with '////' rather than '//'.
+ 99
+ False
+
+
+ All method parameters must be placed on the same line, or each parameter must be placed on a separate line.
+ 90
+ False
+
+
+ The parameter must begin on the line after the previous parameter.
+ 92
+ False
+
+
+ The parameter must begin on the line after the previous parameter.
+ 93
+ False
+
+
+ The parameter must begin on the line after the previous parameter.
+ 94
+ False
+
+
+ The call to spriteBatch must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call.
+ 56
+ 1712
+ 1722
+ 56
+ 13
+ 56
+ 23
+ False
+
+
+ The call to graphicsWidth must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call.
+ 58
+ 1774
+ 1786
+ 58
+ 13
+ 58
+ 25
+ False
+
+
+ The call to graphicsHeight must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call.
+ 59
+ 1834
+ 1847
+ 59
+ 13
+ 59
+ 26
+ False
+
+
+ The call to GraphicsDevice must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call.
+ 61
+ 1917
+ 1930
+ 61
+ 32
+ 61
+ 45
+ False
+
+
+ The call to Content must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call.
+ 63
+ 1958
+ 1964
+ 63
+ 22
+ 63
+ 28
+ False
+
+
+ The call to spriteBatch must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call.
+ 66
+ 2061
+ 2071
+ 66
+ 13
+ 66
+ 23
+ False
+
+
+ The call to GraphicsDevice must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call.
+ 68
+ 2139
+ 2152
+ 68
+ 29
+ 68
+ 42
+ False
+
+
+ The call to backgroundTexture must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call.
+ 70
+ 2171
+ 2187
+ 70
+ 13
+ 70
+ 29
+ False
+
+
+ The call to titleTexture must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call.
+ 71
+ 2262
+ 2273
+ 71
+ 13
+ 71
+ 24
+ False
+
+
+ The call to guiRoot must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call.
+ 73
+ 2344
+ 2350
+ 73
+ 13
+ 73
+ 19
+ False
+
+
+ The call to graphicsWidth must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call.
+ 73
+ 2387
+ 2399
+ 73
+ 56
+ 73
+ 68
+ False
+
+
+ The call to graphicsHeight must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call.
+ 73
+ 2402
+ 2415
+ 73
+ 71
+ 73
+ 84
+ False
+
+
+ The call to guiRoot must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call.
+ 74
+ 2452
+ 2458
+ 74
+ 13
+ 74
+ 19
+ False
+
+
+ The call to guiRoot must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call.
+ 76
+ 2616
+ 2622
+ 76
+ 91
+ 76
+ 97
+ False
+
+
+ The call to guiRoot must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call.
+ 98
+ 3542
+ 3548
+ 98
+ 122
+ 98
+ 128
+ False
+
+
+ Use string.Empty rather than "".
+ 79
+ False
+
+
+ The comment must start with a single space. To ignore this error when commenting out a line of code, begin the comment with '////' rather than '//'.
+ 99
+ 3565
+ 3593
+ 99
+ 13
+ 99
+ 41
+ False
+
+
+ The body of the if statement must be wrapped in opening and closing curly brackets.
+ 119
+ False
+
+
+ A single-line comment must not be followed by a blank line. To ignore this error when commenting out a line of code, begin the comment with '////' rather than '//'.
+ 121
+ False
+
+
+ The call to Exit must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call.
+ 119
+ 4396
+ 4399
+ 119
+ 17
+ 119
+ 20
+ False
+
+
+ A single-line comment must not be followed by a blank line. To ignore this error when commenting out a line of code, begin the comment with '////' rather than '//'.
+ 134
+ False
+
+
+
+
\ No newline at end of file
diff --git a/Launcher2/LauncherMain.cs b/Launcher2/LauncherMain.cs
index 75f9d8948..f9e99b77b 100644
--- a/Launcher2/LauncherMain.cs
+++ b/Launcher2/LauncherMain.cs
@@ -433,7 +433,7 @@ namespace Launcher2
return;
}
- UpdaterUtil.CleanUnnecessaryFiles(latestVersionFiles);
+ //UpdaterUtil.CleanUnnecessaryFiles(latestVersionFiles);
updateInfoText.Text = "The game was updated succesfully!";
launchButton.Enabled = true;
diff --git a/Subsurface/Content/watershader.mgfx b/Subsurface/Content/watershader.mgfx
index 492637759..70018bd8a 100644
Binary files a/Subsurface/Content/watershader.mgfx and b/Subsurface/Content/watershader.mgfx differ
diff --git a/Subsurface/Source/Camera.cs b/Subsurface/Source/Camera.cs
index b06f26bdd..6d4df0fc3 100644
--- a/Subsurface/Source/Camera.cs
+++ b/Subsurface/Source/Camera.cs
@@ -105,13 +105,13 @@ namespace Subsurface
position = Vector2.Zero;
worldView = new Rectangle(0,0,
- Game1.GraphicsWidth,
- Game1.GraphicsHeight);
+ GameMain.GraphicsWidth,
+ GameMain.GraphicsHeight);
- resolution = new Point(Game1.GraphicsWidth, Game1.GraphicsHeight);
+ resolution = new Point(GameMain.GraphicsWidth, GameMain.GraphicsHeight);
viewMatrix =
- Matrix.CreateTranslation(new Vector3(Game1.GraphicsWidth / 2.0f, Game1.GraphicsHeight / 2.0f, 0));
+ Matrix.CreateTranslation(new Vector3(GameMain.GraphicsWidth / 2.0f, GameMain.GraphicsHeight / 2.0f, 0));
}
public Vector2 TargetPos
diff --git a/Subsurface/Source/Characters/AI/AIController.cs b/Subsurface/Source/Characters/AI/AIController.cs
index e0ebca03f..07e36afe7 100644
--- a/Subsurface/Source/Characters/AI/AIController.cs
+++ b/Subsurface/Source/Characters/AI/AIController.cs
@@ -23,12 +23,12 @@ namespace Subsurface
public Vector2 Position
{
- get { return Character.AnimController.limbs[0].SimPosition; }
+ get { return Character.AnimController.Limbs[0].SimPosition; }
}
public Vector2 Velocity
{
- get { return Character.AnimController.limbs[0].LinearVelocity; }
+ get { return Character.AnimController.Limbs[0].LinearVelocity; }
}
public AiState State
diff --git a/Subsurface/Source/Characters/AI/EnemyAIController.cs b/Subsurface/Source/Characters/AI/EnemyAIController.cs
index e8300c4c7..9655c8206 100644
--- a/Subsurface/Source/Characters/AI/EnemyAIController.cs
+++ b/Subsurface/Source/Characters/AI/EnemyAIController.cs
@@ -145,7 +145,7 @@ namespace Subsurface
private void UpdateDistanceAccumulator()
{
- Limb limb = Character.AnimController.limbs[0];
+ Limb limb = Character.AnimController.Limbs[0];
distanceAccumulator += (limb.SimPosition - prevPosition).Length();
prevPosition = limb.body.SimPosition;
@@ -187,7 +187,7 @@ namespace Subsurface
//check if any of the limbs is close enough to attack the target
if (attackingLimb == null)
{
- foreach (Limb limb in Character.AnimController.limbs)
+ foreach (Limb limb in Character.AnimController.Limbs)
{
if (limb.attack==null || limb.attack.Type == AttackType.None) continue;
if (Vector2.Distance(limb.SimPosition, attackPosition) > limb.attack.Range) continue;
@@ -210,7 +210,7 @@ namespace Subsurface
//System.Diagnostics.Debug.WriteLine("cooldown");
if (selectedAiTarget.Entity is Hull ||
- Vector2.Distance(attackPosition, Character.AnimController.limbs[0].SimPosition) < ConvertUnits.ToSimUnits(500.0f))
+ Vector2.Distance(attackPosition, Character.AnimController.Limbs[0].SimPosition) < ConvertUnits.ToSimUnits(500.0f))
{
steeringManager.SteeringSeek(attackPosition, -0.8f);
steeringManager.SteeringAvoid(deltaTime, 1.0f);
@@ -226,7 +226,7 @@ namespace Subsurface
{
targetEntity = null;
//check if there's a wall between the target and the character
- Vector2 rayStart = Character.AnimController.limbs[0].SimPosition;
+ Vector2 rayStart = Character.AnimController.Limbs[0].SimPosition;
Vector2 rayEnd = selectedAiTarget.Position;
Body closestBody = Submarine.CheckVisibility(rayStart, rayEnd);
@@ -372,7 +372,7 @@ namespace Subsurface
}
dist = Vector2.Distance(
- character.AnimController.limbs[0].SimPosition,
+ character.AnimController.Limbs[0].SimPosition,
target.Position);
dist = ConvertUnits.ToDisplayUnits(dist);
@@ -383,7 +383,7 @@ namespace Subsurface
if (Math.Abs(valueModifier) > Math.Abs(targetValue) && (dist < target.SightRange * sight || dist < target.SoundRange * hearing))
{
- Vector2 rayStart = character.AnimController.limbs[0].SimPosition;
+ Vector2 rayStart = character.AnimController.Limbs[0].SimPosition;
Vector2 rayEnd = target.Position;
Body closestBody = Submarine.CheckVisibility(rayStart, rayEnd);
diff --git a/Subsurface/Source/Characters/AICharacter.cs b/Subsurface/Source/Characters/AICharacter.cs
new file mode 100644
index 000000000..db2a9ff56
--- /dev/null
+++ b/Subsurface/Source/Characters/AICharacter.cs
@@ -0,0 +1,216 @@
+using Lidgren.Network;
+using Microsoft.Xna.Framework;
+using Subsurface.Networking;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Subsurface
+{
+ class AICharacter : Character
+ {
+ private AIController aiController;
+
+ public AICharacter(string file) : this(file, Vector2.Zero, null)
+ {
+ }
+
+ public AICharacter(string file, Vector2 position)
+ : this(file, position, null)
+ {
+ }
+
+ public AICharacter(CharacterInfo characterInfo, WayPoint spawnPoint, bool isNetworkPlayer = false)
+ : this(characterInfo.File, spawnPoint.SimPosition, characterInfo, isNetworkPlayer)
+ {
+
+ }
+
+ public AICharacter(CharacterInfo characterInfo, Vector2 position, bool isNetworkPlayer = false)
+ : this(characterInfo.File, position, characterInfo, isNetworkPlayer)
+ {
+ }
+
+ public AICharacter(string file, Vector2 position, CharacterInfo characterInfo = null, bool isNetworkPlayer = false)
+ : base(file, position, characterInfo, isNetworkPlayer)
+ {
+ aiController = new EnemyAIController(this, file);
+ }
+
+ public override void Update(Camera cam, float deltaTime)
+ {
+ base.Update(cam, deltaTime);
+
+ if (isDead) return;
+
+ if (soundTimer > 0)
+ {
+ soundTimer -= deltaTime;
+ }
+ else
+ {
+ PlaySound((aiController == null) ? AIController.AiState.None : aiController.State);
+ soundTimer = soundInterval;
+ }
+
+ aiController.Update(deltaTime);
+ }
+
+ public override void FillNetworkData(NetworkEventType type, NetOutgoingMessage message, object data)
+ {
+ if (type == NetworkEventType.KillCharacter)
+ {
+ return;
+ }
+
+ message.Write((float)NetTime.Now);
+
+ message.Write(LargeUpdateTimer <= 0);
+
+ message.Write(AnimController.TargetDir == Direction.Right);
+ message.Write(AnimController.TargetMovement.X);
+ message.Write(AnimController.TargetMovement.Y);
+
+ if (LargeUpdateTimer <= 0)
+ {
+ int i = 0;
+ foreach (Limb limb in AnimController.Limbs)
+ {
+ message.Write(limb.body.SimPosition.X);
+ message.Write(limb.body.SimPosition.Y);
+
+ message.Write(limb.body.Rotation);
+ i++;
+ }
+
+ message.WriteRangedSingle(MathHelper.Clamp(AnimController.StunTimer, 0.0f, 60.0f), 0.0f, 60.0f, 8);
+ message.Write((byte)((health / maxHealth) * 255.0f));
+
+ aiController.FillNetworkData(message);
+
+ LargeUpdateTimer = 10;
+ }
+ else
+ {
+ message.Write(AnimController.RefLimb.SimPosition.X);
+ message.Write(AnimController.RefLimb.SimPosition.Y);
+
+ LargeUpdateTimer = Math.Max(0, LargeUpdateTimer - 1);
+ }
+ }
+
+ public override void ReadNetworkData(NetworkEventType type, NetIncomingMessage message)
+ {
+ if (type == NetworkEventType.KillCharacter)
+ {
+ Kill(true);
+ return;
+ }
+
+ float sendingTime = 0.0f;
+ Vector2 targetMovement = Vector2.Zero;
+ bool targetDir = false;
+
+ bool isLargeUpdate;
+
+
+ try
+ {
+ sendingTime = message.ReadFloat();
+ isLargeUpdate = message.ReadBoolean();
+ }
+
+ catch
+ {
+ return;
+ }
+
+ if (sendingTime <= LastNetworkUpdate) return;
+
+ try
+ {
+ targetDir = message.ReadBoolean();
+ targetMovement.X = message.ReadFloat();
+ targetMovement.Y = message.ReadFloat();
+
+ }
+ catch
+ {
+ return;
+ }
+
+ AnimController.TargetDir = (targetDir) ? Direction.Right : Direction.Left;
+ AnimController.TargetMovement = targetMovement;
+
+
+ if (isLargeUpdate)
+ {
+ foreach (Limb limb in AnimController.Limbs)
+ {
+ Vector2 pos = Vector2.Zero, vel = Vector2.Zero;
+ float rotation = 0.0f;
+
+ try
+ {
+ pos.X = message.ReadFloat();
+ pos.Y = message.ReadFloat();
+
+ rotation = message.ReadFloat();
+ }
+ catch
+ {
+ return;
+ }
+
+ if (limb.body != null)
+ {
+ limb.body.TargetVelocity = limb.body.LinearVelocity;
+ limb.body.TargetPosition = pos;// +vel * (float)(deltaTime / 60.0);
+ limb.body.TargetRotation = rotation;// +angularVel * (float)(deltaTime / 60.0);
+ limb.body.TargetAngularVelocity = limb.body.AngularVelocity;
+ }
+ }
+
+ float newStunTimer = 0.0f, newHealth = 0.0f;
+
+ try
+ {
+ newStunTimer = message.ReadRangedSingle(0.0f, 60.0f, 8);
+ newHealth = (message.ReadByte() / 255.0f) * maxHealth;
+ }
+ catch { return; }
+
+ AnimController.StunTimer = newStunTimer;
+ Health = newHealth;
+
+ LargeUpdateTimer = 1;
+
+ aiController.ReadNetworkData(message);
+ }
+ else
+ {
+ Vector2 pos = Vector2.Zero;
+ try
+ {
+ pos.X = message.ReadFloat();
+ pos.Y = message.ReadFloat();
+ }
+
+ catch { return; }
+
+
+ Limb torso = AnimController.GetLimb(LimbType.Torso);
+ if (torso == null) torso = AnimController.GetLimb(LimbType.Head);
+ torso.body.TargetPosition = pos;
+
+ LargeUpdateTimer = 0;
+ }
+
+ LastNetworkUpdate = sendingTime;
+
+ }
+
+
+ }
+}
diff --git a/Subsurface/Source/Characters/BackgroundSprite/BackgroundSprite.cs b/Subsurface/Source/Characters/BackgroundSprite/BackgroundSprite.cs
index 28d5e9238..57eb967ad 100644
--- a/Subsurface/Source/Characters/BackgroundSprite/BackgroundSprite.cs
+++ b/Subsurface/Source/Characters/BackgroundSprite/BackgroundSprite.cs
@@ -147,7 +147,7 @@ namespace Subsurface
if (depth > 0.0f)
{
- Vector2 camOffset = drawPos - Game1.GameScreen.Cam.WorldViewCenter;
+ Vector2 camOffset = drawPos - GameMain.GameScreen.Cam.WorldViewCenter;
drawPos = drawPos - camOffset * (depth / MaxDepth) * 0.05f;
}
diff --git a/Subsurface/Source/Characters/Character.cs b/Subsurface/Source/Characters/Character.cs
index 759a8ffa7..bb2709f47 100644
--- a/Subsurface/Source/Characters/Character.cs
+++ b/Subsurface/Source/Characters/Character.cs
@@ -56,7 +56,6 @@ namespace Subsurface
private Item[] selectedItems;
public AnimController AnimController;
- private AIController aiController;
private Vector2 cursorPosition;
@@ -246,9 +245,9 @@ namespace Subsurface
get { return closestItem; }
}
- public AIController AIController
+ public virtual AIController AIController
{
- get { return aiController; }
+ get { return null; }
}
public bool IsDead
@@ -258,12 +257,12 @@ namespace Subsurface
public override Vector2 SimPosition
{
- get { return AnimController.limbs[0].SimPosition; }
+ get { return AnimController.Limbs[0].SimPosition; }
}
public Vector2 Position
{
- get { return ConvertUnits.ToDisplayUnits(AnimController.limbs[0].SimPosition); }
+ get { return ConvertUnits.ToDisplayUnits(AnimController.Limbs[0].SimPosition); }
}
public Character(string file) : this(file, Vector2.Zero, null)
@@ -332,11 +331,9 @@ namespace Subsurface
AnimController = new FishAnimController(this, doc.Root.Element("ragdoll"));
PressureProtection = 100.0f;
//FishAnimController fishAnim = (FishAnimController)animController;
-
- aiController = new EnemyAIController(this, file);
}
- foreach (Limb limb in AnimController.limbs)
+ foreach (Limb limb in AnimController.Limbs)
{
limb.body.SetTransform(position+limb.SimPosition, 0.0f);
//limb.prevPosition = ConvertUnits.ToDisplayUnits(position);
@@ -397,7 +394,7 @@ namespace Subsurface
{
if (string.IsNullOrEmpty(humanConfigFile))
{
- var characterFiles = Game1.SelectedPackage.GetFilesOfType(ContentType.Character);
+ var characterFiles = GameMain.SelectedPackage.GetFilesOfType(ContentType.Character);
humanConfigFile = characterFiles.Find(c => c.EndsWith("human.xml"));
if (humanConfigFile == null)
@@ -632,15 +629,15 @@ namespace Subsurface
if (moveCam)
{
- cam.TargetPos = ConvertUnits.ToDisplayUnits(AnimController.limbs[0].SimPosition);
+ cam.TargetPos = ConvertUnits.ToDisplayUnits(AnimController.Limbs[0].SimPosition);
cam.OffsetAmount = MathHelper.Lerp(cam.OffsetAmount, 250.0f, 0.05f);
}
cursorPosition = cam.ScreenToWorld(PlayerInput.MousePosition);
Vector2 mouseSimPos = ConvertUnits.ToSimUnits(cursorPosition);
- if (Vector2.Distance(AnimController.limbs[0].SimPosition, mouseSimPos)>1.0f)
+ if (Vector2.Distance(AnimController.Limbs[0].SimPosition, mouseSimPos)>1.0f)
{
- Body body = Submarine.PickBody(AnimController.limbs[0].SimPosition, mouseSimPos);
+ Body body = Submarine.PickBody(AnimController.Limbs[0].SimPosition, mouseSimPos);
Structure structure = null;
if (body != null) structure = body.UserData as Structure;
if (structure != null)
@@ -678,7 +675,7 @@ namespace Subsurface
}
}
- public void Update(Camera cam, float deltaTime)
+ public virtual void Update(Camera cam, float deltaTime)
{
if (isDead) return;
@@ -714,22 +711,13 @@ namespace Subsurface
PressureProtection -= deltaTime*100.0f;
}
- if (soundTimer > 0)
- {
- soundTimer -= deltaTime;
- }
- else
- {
- PlaySound((aiController == null) ? AIController.AiState.None : aiController.State);
- soundTimer = soundInterval;
- }
+
//foreach (Limb limb in animController.limbs)
//{
Health = health - bleeding * deltaTime;
//}
- if (aiController != null) aiController.Update(deltaTime);
}
private void UpdateSightRange()
@@ -738,7 +726,7 @@ namespace Subsurface
//distance is approximated based on the mass of the character
//(which corresponds to size because all the characters have the same limb density)
- foreach (Limb limb in AnimController.limbs)
+ foreach (Limb limb in AnimController.Limbs)
{
aiTarget.SightRange += limb.Mass * 1000.0f;
}
@@ -761,7 +749,7 @@ namespace Subsurface
public void DrawFront(SpriteBatch spriteBatch)
{
- Vector2 pos = ConvertUnits.ToDisplayUnits(AnimController.limbs[0].SimPosition);
+ Vector2 pos = ConvertUnits.ToDisplayUnits(AnimController.Limbs[0].SimPosition);
pos.Y = -pos.Y;
if (this == Character.controlled) return;
@@ -772,7 +760,7 @@ namespace Subsurface
spriteBatch.DrawString(GUI.Font, Info.Name, namePos - new Vector2(1.0f, 1.0f), Color.Black);
spriteBatch.DrawString(GUI.Font, Info.Name, namePos, Color.White);
- if (Game1.DebugDraw)
+ if (GameMain.DebugDraw)
{
spriteBatch.DrawString(GUI.Font, ID.ToString(), namePos - new Vector2(0.0f, 20.0f), Color.White);
}
@@ -790,9 +778,9 @@ namespace Subsurface
if (drowningBar == null)
{
int width = 100, height = 20;
- drowningBar = new GUIProgressBar(new Rectangle(20, Game1.GraphicsHeight / 2, width, height), Color.Blue, 1.0f);
+ drowningBar = new GUIProgressBar(new Rectangle(20, GameMain.GraphicsHeight / 2, width, height), Color.Blue, 1.0f);
- healthBar = new GUIProgressBar(new Rectangle(20, Game1.GraphicsHeight / 2 + 30, width, height), Color.Red, 1.0f);
+ healthBar = new GUIProgressBar(new Rectangle(20, GameMain.GraphicsHeight / 2 + 30, width, height), Color.Red, 1.0f);
}
drowningBar.BarSize = Controlled.Oxygen / 100.0f;
@@ -860,7 +848,7 @@ namespace Subsurface
if (n == selectedSound && sounds[i]!=null)
{
sounds[i].Play(1.0f, 2000.0f,
- AnimController.limbs[0].body.FarseerBody);
+ AnimController.Limbs[0].body.FarseerBody);
Debug.WriteLine("playing: " + sounds[i]);
return;
}
@@ -874,7 +862,7 @@ namespace Subsurface
Limb closestLimb = null;
float closestDistance = 0.0f;
- foreach (Limb limb in AnimController.limbs)
+ foreach (Limb limb in AnimController.Limbs)
{
float distance = Vector2.Distance(position, limb.SimPosition);
if (closestLimb == null || distance < closestDistance)
@@ -915,7 +903,7 @@ namespace Subsurface
health = 0.0f;
- foreach (Limb limb in AnimController.limbs)
+ foreach (Limb limb in AnimController.Limbs)
{
Vector2 diff = centerOfMass - limb.SimPosition;
if (diff == Vector2.Zero) continue;
@@ -927,12 +915,12 @@ namespace Subsurface
for (int i = 0; i < 10; i++)
{
- Particle p = Game1.ParticleManager.CreateParticle("waterblood",
+ Particle p = GameMain.ParticleManager.CreateParticle("waterblood",
centerOfMass + Rand.Vector(50.0f),
Vector2.Zero);
if (p!=null) p.Size *= 2.0f;
- Game1.ParticleManager.CreateParticle("bubbles",
+ GameMain.ParticleManager.CreateParticle("bubbles",
centerOfMass + Rand.Vector(50.0f),
new Vector2(Rand.Range(-50f, 50f), Rand.Range(-100f,50f)));
}
@@ -949,20 +937,22 @@ namespace Subsurface
float dimDuration = 8.0f;
float timer = 0.0f;
- Color prevAmbientLight = Game1.LightManager.AmbientLight;
+ Color prevAmbientLight = GameMain.LightManager.AmbientLight;
while (timer < dimDuration)
{
- AnimController.UpdateAnim(1.0f / 60.0f);
timer += 1.0f / 60.0f;
- if (cam != null)
+ if (Character.controlled == this)
{
- cam.TargetPos = ConvertUnits.ToDisplayUnits(AnimController.limbs[0].SimPosition);
- cam.OffsetAmount = 0.0f;
- }
+ if (cam != null)
+ {
+ cam.TargetPos = ConvertUnits.ToDisplayUnits(AnimController.Limbs[0].SimPosition);
+ cam.OffsetAmount = 0.0f;
+ }
- Game1.LightManager.AmbientLight = Color.Lerp(prevAmbientLight, Color.DarkGray, timer / dimDuration);
+ GameMain.LightManager.AmbientLight = Color.Lerp(prevAmbientLight, Color.DarkGray, timer / dimDuration);
+ }
yield return CoroutineStatus.Running;
}
@@ -977,7 +967,7 @@ namespace Subsurface
{
lerpLightBack = Math.Min(lerpLightBack+0.05f,1.0f);
- Game1.LightManager.AmbientLight = Color.Lerp(Color.DarkGray, prevAmbientLight, lerpLightBack);
+ GameMain.LightManager.AmbientLight = Color.Lerp(Color.DarkGray, prevAmbientLight, lerpLightBack);
yield return CoroutineStatus.Running;
}
@@ -989,7 +979,7 @@ namespace Subsurface
if (isDead) return;
//if the game is run by a client, characters are only killed when the server says so
- if (Game1.Client != null)
+ if (GameMain.Client != null)
{
if (networkMessage)
{
@@ -1001,7 +991,7 @@ namespace Subsurface
}
}
- CoroutineManager.StartCoroutine(DeathAnim(Game1.GameScreen.Cam));
+ CoroutineManager.StartCoroutine(DeathAnim(GameMain.GameScreen.Cam));
health = 0.0f;
@@ -1017,7 +1007,7 @@ namespace Subsurface
aiTarget.Remove();
aiTarget = null;
- foreach (Limb limb in AnimController.limbs)
+ foreach (Limb limb in AnimController.Limbs)
{
if (limb.pullJoint == null) continue;
limb.pullJoint.Enabled = false;
@@ -1029,14 +1019,14 @@ namespace Subsurface
joint.MaxMotorTorque = 0.0f;
}
- if (Game1.Server != null)
+ if (GameMain.Server != null)
{
new NetworkEvent(NetworkEventType.KillCharacter, ID, false);
}
- if (Game1.GameSession != null)
+ if (GameMain.GameSession != null)
{
- Game1.GameSession.KillCharacter(this);
+ GameMain.GameSession.KillCharacter(this);
}
}
@@ -1053,16 +1043,21 @@ namespace Subsurface
return;
}
- var hasInputs = (GetInputState(InputType.Left) ||
- GetInputState(InputType.Right) ||
- GetInputState(InputType.Up) ||
- GetInputState(InputType.Down) ||
- GetInputState(InputType.ActionHeld) ||
- GetInputState(InputType.SecondaryHeld));
+ var hasInputs =
+ (GetInputState(InputType.Left) ||
+ GetInputState(InputType.Right) ||
+ GetInputState(InputType.Up) ||
+ GetInputState(InputType.Down) ||
+ GetInputState(InputType.ActionHeld) ||
+ GetInputState(InputType.SecondaryHeld));
message.Write(hasInputs || LargeUpdateTimer <= 0);
message.Write((float)NetTime.Now);
+
+ // Write byte = move direction
+ //message.WriteRangedSingle(MathHelper.Clamp(AnimController.TargetMovement.X, -10.0f, 10.0f), -10.0f, 10.0f, 8);
+ //message.WriteRangedSingle(MathHelper.Clamp(AnimController.TargetMovement.Y, -10.0f, 10.0f), -10.0f, 10.0f, 8);
message.Write(keys[(int)InputType.ActionHeld].Dequeue);
message.Write(keys[(int)InputType.SecondaryHeld].Dequeue);
@@ -1074,27 +1069,16 @@ namespace Subsurface
message.Write(keys[(int)InputType.Down].Dequeue);
message.Write(keys[(int)InputType.Run].Dequeue);
-
- // Write byte = move direction
- //message.WriteRangedSingle(MathHelper.Clamp(AnimController.TargetMovement.X, -10.0f, 10.0f), -10.0f, 10.0f, 8);
- //message.WriteRangedSingle(MathHelper.Clamp(AnimController.TargetMovement.Y, -10.0f, 10.0f), -10.0f, 10.0f, 8);
- if (aiController==null)
- {
- message.Write(cursorPosition.X);
- message.Write(cursorPosition.Y);
- }
- else
- {
- message.Write(AnimController.TargetDir == Direction.Right);
- }
+ message.Write(cursorPosition.X);
+ message.Write(cursorPosition.Y);
message.Write(LargeUpdateTimer <= 0);
if (LargeUpdateTimer<=0)
{
int i = 0;
- foreach (Limb limb in AnimController.limbs)
+ foreach (Limb limb in AnimController.Limbs)
{
message.Write(limb.body.SimPosition.X);
message.Write(limb.body.SimPosition.Y);
@@ -1110,8 +1094,6 @@ namespace Subsurface
message.WriteRangedSingle(MathHelper.Clamp(AnimController.StunTimer,0.0f,60.0f), 0.0f, 60.0f, 8);
message.Write((byte)((health/maxHealth)*255.0f));
- if (aiController != null) aiController.FillNetworkData(message);
-
LargeUpdateTimer = 10;
}
else
@@ -1150,10 +1132,10 @@ namespace Subsurface
else if (type == NetworkEventType.KillCharacter)
{
Kill(true);
- if (Game1.NetworkMember != null && controlled == this)
+ if (GameMain.NetworkMember != null && controlled == this)
{
- Game1.Client.AddChatMessage("YOU HAVE DIED. Your chat messages will only be visible to other dead players.", ChatMessageType.Dead);
- Game1.LightManager.LosEnabled = false;
+ GameMain.Client.AddChatMessage("YOU HAVE DIED. Your chat messages will only be visible to other dead players.", ChatMessageType.Dead);
+ GameMain.LightManager.LosEnabled = false;
}
return;
}
@@ -1161,8 +1143,6 @@ namespace Subsurface
bool actionKeyState = false;
bool secondaryKeyState = false;
float sendingTime = 0.0f;
- //Vector2 targetMovement = Vector2.Zero;
- bool targetDir = false;
Vector2 cursorPos = Vector2.Zero;
bool leftKeyState = false, rightKeyState = false;
@@ -1211,37 +1191,26 @@ namespace Subsurface
keys[(int)InputType.Down].State = downKeyState;
keys[(int)InputType.Run].State = runState;
-
+
+ bool isLargeUpdate;
+
try
{
-
- if (aiController == null)
- {
- cursorPos = new Vector2(
- message.ReadFloat(),
- message.ReadFloat());
- }
- else
- {
- targetDir = message.ReadBoolean();
- }
+ cursorPos = new Vector2(
+ message.ReadFloat(),
+ message.ReadFloat());
+ isLargeUpdate = message.ReadBoolean();
}
catch
{
return;
}
- if (aiController == null)
+
+ cursorPosition = cursorPos;
+
+ if (isLargeUpdate)
{
- cursorPosition = cursorPos;
- }
- else
- {
- AnimController.TargetDir = (targetDir) ? Direction.Right : Direction.Left;
- }
-
- if (message.ReadBoolean())
- {
- foreach (Limb limb in AnimController.limbs)
+ foreach (Limb limb in AnimController.Limbs)
{
Vector2 pos = Vector2.Zero, vel = Vector2.Zero;
float rotation = 0.0f;
@@ -1285,8 +1254,6 @@ namespace Subsurface
Health = newHealth;
LargeUpdateTimer = 1;
-
- if (aiController != null) aiController.ReadNetworkData(message);
}
else
{
@@ -1319,7 +1286,7 @@ namespace Subsurface
if (controlled == this) controlled = null;
- if (Game1.Client!=null && Game1.Client.Character == this) Game1.Client.Character = null;
+ if (GameMain.Client!=null && GameMain.Client.Character == this) GameMain.Client.Character = null;
if (inventory != null) inventory.Remove();
diff --git a/Subsurface/Source/Characters/FishAnimController.cs b/Subsurface/Source/Characters/FishAnimController.cs
index a185db63f..491c34364 100644
--- a/Subsurface/Source/Characters/FishAnimController.cs
+++ b/Subsurface/Source/Characters/FishAnimController.cs
@@ -50,7 +50,7 @@ namespace Subsurface
{
if (character.IsDead)
{
- UpdateStruggling(deltaTime);
+ UpdateDying(deltaTime);
return;
}
@@ -64,7 +64,7 @@ namespace Subsurface
if (stunTimer>0.0f)
{
- UpdateStruggling(deltaTime);
+ //UpdateStruggling(deltaTime);
stunTimer -= deltaTime;
return;
}
@@ -185,18 +185,18 @@ namespace Subsurface
if (!inWater) steerForce.Y = 0.0f;
}
- for (int i = 0; i < limbs.Count(); i++)
+ for (int i = 0; i < Limbs.Count(); i++)
{
if (steerForce!=Vector2.Zero)
- limbs[i].body.ApplyForce(steerForce * limbs[i].SteerForce * limbs[i].Mass);
+ Limbs[i].body.ApplyForce(steerForce * Limbs[i].SteerForce * Limbs[i].Mass);
- if (limbs[i].type != LimbType.Torso) continue;
+ if (Limbs[i].type != LimbType.Torso) continue;
- float dist = (limbs[0].SimPosition - limbs[i].SimPosition).Length();
+ float dist = (Limbs[0].SimPosition - Limbs[i].SimPosition).Length();
- Vector2 limbPos = limbs[0].SimPosition - Vector2.Normalize(movement) * dist;
+ Vector2 limbPos = Limbs[0].SimPosition - Vector2.Normalize(movement) * dist;
- limbs[i].body.ApplyForce(((limbPos - limbs[i].SimPosition) * 3.0f - limbs[i].LinearVelocity * 3.0f) * limbs[i].Mass);
+ Limbs[i].body.ApplyForce(((limbPos - Limbs[i].SimPosition) * 3.0f - Limbs[i].LinearVelocity * 3.0f) * Limbs[i].Mass);
}
if (!inWater)
@@ -205,7 +205,7 @@ namespace Subsurface
}
else
{
- floorY = limbs[0].SimPosition.Y;
+ floorY = Limbs[0].SimPosition.Y;
}
}
@@ -247,7 +247,7 @@ namespace Subsurface
//out whether the ragdoll is standing on ground
float closestFraction = 1;
//Structure closestStructure = null;
- Game1.World.RayCast((fixture, point, normal, fraction) =>
+ GameMain.World.RayCast((fixture, point, normal, fraction) =>
{
//other limbs and bodies with no collision detection are ignored
if (fixture == null ||
@@ -301,7 +301,7 @@ namespace Subsurface
(float)Math.Cos(walkPos) * stepSize.X * 3.0f,
(float)Math.Sin(walkPos) * stepSize.Y * 2.0f);
- foreach (Limb limb in limbs)
+ foreach (Limb limb in Limbs)
{
switch (limb.type)
{
@@ -343,7 +343,7 @@ namespace Subsurface
}
}
- void UpdateStruggling(float deltaTime)
+ void UpdateDying(float deltaTime)
{
Limb head = GetLimb(LimbType.Head);
Limb tail = GetLimb(LimbType.Tail);
@@ -355,7 +355,7 @@ namespace Subsurface
Vector2 centerOfMass = GetCenterOfMass();
- foreach (Limb limb in limbs)
+ foreach (Limb limb in Limbs)
{
if (limb.type == LimbType.Head || limb.type == LimbType.Tail) continue;
@@ -367,7 +367,7 @@ namespace Subsurface
{
base.Flip();
- foreach (Limb l in limbs)
+ foreach (Limb l in Limbs)
{
if (!l.DoesFlip) continue;
@@ -378,22 +378,22 @@ namespace Subsurface
private void Mirror()
{
- float leftX = limbs[0].SimPosition.X, rightX = limbs[0].SimPosition.X;
- for (int i = 1; i < limbs.Count(); i++ )
+ float leftX = Limbs[0].SimPosition.X, rightX = Limbs[0].SimPosition.X;
+ for (int i = 1; i < Limbs.Count(); i++ )
{
- if (limbs[i].SimPosition.X < leftX)
+ if (Limbs[i].SimPosition.X < leftX)
{
- leftX = limbs[i].SimPosition.X;
+ leftX = Limbs[i].SimPosition.X;
}
- else if (limbs[i].SimPosition.X > rightX)
+ else if (Limbs[i].SimPosition.X > rightX)
{
- rightX = limbs[i].SimPosition.X;
+ rightX = Limbs[i].SimPosition.X;
}
}
float midX = GetCenterOfMass().X;
- foreach (Limb l in limbs)
+ foreach (Limb l in Limbs)
{
Vector2 newPos = new Vector2(midX - (l.SimPosition.X - midX), l.SimPosition.Y);
diff --git a/Subsurface/Source/Characters/HumanoidAnimController.cs b/Subsurface/Source/Characters/HumanoidAnimController.cs
index c5280e4bb..bd4b58030 100644
--- a/Subsurface/Source/Characters/HumanoidAnimController.cs
+++ b/Subsurface/Source/Characters/HumanoidAnimController.cs
@@ -30,11 +30,7 @@ namespace Subsurface
public override void UpdateAnim(float deltaTime)
{
- if (character.IsDead)
- {
- UpdateStruggling();
- return;
- }
+ if (character.IsDead) return;
Vector2 colliderPos = GetLimb(LimbType.Torso).SimPosition;
@@ -49,7 +45,7 @@ namespace Subsurface
//out whether the ragdoll is standing on ground
float closestFraction = 1;
Structure closestStructure = null;
- Game1.World.RayCast((fixture, point, normal, fraction) =>
+ GameMain.World.RayCast((fixture, point, normal, fraction) =>
{
switch (fixture.CollisionCategories)
{
@@ -136,7 +132,7 @@ namespace Subsurface
if (stunTimer > 0)
{
- UpdateStruggling();
+ //UpdateStruggling();
stunTimer -= deltaTime;
return;
}
@@ -159,7 +155,7 @@ namespace Subsurface
if (TargetDir != dir) Flip();
- foreach (Limb limb in limbs)
+ foreach (Limb limb in Limbs)
{
limb.Disabled = false;
}
@@ -223,7 +219,7 @@ namespace Subsurface
//place the anchors of the head and the torso to make the ragdoll stand
if (onGround && LowestLimb != null && (LowestLimb.SimPosition.Y-floorY < 0.5f || stairs != null) && head !=null)
{
- getUpSpeed = Math.Max(getUpSpeed * (head.SimPosition.Y - colliderPos.Y), 0.25f);
+ getUpSpeed = getUpSpeed * (head.SimPosition.Y - colliderPos.Y);//, 0.25f);
if (stairs != null)
{
@@ -325,8 +321,7 @@ namespace Subsurface
posAdditon.Y += 0.1f;
}
}
-
-
+
if (!rightHand.Disabled)
{
rightHand.body.ApplyTorque(walkPosY * runningModifier * Dir);
@@ -676,26 +671,7 @@ namespace Subsurface
}
}
-
- void UpdateStruggling()
- {
- Limb leftLeg = GetLimb(LimbType.LeftFoot);
- Limb rightLeg = GetLimb(LimbType.RightFoot);
- Limb torso = GetLimb(LimbType.Torso);
-
- //walkPos += 0.2f;
-
- if (inWater) return;
-
- HandIK(GetLimb(LimbType.RightHand), GetLimb(LimbType.Head).SimPosition,0.1f);
- HandIK(GetLimb(LimbType.LeftHand), GetLimb(LimbType.Head).SimPosition,0.1f);
-
- //Vector2 footPos = torso.body.Position+ new Vector2(TorsoPosition*Dir,0.0f);
-
- //MoveLimb(leftLeg, footPos, 0.7f);
- //MoveLimb(rightLeg, footPos, 0.7f);
- }
-
+
//float punchTimer;
//bool punching;
@@ -885,7 +861,7 @@ namespace Subsurface
}
}
- foreach (Limb l in limbs)
+ foreach (Limb l in Limbs)
{
switch (l.type)
{
diff --git a/Subsurface/Source/Characters/Limb.cs b/Subsurface/Source/Characters/Limb.cs
index 31b065a97..e83497293 100644
--- a/Subsurface/Source/Characters/Limb.cs
+++ b/Subsurface/Source/Characters/Limb.cs
@@ -223,7 +223,7 @@ namespace Subsurface
pullJoint.Enabled = false;
pullJoint.MaxForce = 150.0f * body.Mass;
- Game1.World.AddJoint(pullJoint);
+ GameMain.World.AddJoint(pullJoint);
}
else
{
@@ -325,14 +325,14 @@ namespace Subsurface
Vector2 particleVel = SimPosition - position;
if (particleVel != Vector2.Zero) particleVel = Vector2.Normalize(particleVel);
- Game1.ParticleManager.CreateParticle("blood",
+ GameMain.ParticleManager.CreateParticle("blood",
Position,
particleVel * Rand.Range(100.0f, 300.0f));
}
for (int i = 0; i < bloodAmount / 2; i++)
{
- Game1.ParticleManager.CreateParticle("waterblood", Position, Vector2.Zero);
+ GameMain.ParticleManager.CreateParticle("waterblood", Position, Vector2.Zero);
}
return new AttackResult(amount, bleedingAmount, hitArmor);
@@ -343,7 +343,7 @@ namespace Subsurface
if (LinearVelocity.X>100.0f)
{
DebugConsole.ThrowError("CHARACTER EXPLODED");
- foreach (Limb limb in character.AnimController.limbs)
+ foreach (Limb limb in character.AnimController.Limbs)
{
limb.body.ResetDynamics();
limb.body.SetTransform(body.SimPosition, 0.0f);
@@ -421,7 +421,7 @@ namespace Subsurface
1.0f, spriteEffect, sprite.Depth - 0.000001f);
}
- if (!Game1.DebugDraw) return;
+ if (!GameMain.DebugDraw) return;
if (pullJoint!=null)
{
diff --git a/Subsurface/Source/Characters/Ragdoll.cs b/Subsurface/Source/Characters/Ragdoll.cs
index a8f2b886e..7749a1ca6 100644
--- a/Subsurface/Source/Characters/Ragdoll.cs
+++ b/Subsurface/Source/Characters/Ragdoll.cs
@@ -18,7 +18,7 @@ namespace Subsurface
protected Hull currentHull;
- public Limb[] limbs;
+ public Limb[] Limbs;
private Dictionary limbDictionary;
public RevoluteJoint[] limbJoints;
@@ -138,7 +138,7 @@ namespace Subsurface
if (ignorePlatforms == value) return;
ignorePlatforms = value;
- foreach (Limb l in limbs)
+ foreach (Limb l in Limbs)
{
if (l.ignoreCollisions) continue;
@@ -170,7 +170,7 @@ namespace Subsurface
dir = Direction.Right;
//int limbAmount = ;
- limbs = new Limb[element.Elements("limb").Count()];
+ Limbs = new Limb[element.Elements("limb").Count()];
limbJoints = new RevoluteJoint[element.Elements("joint").Count()];
limbDictionary = new Dictionary();
@@ -193,7 +193,7 @@ namespace Subsurface
limb.body.FarseerBody.OnCollision += OnLimbCollision;
- limbs[ID] = limb;
+ Limbs[ID] = limb;
Mass += limb.Mass;
if (!limbDictionary.ContainsKey(limb.type)) limbDictionary.Add(limb.type, limb);
break;
@@ -207,7 +207,7 @@ namespace Subsurface
Vector2 limb2Pos = ToolBox.GetAttributeVector2(subElement, "limb2anchor", Vector2.Zero);
limb2Pos = ConvertUnits.ToSimUnits(limb2Pos);
- RevoluteJoint joint = new RevoluteJoint(limbs[limb1ID].body.FarseerBody, limbs[limb2ID].body.FarseerBody, limb1Pos, limb2Pos);
+ RevoluteJoint joint = new RevoluteJoint(Limbs[limb1ID].body.FarseerBody, Limbs[limb2ID].body.FarseerBody, limb1Pos, limb2Pos);
joint.CollideConnected = false;
@@ -221,7 +221,7 @@ namespace Subsurface
joint.MotorEnabled = true;
joint.MaxMotorTorque = 0.25f;
- Game1.World.AddJoint(joint);
+ GameMain.World.AddJoint(joint);
for (int i = 0; i < limbJoints.Length; i++ )
{
@@ -257,7 +257,7 @@ namespace Subsurface
startDepth+=increment;
}
- foreach (Limb limb in limbs)
+ foreach (Limb limb in Limbs)
{
limb.sprite.Depth = startDepth + limb.sprite.Depth * 0.0001f;
}
@@ -328,16 +328,16 @@ namespace Subsurface
Vector2 normal = contact.Manifold.LocalNormal;
Vector2 avgVelocity = Vector2.Zero;
- foreach (Limb limb in limbs)
+ foreach (Limb limb in Limbs)
{
avgVelocity += limb.LinearVelocity;
}
- avgVelocity = avgVelocity / limbs.Count();
+ avgVelocity = avgVelocity / Limbs.Count();
float impact = Vector2.Dot((f1.Body.LinearVelocity + avgVelocity) / 2.0f, -normal);
- if (Game1.Server != null) impact = impact / 2.0f;
+ if (GameMain.Server != null) impact = impact / 2.0f;
Limb l = (Limb)f1.Body.UserData;
@@ -350,20 +350,20 @@ namespace Subsurface
AmbientSoundManager.PlayDamageSound(DamageSoundType.LimbBlunt, strongestImpact, l.body.FarseerBody);
- if (Character.Controlled == character) Game1.GameScreen.Cam.Shake = strongestImpact;
+ if (Character.Controlled == character) GameMain.GameScreen.Cam.Shake = strongestImpact;
}
}
public virtual void Draw(SpriteBatch spriteBatch)
{
- foreach (Limb limb in limbs)
+ foreach (Limb limb in Limbs)
{
limb.Draw(spriteBatch);
}
- if (!Game1.DebugDraw) return;
+ if (!GameMain.DebugDraw) return;
- foreach (Limb limb in limbs)
+ foreach (Limb limb in Limbs)
{
if (limb.pullJoint != null)
@@ -420,29 +420,29 @@ namespace Subsurface
}
- for (int i = 0; i < limbs.Count(); i++)
+ for (int i = 0; i < Limbs.Count(); i++)
{
- if (limbs[i] == null) continue;
+ if (Limbs[i] == null) continue;
- Vector2 spriteOrigin = limbs[i].sprite.Origin;
- spriteOrigin.X = limbs[i].sprite.SourceRect.Width - spriteOrigin.X;
- limbs[i].sprite.Origin = spriteOrigin;
+ Vector2 spriteOrigin = Limbs[i].sprite.Origin;
+ spriteOrigin.X = Limbs[i].sprite.SourceRect.Width - spriteOrigin.X;
+ Limbs[i].sprite.Origin = spriteOrigin;
- limbs[i].Dir = Dir;
+ Limbs[i].Dir = Dir;
- if (limbs[i].pullJoint == null) continue;
+ if (Limbs[i].pullJoint == null) continue;
- limbs[i].pullJoint.LocalAnchorA =
+ Limbs[i].pullJoint.LocalAnchorA =
new Vector2(
- -limbs[i].pullJoint.LocalAnchorA.X,
- limbs[i].pullJoint.LocalAnchorA.Y);
+ -Limbs[i].pullJoint.LocalAnchorA.X,
+ Limbs[i].pullJoint.LocalAnchorA.Y);
}
}
public Vector2 GetCenterOfMass()
{
Vector2 centerOfMass = Vector2.Zero;
- foreach (Limb limb in limbs)
+ foreach (Limb limb in Limbs)
{
centerOfMass += limb.Mass * limb.SimPosition;
}
@@ -465,11 +465,11 @@ namespace Subsurface
public void ResetPullJoints()
{
- for (int i = 0; i < limbs.Count(); i++)
+ for (int i = 0; i < Limbs.Count(); i++)
{
- if (limbs[i] == null) continue;
- if (limbs[i].pullJoint == null) continue;
- limbs[i].pullJoint.Enabled = false;
+ if (Limbs[i] == null) continue;
+ if (Limbs[i].pullJoint == null) continue;
+ Limbs[i].pullJoint.Enabled = false;
}
}
@@ -520,7 +520,7 @@ namespace Subsurface
}
- foreach (Limb limb in limbs)
+ foreach (Limb limb in Limbs)
{
Vector2 limbPosition = ConvertUnits.ToDisplayUnits(limb.SimPosition);
@@ -562,7 +562,7 @@ namespace Subsurface
{
//create a splash particle
- Subsurface.Particles.Particle splash = Game1.ParticleManager.CreateParticle("watersplash",
+ Subsurface.Particles.Particle splash = GameMain.ParticleManager.CreateParticle("watersplash",
new Vector2(limb.Position.X, limbHull.Surface),
new Vector2(0.0f, Math.Abs(-limb.LinearVelocity.Y * 10.0f)),
0.0f);
@@ -572,7 +572,7 @@ namespace Subsurface
// limbHull.Rect.Y,
// limbHull.Rect.Y - limbHull.Rect.Height));
- Game1.ParticleManager.CreateParticle("bubbles",
+ GameMain.ParticleManager.CreateParticle("bubbles",
new Vector2(limb.Position.X, limbHull.Surface),
limb.LinearVelocity*0.001f,
0.0f);
@@ -629,7 +629,7 @@ namespace Subsurface
{
if (inWater)
{
- foreach (Limb limb in limbs)
+ foreach (Limb limb in Limbs)
{
if (limb.body.TargetPosition == Vector2.Zero) continue;
@@ -647,7 +647,7 @@ namespace Subsurface
{
System.Diagnostics.Debug.WriteLine("reset ragdoll limb positions");
- foreach (Limb limb in limbs)
+ foreach (Limb limb in Limbs)
{
if (limb.body.TargetPosition == Vector2.Zero) continue;
@@ -663,7 +663,7 @@ namespace Subsurface
private Vector2 GetFlowForce()
{
- Vector2 limbPos = ConvertUnits.ToDisplayUnits(limbs[0].SimPosition);
+ Vector2 limbPos = ConvertUnits.ToDisplayUnits(Limbs[0].SimPosition);
Vector2 force = Vector2.Zero;
foreach (MapEntity e in MapEntity.mapEntityList)
@@ -693,7 +693,7 @@ namespace Subsurface
{
//find the lowest limb
lowestLimb = null;
- foreach (Limb limb in limbs)
+ foreach (Limb limb in Limbs)
{
if (lowestLimb == null)
lowestLimb = limb;
@@ -704,10 +704,10 @@ namespace Subsurface
public void Remove()
{
- foreach (Limb l in limbs) l.Remove();
+ foreach (Limb l in Limbs) l.Remove();
foreach (RevoluteJoint joint in limbJoints)
{
- Game1.World.RemoveJoint(joint);
+ GameMain.World.RemoveJoint(joint);
}
}
diff --git a/Subsurface/Source/DebugConsole.cs b/Subsurface/Source/DebugConsole.cs
index 1e0524cb0..b5aba238a 100644
--- a/Subsurface/Source/DebugConsole.cs
+++ b/Subsurface/Source/DebugConsole.cs
@@ -46,7 +46,7 @@ namespace Subsurface
NewMessage("Press F3 to open/close the debug console", Color.Green);
}
- public static void Update(Game1 game, float deltaTime)
+ public static void Update(GameMain game, float deltaTime)
{
if (PlayerInput.KeyHit(Keys.F3))
{
@@ -138,7 +138,7 @@ namespace Subsurface
textBox.Draw(spriteBatch);
}
- public static void ExecuteCommand(string command, Game1 game)
+ public static void ExecuteCommand(string command, GameMain game)
{
#if !DEBUG
if (Game1.Client!=null)
@@ -163,9 +163,9 @@ namespace Subsurface
{
WayPoint spawnPoint = WayPoint.GetRandom(SpawnType.Human);
Character.Controlled = new Character(Character.HumanConfigFile, (spawnPoint == null) ? Vector2.Zero : spawnPoint.SimPosition);
- if (Game1.GameSession != null)
+ if (GameMain.GameSession != null)
{
- SinglePlayerMode mode = Game1.GameSession.gameMode as SinglePlayerMode;
+ SinglePlayerMode mode = GameMain.GameSession.gameMode as SinglePlayerMode;
if (mode == null) break;
mode.CrewManager.AddCharacter(Character.Controlled);
mode.CrewManager.SelectCharacter(null, Character.Controlled);
@@ -174,7 +174,7 @@ namespace Subsurface
else
{
WayPoint spawnPoint = WayPoint.GetRandom(SpawnType.Enemy);
- new Character("Content/Characters/" + commands[1] + "/" + commands[1] + ".xml", (spawnPoint == null) ? Vector2.Zero : spawnPoint.SimPosition);
+ new AICharacter("Content/Characters/" + commands[1] + "/" + commands[1] + ".xml", (spawnPoint == null) ? Vector2.Zero : spawnPoint.SimPosition);
}
break;
@@ -183,50 +183,50 @@ namespace Subsurface
// Game1.NetworkMember = new GameServer();
// break;
case "kick":
- if (Game1.Server == null) break;
- Game1.Server.KickPlayer(commands[1]);
+ if (GameMain.Server == null) break;
+ GameMain.Server.KickPlayer(commands[1]);
break;
case "startclient":
if (commands.Length == 1) return;
- if (Game1.Client == null)
+ if (GameMain.Client == null)
{
- Game1.NetworkMember = new GameClient("Name");
- Game1.Client.ConnectToServer(commands[1]);
+ GameMain.NetworkMember = new GameClient("Name");
+ GameMain.Client.ConnectToServer(commands[1]);
}
break;
case "mainmenuscreen":
case "mainmenu":
case "menu":
- Game1.MainMenuScreen.Select();
+ GameMain.MainMenuScreen.Select();
break;
case "gamescreen":
case "game":
- Game1.GameScreen.Select();
+ GameMain.GameScreen.Select();
break;
case "editmapscreen":
case "editmap":
case "edit":
- Game1.EditMapScreen.Select();
+ GameMain.EditMapScreen.Select();
break;
case "editcharacter":
case "editchar":
- Game1.EditCharacterScreen.Select();
+ GameMain.EditCharacterScreen.Select();
break;
case "freecamera":
case "freecam":
Character.Controlled = null;
- Game1.GameScreen.Cam.TargetPos = Vector2.Zero;
+ GameMain.GameScreen.Cam.TargetPos = Vector2.Zero;
break;
case "editwater":
case "water":
- if (Game1.Client== null)
+ if (GameMain.Client== null)
{
Hull.EditWater = !Hull.EditWater;
}
break;
case "generatelevel":
- Game1.Level = new Level("asdf", 50.0f, 500,500, 50);
- Game1.Level.Generate(100.0f);
+ GameMain.Level = new Level("asdf", 50.0f, 500,500, 50);
+ GameMain.Level.Generate(100.0f);
break;
case "fixitems":
foreach (Item it in Item.itemList)
@@ -245,18 +245,18 @@ namespace Subsurface
}
break;
case "shake":
- Game1.GameScreen.Cam.Shake = 10.0f;
+ GameMain.GameScreen.Cam.Shake = 10.0f;
break;
case "losenabled":
case "los":
case "drawlos":
- Game1.LightManager.LosEnabled = !Game1.LightManager.LosEnabled;
+ GameMain.LightManager.LosEnabled = !GameMain.LightManager.LosEnabled;
break;
case "lighting":
case "lightingenabled":
case "light":
case "lights":
- Game1.LightManager.LightingEnabled = !Game1.LightManager.LightingEnabled;
+ GameMain.LightManager.LightingEnabled = !GameMain.LightManager.LightingEnabled;
break;
case "oxygen":
case "air":
@@ -270,7 +270,7 @@ namespace Subsurface
break;
case "lobbyscreen":
case "lobby":
- Game1.LobbyScreen.Select();
+ GameMain.LobbyScreen.Select();
break;
case "savemap":
case "savesub":
@@ -297,7 +297,7 @@ namespace Subsurface
case "debugdraw":
//Hull.DebugDraw = !Hull.DebugDraw;
//Ragdoll.DebugDraw = !Ragdoll.DebugDraw;
- Game1.DebugDraw = !Game1.DebugDraw;
+ GameMain.DebugDraw = !GameMain.DebugDraw;
break;
default:
NewMessage("Command not found", Color.Red);
diff --git a/Subsurface/Source/Events/MonsterEvent.cs b/Subsurface/Source/Events/MonsterEvent.cs
index 906a6eb2e..f6a6f21b9 100644
--- a/Subsurface/Source/Events/MonsterEvent.cs
+++ b/Subsurface/Source/Events/MonsterEvent.cs
@@ -34,7 +34,7 @@ namespace Subsurface
Vector2 position = (randomWayPoint == null) ? Vector2.Zero : randomWayPoint.SimPosition;
position.X += Rand.Range(-0.5f, 0.5f);
position.Y += Rand.Range(-0.5f, 0.5f);
- monsters[i] = new Character(characterFile, position);
+ monsters[i] = new AICharacter(characterFile, position);
}
}
diff --git a/Subsurface/Source/Events/Quests/Quest.cs b/Subsurface/Source/Events/Quests/Quest.cs
index d877e35e9..2f321fe1e 100644
--- a/Subsurface/Source/Events/Quests/Quest.cs
+++ b/Subsurface/Source/Events/Quests/Quest.cs
@@ -159,7 +159,7 @@ namespace Subsurface
public void GiveReward()
{
- var mode = Game1.GameSession.gameMode as SinglePlayerMode;
+ var mode = GameMain.GameSession.gameMode as SinglePlayerMode;
mode.Money += reward;
if (!string.IsNullOrWhiteSpace(successMessage))
diff --git a/Subsurface/Source/Events/Task.cs b/Subsurface/Source/Events/Task.cs
index a20c89432..283eff24c 100644
--- a/Subsurface/Source/Events/Task.cs
+++ b/Subsurface/Source/Events/Task.cs
@@ -41,9 +41,9 @@ namespace Subsurface
public Task(float priority, string name)
{
- if (Game1.GameSession==null || Game1.GameSession.taskManager == null) return;
+ if (GameMain.GameSession==null || GameMain.GameSession.taskManager == null) return;
- taskManager = Game1.GameSession.taskManager;
+ taskManager = GameMain.GameSession.taskManager;
musicType = "repair";
this.priority = priority;
this.name = name;
diff --git a/Subsurface/Source/GUI/GUI.cs b/Subsurface/Source/GUI/GUI.cs
index a1221f4d1..4f6fdddef 100644
--- a/Subsurface/Source/GUI/GUI.cs
+++ b/Subsurface/Source/GUI/GUI.cs
@@ -61,7 +61,7 @@ namespace Subsurface
public static void TogglePauseMenu()
{
- if (Screen.Selected == Game1.MainMenuScreen) return;
+ if (Screen.Selected == GameMain.MainMenuScreen) return;
TogglePauseMenu(null, null);
@@ -75,22 +75,22 @@ namespace Subsurface
y += 60;
- if (Screen.Selected == Game1.GameScreen && Game1.GameSession !=null)
+ if (Screen.Selected == GameMain.GameScreen && GameMain.GameSession !=null)
{
- SinglePlayerMode spMode = Game1.GameSession.gameMode as SinglePlayerMode;
+ SinglePlayerMode spMode = GameMain.GameSession.gameMode as SinglePlayerMode;
if (spMode!=null)
{
button = new GUIButton(new Rectangle(0, y, 0, 30), "Load previous", Alignment.CenterX, GUI.Style, pauseMenu);
button.OnClicked += TogglePauseMenu;
- button.OnClicked += Game1.GameSession.LoadPrevious;
+ button.OnClicked += GameMain.GameSession.LoadPrevious;
y += 60;
}
}
- if (Screen.Selected == Game1.LobbyScreen)
+ if (Screen.Selected == GameMain.LobbyScreen)
{
- SinglePlayerMode spMode = Game1.GameSession.gameMode as SinglePlayerMode;
+ SinglePlayerMode spMode = GameMain.GameSession.gameMode as SinglePlayerMode;
if (spMode != null)
{
button = new GUIButton(new Rectangle(0, y, 0, 30), "Save & quit", Alignment.CenterX, GUI.Style, pauseMenu);
@@ -121,11 +121,11 @@ namespace Subsurface
{
if (button.UserData as string == "save")
{
- SaveUtil.SaveGame(Game1.GameSession.SaveFile);
+ SaveUtil.SaveGame(GameMain.GameSession.SaveFile);
}
- Game1.MainMenuScreen.Select();
+ GameMain.MainMenuScreen.Select();
//Game1.MainMenuScreen.SelectTab(null, (int)MainMenuScreen.Tabs.Main);
return true;
@@ -301,15 +301,15 @@ namespace Subsurface
public static void Draw(float deltaTime, SpriteBatch spriteBatch, Camera cam)
{
spriteBatch.DrawString(Font,
- "FPS: " + (int)Game1.FrameCounter.AverageFramesPerSecond,
+ "FPS: " + (int)GameMain.FrameCounter.AverageFramesPerSecond,
new Vector2(10, 10), Color.White);
- if (Game1.DebugDraw)
+ if (GameMain.DebugDraw)
{
spriteBatch.DrawString(Font,
- "Physics: " + Game1.World.UpdateTime
- + " - bodies: " + Game1.World.BodyList.Count
- + " Camera pos: " + Game1.GameScreen.Cam.Position,
+ "Physics: " + GameMain.World.UpdateTime
+ + " - bodies: " + GameMain.World.BodyList.Count
+ + " Camera pos: " + GameMain.GameScreen.Cam.Position,
new Vector2(10, 30), Color.White);
if (Submarine.Loaded!=null)
@@ -318,12 +318,10 @@ namespace Subsurface
"Sub pos: " + Submarine.Loaded.Position,
new Vector2(10, 50), Color.White);
}
-
}
-
if (Character.Controlled != null && cam!=null) Character.Controlled.DrawHud(spriteBatch, cam);
- if (Game1.NetworkMember != null) Game1.NetworkMember.Draw(spriteBatch);
+ if (GameMain.NetworkMember != null) GameMain.NetworkMember.Draw(spriteBatch);
DrawMessages(spriteBatch, (float)deltaTime);
@@ -366,7 +364,7 @@ namespace Subsurface
return;
}
- Vector2 currPos = new Vector2(Game1.GraphicsWidth / 2.0f, Game1.GraphicsHeight * 0.7f);
+ Vector2 currPos = new Vector2(GameMain.GraphicsWidth / 2.0f, GameMain.GraphicsHeight * 0.7f);
currPos.Y += messages.Count * 30;
messages.Add(new GUIMessage(message, color, currPos, lifeTime));
@@ -382,7 +380,7 @@ namespace Subsurface
{
if (messages.Count == 0) return;
- Vector2 currPos = new Vector2(Game1.GraphicsWidth / 2.0f, Game1.GraphicsHeight * 0.7f);
+ Vector2 currPos = new Vector2(GameMain.GraphicsWidth / 2.0f, GameMain.GraphicsHeight * 0.7f);
int i = 1;
foreach (GUIMessage msg in messages)
diff --git a/Subsurface/Source/GUI/GUIComponent.cs b/Subsurface/Source/GUI/GUIComponent.cs
index 5ae0841d8..eb6e5d1bb 100644
--- a/Subsurface/Source/GUI/GUIComponent.cs
+++ b/Subsurface/Source/GUI/GUIComponent.cs
@@ -290,7 +290,7 @@ namespace Subsurface
protected virtual void UpdateDimensions(GUIComponent parent = null)
{
- Rectangle parentRect = (parent==null) ? new Rectangle(0,0,Game1.GraphicsWidth, Game1.GraphicsHeight) : parent.rect;
+ Rectangle parentRect = (parent==null) ? new Rectangle(0,0,GameMain.GraphicsWidth, GameMain.GraphicsHeight) : parent.rect;
Vector4 padding = (parent == null) ? Vector4.Zero : parent.padding;
diff --git a/Subsurface/Source/GUI/TitleScreen.cs b/Subsurface/Source/GUI/TitleScreen.cs
index f5106ce51..f52d86d37 100644
--- a/Subsurface/Source/GUI/TitleScreen.cs
+++ b/Subsurface/Source/GUI/TitleScreen.cs
@@ -38,7 +38,7 @@ namespace Subsurface
monsterTexture = TextureLoader.FromFile("Content/UI/titleMonster.png");
titleTexture = TextureLoader.FromFile("Content/UI/titleText.png");
- renderTarget = new RenderTarget2D(graphics, Game1.GraphicsWidth, Game1.GraphicsHeight);
+ renderTarget = new RenderTarget2D(graphics, GameMain.GraphicsWidth, GameMain.GraphicsHeight);
}
@@ -53,15 +53,15 @@ namespace Subsurface
graphics.SetRenderTarget(renderTarget);
//Debug.WriteLine(stopwatch.Elapsed.TotalMilliseconds);
- Scale = Game1.GraphicsHeight/1500.0f;
+ Scale = GameMain.GraphicsHeight/1500.0f;
state += deltaTime;
if (loadState>-1)
{
- CenterPosition = new Vector2(Game1.GraphicsWidth*0.3f, Game1.GraphicsHeight/2.0f);
+ CenterPosition = new Vector2(GameMain.GraphicsWidth*0.3f, GameMain.GraphicsHeight/2.0f);
TitlePosition = CenterPosition + new Vector2(-0.0f + (float)Math.Sqrt(state) * 220.0f, 0.0f) * Scale;
- TitlePosition.X = Math.Min(TitlePosition.X, (float)Game1.GraphicsWidth / 2.0f);
+ TitlePosition.X = Math.Min(TitlePosition.X, (float)GameMain.GraphicsWidth / 2.0f);
}
@@ -103,7 +103,7 @@ namespace Subsurface
loadText = "Loading... " + (int)loadState + " %";
}
- spriteBatch.DrawString(GUI.Font, loadText, new Vector2(Game1.GraphicsWidth/2.0f - 50.0f, Game1.GraphicsHeight*0.8f), Color.White);
+ spriteBatch.DrawString(GUI.Font, loadText, new Vector2(GameMain.GraphicsWidth/2.0f - 50.0f, GameMain.GraphicsHeight*0.8f), Color.White);
spriteBatch.End();
diff --git a/Subsurface/Source/Game1.cs b/Subsurface/Source/Game1.cs
index 748c79ed4..6c62db18f 100644
--- a/Subsurface/Source/Game1.cs
+++ b/Subsurface/Source/Game1.cs
@@ -14,7 +14,7 @@ using System.Xml;
namespace Subsurface
{
- class Game1 : Game
+ class GameMain : Game
{
public static GraphicsDeviceManager Graphics;
static int graphicsWidth, graphicsHeight;
@@ -93,7 +93,7 @@ namespace Subsurface
get { return NetworkMember as GameClient; }
}
- public Game1()
+ public GameMain()
{
Graphics = new GraphicsDeviceManager(this);
diff --git a/Subsurface/Source/GameSession/CrewManager.cs b/Subsurface/Source/GameSession/CrewManager.cs
index f9ab24ad9..254535a93 100644
--- a/Subsurface/Source/GameSession/CrewManager.cs
+++ b/Subsurface/Source/GameSession/CrewManager.cs
@@ -94,7 +94,7 @@ namespace Subsurface
null, frame);
textBlock.Padding = new Vector4(5.0f, 0.0f, 5.0f, 0.0f);
- new GUIImage(new Rectangle(-10, -10, 0, 0), character.AnimController.limbs[0].sprite, Alignment.Left, frame);
+ new GUIImage(new Rectangle(-10, -10, 0, 0), character.AnimController.Limbs[0].sprite, Alignment.Left, frame);
}
public void Update(float deltaTime)
diff --git a/Subsurface/Source/GameSession/GameModes/GameMode.cs b/Subsurface/Source/GameSession/GameModes/GameMode.cs
index 75c5df73a..dba60f5c0 100644
--- a/Subsurface/Source/GameSession/GameModes/GameMode.cs
+++ b/Subsurface/Source/GameSession/GameModes/GameMode.cs
@@ -79,7 +79,7 @@ namespace Subsurface
endTime = startTime + duration;
this.duration = duration;
- timerBar = new GUIProgressBar(new Rectangle(Game1.GraphicsWidth - 120, 20, 100, 25), Color.Gold, 0.0f, null);
+ timerBar = new GUIProgressBar(new Rectangle(GameMain.GraphicsWidth - 120, 20, 100, 25), Color.Gold, 0.0f, null);
}
endMessage = "The round has ended!";
@@ -108,7 +108,7 @@ namespace Subsurface
if (endMessage != "" || this.endMessage == null) this.endMessage = endMessage;
- Game1.GameSession.EndShift(endMessage);
+ GameMain.GameSession.EndShift(endMessage);
}
diff --git a/Subsurface/Source/GameSession/GameModes/QuestMode.cs b/Subsurface/Source/GameSession/GameModes/QuestMode.cs
index 66257d1a5..18c768387 100644
--- a/Subsurface/Source/GameSession/GameModes/QuestMode.cs
+++ b/Subsurface/Source/GameSession/GameModes/QuestMode.cs
@@ -23,7 +23,7 @@ namespace Subsurface
{
Location[] locations = new Location[2];
- Random rand = new Random(ToolBox.StringToInt(Game1.NetLobbyScreen.LevelSeed));
+ Random rand = new Random(ToolBox.StringToInt(GameMain.NetLobbyScreen.LevelSeed));
for (int i = 0; i < 2; i++)
{
diff --git a/Subsurface/Source/GameSession/GameModes/SinglePlayerMode.cs b/Subsurface/Source/GameSession/GameModes/SinglePlayerMode.cs
index 3d826c44c..028481886 100644
--- a/Subsurface/Source/GameSession/GameModes/SinglePlayerMode.cs
+++ b/Subsurface/Source/GameSession/GameModes/SinglePlayerMode.cs
@@ -47,7 +47,7 @@ namespace Subsurface
CargoManager = new CargoManager();
- endShiftButton = new GUIButton(new Rectangle(Game1.GraphicsWidth - 220, 20, 200, 25), "End shift", Alignment.TopLeft, GUI.Style);
+ endShiftButton = new GUIButton(new Rectangle(GameMain.GraphicsWidth - 220, 20, 200, 25), "End shift", Alignment.TopLeft, GUI.Style);
endShiftButton.OnClicked = EndShift;
for (int i = 0; i < 3; i++)
@@ -101,7 +101,7 @@ namespace Subsurface
if (!savedOnStart)
{
- SaveUtil.SaveGame(Game1.GameSession.SaveFile);
+ SaveUtil.SaveGame(GameMain.GameSession.SaveFile);
savedOnStart = true;
}
@@ -192,9 +192,9 @@ namespace Subsurface
sb.Append("Your entire crew has died!");
var msgBox = new GUIMessageBox("", sb.ToString(), new string[] { "Load game", "Quit" });
- msgBox.Buttons[0].OnClicked += Game1.GameSession.LoadPrevious;
+ msgBox.Buttons[0].OnClicked += GameMain.GameSession.LoadPrevious;
msgBox.Buttons[0].OnClicked += msgBox.Close;
- msgBox.Buttons[1].OnClicked = Game1.LobbyScreen.QuitToMainMenu;
+ msgBox.Buttons[1].OnClicked = GameMain.LobbyScreen.QuitToMainMenu;
msgBox.Buttons[1].OnClicked += msgBox.Close;
}
else
@@ -217,7 +217,7 @@ namespace Subsurface
Map.MoveToNextLocation();
}
- SaveUtil.SaveGame(Game1.GameSession.SaveFile);
+ SaveUtil.SaveGame(GameMain.GameSession.SaveFile);
}
CrewManager.EndShift();
@@ -226,7 +226,7 @@ namespace Subsurface
Character.CharacterList[i].Remove();
}
- Game1.GameSession.EndShift("");
+ GameMain.GameSession.EndShift("");
}
diff --git a/Subsurface/Source/GameSession/GameModes/TraitorMode.cs b/Subsurface/Source/GameSession/GameModes/TraitorMode.cs
index 76d3bffb6..32c83220c 100644
--- a/Subsurface/Source/GameSession/GameModes/TraitorMode.cs
+++ b/Subsurface/Source/GameSession/GameModes/TraitorMode.cs
@@ -25,7 +25,7 @@ namespace Subsurface
public override void Update(float deltaTime)
{
- if (Game1.Server == null) return;
+ if (GameMain.Server == null) return;
base.Update(deltaTime);
@@ -34,21 +34,21 @@ namespace Subsurface
if (traitor==null || target ==null)
{
- int clientCount = Game1.Server.connectedClients.Count();
+ int clientCount = GameMain.Server.connectedClients.Count();
if (clientCount < 2) return;
int traitorIndex = Rand.Int(clientCount, false);
- traitor = Game1.Server.connectedClients[traitorIndex];
+ traitor = GameMain.Server.connectedClients[traitorIndex];
int targetIndex = 0;
while (targetIndex == traitorIndex)
{
targetIndex = Rand.Int(clientCount, false);
}
- target = Game1.Server.connectedClients[targetIndex];
+ target = GameMain.Server.connectedClients[targetIndex];
- Game1.Server.NewTraitor(traitor, target);
+ GameMain.Server.NewTraitor(traitor, target);
}
else
{
diff --git a/Subsurface/Source/GameSession/GameModes/TutorialMode.cs b/Subsurface/Source/GameSession/GameModes/TutorialMode.cs
index 69e8d55a4..32ad2fe35 100644
--- a/Subsurface/Source/GameSession/GameModes/TutorialMode.cs
+++ b/Subsurface/Source/GameSession/GameModes/TutorialMode.cs
@@ -18,13 +18,13 @@ namespace Subsurface
{
Submarine.Load("Content/Map/TutorialSub.gz");
- Game1.GameSession = new GameSession(Submarine.Loaded, "", GameModePreset.list.Find(gm => gm.Name.ToLower()=="tutorial"));
+ GameMain.GameSession = new GameSession(Submarine.Loaded, "", GameModePreset.list.Find(gm => gm.Name.ToLower()=="tutorial"));
- Game1.GameSession.StartShift(TimeSpan.Zero, "tutorial");
+ GameMain.GameSession.StartShift(TimeSpan.Zero, "tutorial");
- Game1.GameSession.taskManager.Tasks.Clear();
+ GameMain.GameSession.taskManager.Tasks.Clear();
- Game1.GameScreen.Select();
+ GameMain.GameScreen.Select();
}
public TutorialMode(GameModePreset preset)
@@ -313,7 +313,7 @@ namespace Subsurface
Vector2 steeringDir = windows[0].Position - moloch.Position;
if (steeringDir != Vector2.Zero) steeringDir = Vector2.Normalize(steeringDir);
- foreach (Limb limb in moloch.AnimController.limbs)
+ foreach (Limb limb in moloch.AnimController.Limbs)
{
limb.body.LinearVelocity = new Vector2(limb.LinearVelocity.X, limb.LinearVelocity.Y + steeringDir.Y*10.0f);
}
@@ -511,7 +511,7 @@ namespace Subsurface
float secondsLeft = endPreviewLength;
Character.Controlled = null;
- Game1.GameScreen.Cam.TargetPos = Vector2.Zero;
+ GameMain.GameScreen.Cam.TargetPos = Vector2.Zero;
do
{
@@ -522,14 +522,14 @@ namespace Subsurface
(float)Math.Cos(camAngle) * (Submarine.Borders.Width / 2.0f),
(float)Math.Sin(camAngle) * (Submarine.Borders.Height / 2.0f)));
- Game1.GameScreen.Cam.TargetPos = offset * 0.8f;
+ GameMain.GameScreen.Cam.TargetPos = offset * 0.8f;
//Game1.GameScreen.Cam.MoveCamera((float)deltaTime);
yield return CoroutineStatus.Running;
} while (secondsLeft > 0.0f);
Submarine.Unload();
- Game1.MainMenuScreen.Select();
+ GameMain.MainMenuScreen.Select();
yield return CoroutineStatus.Success;
}
@@ -544,7 +544,7 @@ namespace Subsurface
messageBox.Buttons[0].OnClicked += messageBox.Close;
//messageBox.Buttons[1].UserData = MainMenuScreen.Tabs.Main;
- messageBox.Buttons[1].OnClicked = Game1.MainMenuScreen.SelectTab;
+ messageBox.Buttons[1].OnClicked = GameMain.MainMenuScreen.SelectTab;
messageBox.Buttons[1].OnClicked += messageBox.Close;
diff --git a/Subsurface/Source/GameSession/GameSession.cs b/Subsurface/Source/GameSession/GameSession.cs
index 092fbc0f9..0023de375 100644
--- a/Subsurface/Source/GameSession/GameSession.cs
+++ b/Subsurface/Source/GameSession/GameSession.cs
@@ -77,7 +77,7 @@ namespace Subsurface
this.saveFile = saveFile;
- guiRoot = new GUIFrame(new Rectangle(0,0,Game1.GraphicsWidth,Game1.GraphicsWidth), Color.Transparent);
+ guiRoot = new GUIFrame(new Rectangle(0,0,GameMain.GraphicsWidth,GameMain.GraphicsWidth), Color.Transparent);
this.gameMode = gameMode;
this.submarine = selectedSub;
@@ -107,7 +107,7 @@ namespace Subsurface
public void StartShift(TimeSpan duration, Level level, bool reloadSub = true)
{
- Game1.LightManager.LosEnabled = (Game1.Server==null || Game1.Server.CharacterInfo!=null);
+ GameMain.LightManager.LosEnabled = (GameMain.Server==null || GameMain.Server.CharacterInfo!=null);
this.level = level;
@@ -118,7 +118,7 @@ namespace Subsurface
level.Generate(submarine == null ? 100.0f : Math.Max(Submarine.Borders.Width, Submarine.Borders.Height));
submarine.SetPosition(level.StartPosition - new Vector2(0.0f, 2000.0f));
- Game1.GameScreen.BackgroundSpriteManager.SpawnSprites(80);
+ GameMain.GameScreen.BackgroundSpriteManager.SpawnSprites(80);
}
if (Quest!=null) Quest.Start(Level.Loaded);
@@ -132,14 +132,14 @@ namespace Subsurface
{
if (Quest != null) Quest.End();
- if (Game1.Server!=null)
+ if (GameMain.Server!=null)
{
- CoroutineManager.StartCoroutine(Game1.Server.EndGame(endMessage));
+ CoroutineManager.StartCoroutine(GameMain.Server.EndGame(endMessage));
}
- else if (Game1.Client==null)
+ else if (GameMain.Client==null)
{
- Game1.LobbyScreen.Select();
+ GameMain.LobbyScreen.Select();
}
taskManager.EndShift();
@@ -160,7 +160,7 @@ namespace Subsurface
{
SaveUtil.LoadGame(saveFile);
- Game1.LobbyScreen.Select();
+ GameMain.LobbyScreen.Select();
return true;
}
diff --git a/Subsurface/Source/Items/CharacterInventory.cs b/Subsurface/Source/Items/CharacterInventory.cs
index f2af51d79..04021b916 100644
--- a/Subsurface/Source/Items/CharacterInventory.cs
+++ b/Subsurface/Source/Items/CharacterInventory.cs
@@ -46,19 +46,19 @@ namespace Subsurface
case 2:
slotPositions[i] = new Vector2(
spacing,
- Game1.GraphicsHeight - (spacing + rectHeight) * (3 - i));
+ GameMain.GraphicsHeight - (spacing + rectHeight) * (3 - i));
break;
//lefthand, righthand
case 3:
case 4:
slotPositions[i] = new Vector2(
spacing * 2 + rectWidth + (spacing + rectWidth) * (i - 3),
- Game1.GraphicsHeight - (spacing + rectHeight)*3);
+ GameMain.GraphicsHeight - (spacing + rectHeight)*3);
break;
default:
slotPositions[i] = new Vector2(
spacing * 2 + rectWidth + (spacing + rectWidth) * ((i - 3)%5),
- Game1.GraphicsHeight - (spacing + rectHeight) * ((i>9) ? 2 : 1));
+ GameMain.GraphicsHeight - (spacing + rectHeight) * ((i>9) ? 2 : 1));
break;
}
}
diff --git a/Subsurface/Source/Items/Components/Door.cs b/Subsurface/Source/Items/Components/Door.cs
index ecaac1883..b446a7695 100644
--- a/Subsurface/Source/Items/Components/Door.cs
+++ b/Subsurface/Source/Items/Components/Door.cs
@@ -119,7 +119,7 @@ namespace Subsurface.Items.Components
(int)doorSprite.size.X,
(int)doorSprite.size.Y);
- body = new PhysicsBody(BodyFactory.CreateRectangle(Game1.World,
+ body = new PhysicsBody(BodyFactory.CreateRectangle(GameMain.World,
ConvertUnits.ToSimUnits(Math.Max(doorRect.Width, 1)),
ConvertUnits.ToSimUnits(Math.Max(doorRect.Height, 1)),
1.5f));
@@ -282,8 +282,8 @@ namespace Subsurface.Items.Components
foreach (Character c in Character.CharacterList)
{
- int dir = Math.Sign(c.AnimController.limbs[0].SimPosition.X - simPos.X);
- foreach (Limb l in c.AnimController.limbs)
+ int dir = Math.Sign(c.AnimController.Limbs[0].SimPosition.X - simPos.X);
+ foreach (Limb l in c.AnimController.Limbs)
{
if (l.SimPosition.Y < simPos.Y || l.SimPosition.Y > simPos.Y - simSize.Y) continue;
if (Math.Abs(l.SimPosition.X - simPos.X) > simSize.X * 2.0f) continue;
@@ -299,7 +299,7 @@ namespace Subsurface.Items.Components
{
base.Remove();
- Game1.World.RemoveBody(body.FarseerBody);
+ GameMain.World.RemoveBody(body.FarseerBody);
if (linkedGap!=null) linkedGap.Remove();
diff --git a/Subsurface/Source/Items/Components/Holdable/Holdable.cs b/Subsurface/Source/Items/Components/Holdable/Holdable.cs
index fde57fbb2..099b2ff8a 100644
--- a/Subsurface/Source/Items/Components/Holdable/Holdable.cs
+++ b/Subsurface/Source/Items/Components/Holdable/Holdable.cs
@@ -101,7 +101,7 @@ namespace Subsurface.Items.Components
Msg = "";
}
- if (attachedByDefault || Screen.Selected == Game1.EditMapScreen) Use(1.0f);
+ if (attachedByDefault || Screen.Selected == GameMain.EditMapScreen) Use(1.0f);
//holdAngle = ToolBox.GetAttributeFloat(element, "holdangle", 0.0f);
diff --git a/Subsurface/Source/Items/Components/Holdable/MeleeWeapon.cs b/Subsurface/Source/Items/Components/Holdable/MeleeWeapon.cs
index 3c0397c99..783e416c6 100644
--- a/Subsurface/Source/Items/Components/Holdable/MeleeWeapon.cs
+++ b/Subsurface/Source/Items/Components/Holdable/MeleeWeapon.cs
@@ -51,7 +51,7 @@ namespace Subsurface.Items.Components
item.body.FarseerBody.CollidesWith = Physics.CollisionCharacter | Physics.CollisionWall;
item.body.FarseerBody.OnCollision += OnCollision;
- foreach (Limb l in character.AnimController.limbs)
+ foreach (Limb l in character.AnimController.Limbs)
{
item.body.FarseerBody.IgnoreCollisionWith(l.body.FarseerBody);
@@ -153,7 +153,7 @@ namespace Subsurface.Items.Components
item.body.CollisionCategories = Physics.CollisionMisc;
item.body.CollidesWith = Physics.CollisionWall;
- foreach (Limb l in picker.AnimController.limbs)
+ foreach (Limb l in picker.AnimController.Limbs)
{
item.body.FarseerBody.RestoreCollisionWith(l.body.FarseerBody);
}
diff --git a/Subsurface/Source/Items/Components/Holdable/RangedWeapon.cs b/Subsurface/Source/Items/Components/Holdable/RangedWeapon.cs
index c7b854535..fdc1c33b8 100644
--- a/Subsurface/Source/Items/Components/Holdable/RangedWeapon.cs
+++ b/Subsurface/Source/Items/Components/Holdable/RangedWeapon.cs
@@ -60,7 +60,7 @@ namespace Subsurface.Items.Components
bool failed = DoesUseFail(character);
List limbBodies = new List();
- foreach (Limb l in character.AnimController.limbs)
+ foreach (Limb l in character.AnimController.Limbs)
{
limbBodies.Add(l.body.FarseerBody);
}
diff --git a/Subsurface/Source/Items/Components/Holdable/RepairTool.cs b/Subsurface/Source/Items/Components/Holdable/RepairTool.cs
index e7a19a492..39f393c83 100644
--- a/Subsurface/Source/Items/Components/Holdable/RepairTool.cs
+++ b/Subsurface/Source/Items/Components/Holdable/RepairTool.cs
@@ -116,7 +116,7 @@ namespace Subsurface.Items.Components
(float)Math.Sin(item.body.Rotation)) * range * item.body.Dir;
List ignoredBodies = new List();
- foreach (Limb limb in character.AnimController.limbs)
+ foreach (Limb limb in character.AnimController.Limbs)
{
ignoredBodies.Add(limb.body.FarseerBody);
}
@@ -200,7 +200,7 @@ namespace Subsurface.Items.Components
if (!string.IsNullOrWhiteSpace(particles))
{
- Game1.ParticleManager.CreateParticle(particles, ConvertUnits.ToDisplayUnits(TransformedBarrelPos),
+ GameMain.ParticleManager.CreateParticle(particles, ConvertUnits.ToDisplayUnits(TransformedBarrelPos),
-item.body.Rotation + ((item.body.Dir>0.0f) ? 0.0f : MathHelper.Pi), 0.0f);
}
diff --git a/Subsurface/Source/Items/Components/ItemComponent.cs b/Subsurface/Source/Items/Components/ItemComponent.cs
index b259e758e..1888c1c6d 100644
--- a/Subsurface/Source/Items/Components/ItemComponent.cs
+++ b/Subsurface/Source/Items/Components/ItemComponent.cs
@@ -196,10 +196,10 @@ namespace Subsurface.Items.Components
break;
case "guiframe":
Vector4 rect = ToolBox.GetAttributeVector4(subElement, "rect", Vector4.One);
- rect.X *= Game1.GraphicsWidth;
- rect.Y *= Game1.GraphicsHeight;
- rect.Z *= Game1.GraphicsWidth;
- rect.W *= Game1.GraphicsHeight;
+ rect.X *= GameMain.GraphicsWidth;
+ rect.Y *= GameMain.GraphicsHeight;
+ rect.Z *= GameMain.GraphicsWidth;
+ rect.W *= GameMain.GraphicsHeight;
Vector4 color = ToolBox.GetAttributeVector4(subElement, "color", Vector4.One);
diff --git a/Subsurface/Source/Items/Components/Machines/Engine.cs b/Subsurface/Source/Items/Components/Machines/Engine.cs
index 4cfe3df6f..42ab8fb06 100644
--- a/Subsurface/Source/Items/Components/Machines/Engine.cs
+++ b/Subsurface/Source/Items/Components/Machines/Engine.cs
@@ -72,7 +72,7 @@ namespace Subsurface.Items.Components
for (int i = 0; i < 5; i++)
{
- Game1.ParticleManager.CreateParticle("bubbles", item.Position,
+ GameMain.ParticleManager.CreateParticle("bubbles", item.Position,
-currForce/5.0f + new Vector2(Rand.Range(-100.0f, 100.0f), Rand.Range(-50f, 50f)));
}
}
diff --git a/Subsurface/Source/Items/Components/Machines/Fabricator.cs b/Subsurface/Source/Items/Components/Machines/Fabricator.cs
index fd4b52d8a..b3146d961 100644
--- a/Subsurface/Source/Items/Components/Machines/Fabricator.cs
+++ b/Subsurface/Source/Items/Components/Machines/Fabricator.cs
@@ -74,7 +74,7 @@ namespace Subsurface.Items.Components
}
int width = 400, height = 300;
- itemList = new GUIListBox(new Rectangle(Game1.GraphicsWidth / 2 - width / 2, Game1.GraphicsHeight / 2 - height / 2, width, height), Color.White * 0.7f);
+ itemList = new GUIListBox(new Rectangle(GameMain.GraphicsWidth / 2 - width / 2, GameMain.GraphicsHeight / 2 - height / 2, width, height), Color.White * 0.7f);
itemList.OnSelected = SelectItem;
//structureList.CheckSelected = MapEntityPrefab.GetSelected;
@@ -110,7 +110,7 @@ namespace Subsurface.Items.Components
if (targetItem == null) return false;
int width = 200, height = 150;
- selectedItemFrame = new GUIFrame(new Rectangle(Game1.GraphicsWidth / 2 - width / 2, itemList.Rect.Bottom+20, width, height), Color.Black*0.8f);
+ selectedItemFrame = new GUIFrame(new Rectangle(GameMain.GraphicsWidth / 2 - width / 2, itemList.Rect.Bottom+20, width, height), Color.Black*0.8f);
//selectedItemFrame.Padding = GUI.style.smallPadding;
if (targetItem.TargetItem.sprite != null)
diff --git a/Subsurface/Source/Items/Components/Machines/Radar.cs b/Subsurface/Source/Items/Components/Machines/Radar.cs
index 44af8c4bc..52921dca3 100644
--- a/Subsurface/Source/Items/Components/Machines/Radar.cs
+++ b/Subsurface/Source/Items/Components/Machines/Radar.cs
@@ -150,20 +150,20 @@ namespace Subsurface.Items.Components
screenOverlay.Draw(spriteBatch, center, 0.0f, rect.Width/screenOverlay.size.X);
}
- if (Game1.GameSession == null) return;
+ if (GameMain.GameSession == null) return;
DrawMarker(spriteBatch,
- (Game1.GameSession.Map == null) ? "Start" : Game1.GameSession.Map.CurrentLocation.Name,
+ (GameMain.GameSession.Map == null) ? "Start" : GameMain.GameSession.Map.CurrentLocation.Name,
(Level.Loaded.StartPosition + Level.Loaded.Position), displayScale, center, (rect.Width * 0.55f));
DrawMarker(spriteBatch,
- (Game1.GameSession.Map == null) ? "End" : Game1.GameSession.Map.SelectedLocation.Name,
+ (GameMain.GameSession.Map == null) ? "End" : GameMain.GameSession.Map.SelectedLocation.Name,
(Level.Loaded.EndPosition + Level.Loaded.Position), displayScale, center, (rect.Width * 0.55f));
- if (Game1.GameSession.Quest != null)
+ if (GameMain.GameSession.Quest != null)
{
- var quest = Game1.GameSession.Quest;
+ var quest = GameMain.GameSession.Quest;
if (!string.IsNullOrWhiteSpace(quest.RadarLabel))
{
diff --git a/Subsurface/Source/Items/Components/Power/PowerContainer.cs b/Subsurface/Source/Items/Components/Power/PowerContainer.cs
index e6f7da900..b34d53cf4 100644
--- a/Subsurface/Source/Items/Components/Power/PowerContainer.cs
+++ b/Subsurface/Source/Items/Components/Power/PowerContainer.cs
@@ -184,8 +184,8 @@ namespace Subsurface.Items.Components
public override void DrawHUD(SpriteBatch spriteBatch, Character character)
{
int width = 300, height = 200;
- int x = Game1.GraphicsWidth / 2 - width / 2;
- int y = Game1.GraphicsHeight / 2 - height / 2;
+ int x = GameMain.GraphicsWidth / 2 - width / 2;
+ int y = GameMain.GraphicsHeight / 2 - height / 2;
GUI.DrawRectangle(spriteBatch, new Rectangle(x, y, width, height), Color.Black, true);
diff --git a/Subsurface/Source/Items/Components/Power/PowerTransfer.cs b/Subsurface/Source/Items/Components/Power/PowerTransfer.cs
index eea77f1d2..0b13702de 100644
--- a/Subsurface/Source/Items/Components/Power/PowerTransfer.cs
+++ b/Subsurface/Source/Items/Components/Power/PowerTransfer.cs
@@ -65,7 +65,7 @@ namespace Subsurface.Items.Components
Vector2 baseVel = Rand.Vector(300.0f);
for (int i = 0; i < 10; i++)
{
- var particle = Game1.ParticleManager.CreateParticle("spark", pt.item.Position,
+ var particle = GameMain.ParticleManager.CreateParticle("spark", pt.item.Position,
baseVel + Rand.Vector(100.0f), 0.0f);
if (particle != null) particle.Size *= Rand.Range(0.5f,1.0f);
diff --git a/Subsurface/Source/Items/Components/Projectile.cs b/Subsurface/Source/Items/Components/Projectile.cs
index d6aa0204a..54f38c97c 100644
--- a/Subsurface/Source/Items/Components/Projectile.cs
+++ b/Subsurface/Source/Items/Components/Projectile.cs
@@ -106,7 +106,7 @@ namespace Subsurface.Items.Components
if (stickJoint != null && doesStick)
{
if (stickTarget!=null) item.body.FarseerBody.RestoreCollisionWith(stickTarget);
- Game1.World.RemoveJoint(stickJoint);
+ GameMain.World.RemoveJoint(stickJoint);
stickJoint = null;
}
}
@@ -122,7 +122,7 @@ namespace Subsurface.Items.Components
item.body.FarseerBody.RestoreCollisionWith(stickTarget);
}
- Game1.World.RemoveJoint(stickJoint);
+ GameMain.World.RemoveJoint(stickJoint);
stickJoint = null;
isActive = false;
@@ -209,7 +209,7 @@ namespace Subsurface.Items.Components
item.body.FarseerBody.IgnoreCollisionWith(targetBody);
stickTarget = targetBody;
- Game1.World.AddJoint(stickJoint);
+ GameMain.World.AddJoint(stickJoint);
isActive = true;
diff --git a/Subsurface/Source/Items/Components/Rope.cs b/Subsurface/Source/Items/Components/Rope.cs
index 68b129acf..5b2c2824d 100644
--- a/Subsurface/Source/Items/Components/Rope.cs
+++ b/Subsurface/Source/Items/Components/Rope.cs
@@ -90,7 +90,7 @@ namespace Subsurface.Items.Components
Vertices box = PolygonTools.CreateRectangle(sectionLength, 0.05f);
PolygonShape shape = new PolygonShape(box, 5);
- ListropeList = PathManager.EvenlyDistributeShapesAlongPath(Game1.World, ropePath, shape, BodyType.Dynamic, (int)(length/sectionLength));
+ ListropeList = PathManager.EvenlyDistributeShapesAlongPath(GameMain.World, ropePath, shape, BodyType.Dynamic, (int)(length/sectionLength));
ropeBodies = new PhysicsBody[ropeList.Count()];
for (int i = 0; i joints = PathManager.AttachBodiesWithRevoluteJoint(Game1.World, ropeList,
+ List joints = PathManager.AttachBodiesWithRevoluteJoint(GameMain.World, ropeList,
new Vector2(-sectionLength/2, 0.0f), new Vector2(sectionLength/2, 0.0f), false, false);
ropeJoints = new RevoluteJoint[joints.Count+1];
//ropeJoints[0] = JointFactory.CreateRevoluteJoint(Game1.world, item.body, ropeList[0], new Vector2(0f, -0.0f));
for (int i = 0; i < joints.Count; i++)
{
- var distanceJoint = JointFactory.CreateDistanceJoint(Game1.World, ropeList[i], ropeList[i + 1]);
+ var distanceJoint = JointFactory.CreateDistanceJoint(GameMain.World, ropeList[i], ropeList[i + 1]);
distanceJoint.Length = sectionLength;
distanceJoint.DampingRatio = 1.0f;
@@ -299,8 +299,8 @@ namespace Subsurface.Items.Components
ropeBodies[ropeBodies.Length - 1].SetTransform(projectile.body.SimPosition, projectile.body.Rotation);
//attach projectile to the last section of the rope
- if (ropeJoints[ropeJoints.Length-1] != null) Game1.World.RemoveJoint(ropeJoints[ropeJoints.Length-1]);
- ropeJoints[ropeJoints.Length - 1] = JointFactory.CreateRevoluteJoint(Game1.World,
+ if (ropeJoints[ropeJoints.Length-1] != null) GameMain.World.RemoveJoint(ropeJoints[ropeJoints.Length-1]);
+ ropeJoints[ropeJoints.Length - 1] = JointFactory.CreateRevoluteJoint(GameMain.World,
projectile.body.FarseerBody, ropeBodies[ropeBodies.Length - 1].FarseerBody,
projectileAnchor, new Vector2(sectionLength / 2, 0.0f));
@@ -315,7 +315,7 @@ namespace Subsurface.Items.Components
body.SetTransform(TransformedBarrelPos, rotation);
//Vector2 axis = new Vector2((float)Math.Cos(rotation), (float)Math.Sin(rotation));
- if (gunJoint != null) Game1.World.RemoveJoint(gunJoint);
+ if (gunJoint != null) GameMain.World.RemoveJoint(gunJoint);
gunJoint = new DistanceJoint(item.body.FarseerBody, body, BarrelPos,
new Vector2(sectionLength / 2, 0.0f));
@@ -328,7 +328,7 @@ namespace Subsurface.Items.Components
//gunJoint.LimitEnabled = true;
//gunJoint.ReferenceAngle = 0.0f;
- Game1.World.AddJoint(gunJoint);
+ GameMain.World.AddJoint(gunJoint);
}
}
diff --git a/Subsurface/Source/Items/Components/Signal/Connection.cs b/Subsurface/Source/Items/Components/Signal/Connection.cs
index 258af00b1..fadfa4262 100644
--- a/Subsurface/Source/Items/Components/Signal/Connection.cs
+++ b/Subsurface/Source/Items/Components/Signal/Connection.cs
@@ -172,7 +172,7 @@ namespace Subsurface.Items.Components
{
int width = 400, height = 200;
- int x = Game1.GraphicsWidth/2 - width/2, y = Game1.GraphicsHeight - height;
+ int x = GameMain.GraphicsWidth/2 - width/2, y = GameMain.GraphicsHeight - height;
Rectangle panelRect = new Rectangle(x, y, width, height);
diff --git a/Subsurface/Source/Items/Components/Signal/Wire.cs b/Subsurface/Source/Items/Components/Signal/Wire.cs
index c18f608de..d146a3c14 100644
--- a/Subsurface/Source/Items/Components/Signal/Wire.cs
+++ b/Subsurface/Source/Items/Components/Signal/Wire.cs
@@ -290,7 +290,7 @@ namespace Subsurface.Items.Components
GUI.DrawRectangle(spriteBatch, new Rectangle((int)Nodes[i].X - 3, (int)-Nodes[i].Y - 3, 6, 6), Color.Red, true, 0.0f);
if (GUIComponent.MouseOn == null &&
- Vector2.Distance(Game1.EditMapScreen.Cam.ScreenToWorld(PlayerInput.MousePosition), Nodes[i]) < 20.0f)
+ Vector2.Distance(GameMain.EditMapScreen.Cam.ScreenToWorld(PlayerInput.MousePosition), Nodes[i]) < 20.0f)
{
GUI.DrawRectangle(spriteBatch, new Rectangle((int)Nodes[i].X - 10, (int)-Nodes[i].Y - 10, 20, 20), Color.Red, false, 0.0f);
@@ -315,7 +315,7 @@ namespace Subsurface.Items.Components
if (selectedNodeIndex!=null && item.IsSelected)
{
MapEntity.DisableSelect = true;
- Nodes[(int)selectedNodeIndex] = Game1.EditMapScreen.Cam.ScreenToWorld(PlayerInput.MousePosition);
+ Nodes[(int)selectedNodeIndex] = GameMain.EditMapScreen.Cam.ScreenToWorld(PlayerInput.MousePosition);
Vector2 pos = Nodes[(int)selectedNodeIndex];
diff --git a/Subsurface/Source/Items/Inventory.cs b/Subsurface/Source/Items/Inventory.cs
index 1cd93ce46..2105a2a05 100644
--- a/Subsurface/Source/Items/Inventory.cs
+++ b/Subsurface/Source/Items/Inventory.cs
@@ -28,8 +28,8 @@ namespace Subsurface
set
{
centerPos = value;
- centerPos.X *= Game1.GraphicsWidth;
- centerPos.Y *= Game1.GraphicsHeight;
+ centerPos.X *= GameMain.GraphicsWidth;
+ centerPos.Y *= GameMain.GraphicsHeight;
}
}
diff --git a/Subsurface/Source/Items/Item.cs b/Subsurface/Source/Items/Item.cs
index f55c6ddc3..ad25fd6e6 100644
--- a/Subsurface/Source/Items/Item.cs
+++ b/Subsurface/Source/Items/Item.cs
@@ -40,6 +40,19 @@ namespace Subsurface
get { return properties; }
}
+ private bool? hasInGameEditableProperties;
+ bool HasInGameEditableProperties
+ {
+ get
+ {
+ if (hasInGameEditableProperties==null)
+ {
+ hasInGameEditableProperties = GetProperties().Count>0;
+ }
+ return (bool)hasInGameEditableProperties;
+ }
+ }
+
public PhysicsBody body;
private float condition;
@@ -194,7 +207,7 @@ namespace Subsurface
public override string ToString()
{
- return (Game1.DebugDraw) ? Name +"(ID: "+ID+")" : Name;
+ return (GameMain.DebugDraw) ? Name +"(ID: "+ID+")" : Name;
}
public List AllPropertyObjects
@@ -622,7 +635,7 @@ namespace Subsurface
private GUIComponent CreateEditingHUD(bool inGame=false)
{
int width = 500;
- int x = Game1.GraphicsWidth/2-width/2, y = 10;
+ int x = GameMain.GraphicsWidth/2-width/2, y = 10;
List editableProperties = inGame ? GetProperties() : GetProperties();
@@ -700,27 +713,29 @@ namespace Subsurface
public virtual void DrawHUD(SpriteBatch spriteBatch, Character character)
{
- if (condition>0.0f)
+ if (condition<=0.0f)
{
- if (editingHUD==null || editingHUD.UserData as Item != this)
+ FixRequirement.DrawHud(spriteBatch, this, character);
+ return;
+ }
+
+ if (!HasInGameEditableProperties)
+ {
+ if (editingHUD == null || editingHUD.UserData as Item != this)
{
editingHUD = CreateEditingHUD(true);
}
- if (editingHUD.Rect.Height>60)
+ if (editingHUD.Rect.Height > 60)
{
editingHUD.Update((float)Physics.step);
editingHUD.Draw(spriteBatch);
}
-
- foreach (ItemComponent ic in components)
- {
- ic.DrawHUD(spriteBatch, character);
- }
}
- else
+
+ foreach (ItemComponent ic in components)
{
- FixRequirement.DrawHud(spriteBatch, this, character);
+ ic.DrawHUD(spriteBatch, character);
}
}
diff --git a/Subsurface/Source/Map/Explosion.cs b/Subsurface/Source/Map/Explosion.cs
index 9b25e84b4..8a25637f4 100644
--- a/Subsurface/Source/Map/Explosion.cs
+++ b/Subsurface/Source/Map/Explosion.cs
@@ -53,15 +53,15 @@ namespace Subsurface
{
Vector2 displayPosition = ConvertUnits.ToDisplayUnits(simPosition);
- Game1.ParticleManager.CreateParticle("shockwave", displayPosition,
+ GameMain.ParticleManager.CreateParticle("shockwave", displayPosition,
Vector2.Zero, 0.0f);
for (int i = 0; i < range * 10; i++)
{
- Game1.ParticleManager.CreateParticle("spark", displayPosition,
+ GameMain.ParticleManager.CreateParticle("spark", displayPosition,
Rand.Vector(Rand.Range(500.0f, 800.0f)), 0.0f);
- Game1.ParticleManager.CreateParticle("explosionfire", displayPosition + Rand.Vector(50f),
+ GameMain.ParticleManager.CreateParticle("explosionfire", displayPosition + Rand.Vector(50f),
Rand.Vector(Rand.Range(50f, 100.0f)), 0.0f);
}
@@ -72,8 +72,8 @@ namespace Subsurface
light = new LightSource(displayPosition, displayRange, Color.LightYellow);
CoroutineManager.StartCoroutine(DimLight());
- float cameraDist = Vector2.Distance(Game1.GameScreen.Cam.Position, displayPosition)/2.0f;
- Game1.GameScreen.Cam.Shake = CameraShake * Math.Max((displayRange - cameraDist)/displayRange, 0.0f);
+ float cameraDist = Vector2.Distance(GameMain.GameScreen.Cam.Position, displayPosition)/2.0f;
+ GameMain.GameScreen.Cam.Shake = CameraShake * Math.Max((displayRange - cameraDist)/displayRange, 0.0f);
if (structureDamage > 0.0f)
{
@@ -111,11 +111,11 @@ namespace Subsurface
float distFactor = 1.0f - dist / range;
- foreach (Limb limb in c.AnimController.limbs)
+ foreach (Limb limb in c.AnimController.Limbs)
{
distFactor = 1.0f - Vector2.Distance(limb.SimPosition, simPosition)/range;
- c.AddDamage(limb.SimPosition, DamageType.None, damage / c.AnimController.limbs.Length * distFactor, 0.0f, stun * distFactor);
+ c.AddDamage(limb.SimPosition, DamageType.None, damage / c.AnimController.Limbs.Length * distFactor, 0.0f, stun * distFactor);
if (force>0.0f)
{
diff --git a/Subsurface/Source/Map/Gap.cs b/Subsurface/Source/Map/Gap.cs
index e442c54ce..dee826e67 100644
--- a/Subsurface/Source/Map/Gap.cs
+++ b/Subsurface/Source/Map/Gap.cs
@@ -260,7 +260,7 @@ namespace Subsurface
{
pos.Y = MathHelper.Clamp(lowerSurface, rect.Y - rect.Height, rect.Y);
- var particle = Game1.ParticleManager.CreateParticle("watersplash",
+ var particle = GameMain.ParticleManager.CreateParticle("watersplash",
new Vector2(pos.X, pos.Y - Rand.Range(0.0f, 10.0f)),
new Vector2(
MathHelper.Clamp(flowForce.X, -5000.0f, 5000.0f) * Rand.Range(0.5f, 0.7f),
@@ -273,7 +273,7 @@ namespace Subsurface
pos.Y = Rand.Range(lowerSurface, rect.Y - rect.Height);
- Game1.ParticleManager.CreateParticle("bubbles", pos, flowForce / 200.0f);
+ GameMain.ParticleManager.CreateParticle("bubbles", pos, flowForce / 200.0f);
}
else
{
@@ -281,12 +281,12 @@ namespace Subsurface
for (int i = 0; i < rect.Width; i += (int)Rand.Range(80, 100))
{
pos.X = Rand.Range(rect.X, rect.X + rect.Width);
- Subsurface.Particles.Particle splash = Game1.ParticleManager.CreateParticle("watersplash", pos,
+ Subsurface.Particles.Particle splash = GameMain.ParticleManager.CreateParticle("watersplash", pos,
new Vector2(0, Math.Max(flowForce.Y * Rand.Range(0.5f, 0.8f), 0.0f)));
if (splash != null) splash.Size = splash.Size * MathHelper.Clamp(rect.Width / 50.0f, 0.8f, 4.0f);
- Game1.ParticleManager.CreateParticle("bubbles", pos, flowForce / 2.0f);
+ GameMain.ParticleManager.CreateParticle("bubbles", pos, flowForce / 2.0f);
}
}
diff --git a/Subsurface/Source/Map/Hull.cs b/Subsurface/Source/Map/Hull.cs
index 441bb0ccb..4fdfcdc36 100644
--- a/Subsurface/Source/Map/Hull.cs
+++ b/Subsurface/Source/Map/Hull.cs
@@ -211,7 +211,7 @@ namespace Subsurface
float maxDelta = Math.Max(Math.Abs(rightDelta[i]), Math.Abs(leftDelta[i]));
if (maxDelta > Rand.Range(0.2f,10.0f))
{
- Game1.ParticleManager.CreateParticle("mist",
+ GameMain.ParticleManager.CreateParticle("mist",
new Vector2(rect.X + WaveWidth * i,surface + waveY[i]),
new Vector2(0.0f, -50.0f));
}
@@ -276,7 +276,7 @@ namespace Subsurface
public override void Draw(SpriteBatch spriteBatch, bool editing)
{
- if (!editing && !Game1.DebugDraw) return;
+ if (!editing && !GameMain.DebugDraw) return;
GUI.DrawRectangle(spriteBatch,
new Vector2(rect.X, -rect.Y),
@@ -313,7 +313,7 @@ namespace Subsurface
//interpolate the position of the rendered surface towards the "target surface"
surface = surface + (surfaceY - surface) / 10.0f;
- Matrix transform = cam.Transform * Matrix.CreateOrthographic(Game1.GraphicsWidth, Game1.GraphicsHeight, -1, 1) * 0.5f;
+ Matrix transform = cam.Transform * Matrix.CreateOrthographic(GameMain.GraphicsWidth, GameMain.GraphicsHeight, -1, 1) * 0.5f;
if (bottom > cam.WorldView.Y || top < cam.WorldView.Y - cam.WorldView.Height) return;
diff --git a/Subsurface/Source/Map/Levels/Level.cs b/Subsurface/Source/Map/Levels/Level.cs
index 1db919d70..7cd839013 100644
--- a/Subsurface/Source/Map/Levels/Level.cs
+++ b/Subsurface/Source/Map/Levels/Level.cs
@@ -102,7 +102,7 @@ namespace Subsurface
if (basicEffect==null)
{
- basicEffect = new BasicEffect(Game1.CurrGraphicsDevice);
+ basicEffect = new BasicEffect(GameMain.CurrGraphicsDevice);
basicEffect.VertexColorEnabled = false;
basicEffect.TextureEnabled = true;
@@ -354,7 +354,7 @@ namespace Subsurface
Debug.WriteLine("Generatelevel: " + sw2.ElapsedMilliseconds + " ms");
sw2.Restart();
- vertexBuffer = new VertexBuffer(Game1.CurrGraphicsDevice, VertexPositionTexture.VertexDeclaration, vertices.Length, BufferUsage.WriteOnly);
+ vertexBuffer = new VertexBuffer(GameMain.CurrGraphicsDevice, VertexPositionTexture.VertexDeclaration, vertices.Length, BufferUsage.WriteOnly);
vertexBuffer.SetData(vertices);
if (mirror)
@@ -639,7 +639,7 @@ int currentTargetIndex = 1;
triangles = MathUtils.TriangulateConvexHull(bodyPoints, cell.Center);
- Body edgeBody = new Body(Game1.World);
+ Body edgeBody = new Body(GameMain.World);
for (int i = 0; i < triangles.Count; i++)
{
@@ -661,7 +661,7 @@ int currentTargetIndex = 1;
for (int i = 0; i < 2; i++ )
{
- Body shaftBody = BodyFactory.CreateRectangle(Game1.World, 100.0f, 10.0f, 5.0f);
+ Body shaftBody = BodyFactory.CreateRectangle(GameMain.World, 100.0f, 10.0f, 5.0f);
shaftBody.BodyType = BodyType.Kinematic;
shaftBody.CollisionCategories = Physics.CollisionWall | Physics.CollisionLevel;
shaftBody.SetTransform(ConvertUnits.ToSimUnits((i==0) ? startPosition : endPosition), 0.0f);
@@ -720,7 +720,7 @@ int currentTargetIndex = 1;
foreach (Character character in Character.CharacterList)
{
- foreach (Limb limb in character.AnimController.limbs)
+ foreach (Limb limb in character.AnimController.Limbs)
{
if (character.AnimController.CurrentHull != null) continue;
@@ -762,7 +762,7 @@ int currentTargetIndex = 1;
{
if (character.AnimController.CurrentHull != null) continue;
- foreach (Limb limb in character.AnimController.limbs)
+ foreach (Limb limb in character.AnimController.Limbs)
{
limb.body.LinearVelocity -= prevVelocity;
}
@@ -949,7 +949,7 @@ int currentTargetIndex = 1;
if (vertices.Length <= 0) return;
basicEffect.World = Matrix.CreateTranslation(new Vector3(Position, 0.0f)) * cam.ShaderTransform
- * Matrix.CreateOrthographic(Game1.GraphicsWidth, Game1.GraphicsHeight, -1, 1) * 0.5f;
+ * Matrix.CreateOrthographic(GameMain.GraphicsWidth, GameMain.GraphicsHeight, -1, 1) * 0.5f;
basicEffect.CurrentTechnique.Passes[0].Apply();
diff --git a/Subsurface/Source/Map/Lights/ConvexHull.cs b/Subsurface/Source/Map/Lights/ConvexHull.cs
index 8f0e39254..4c99cbb60 100644
--- a/Subsurface/Source/Map/Lights/ConvexHull.cs
+++ b/Subsurface/Source/Map/Lights/ConvexHull.cs
@@ -37,12 +37,12 @@ namespace Subsurface.Lights
{
if (shadowEffect == null)
{
- shadowEffect = new BasicEffect(Game1.CurrGraphicsDevice);
+ shadowEffect = new BasicEffect(GameMain.CurrGraphicsDevice);
shadowEffect.VertexColorEnabled = true;
}
if (penumbraEffect == null)
{
- penumbraEffect = new BasicEffect(Game1.CurrGraphicsDevice);
+ penumbraEffect = new BasicEffect(GameMain.CurrGraphicsDevice);
penumbraEffect.TextureEnabled = true;
//shadowEffect.VertexColorEnabled = true;
penumbraEffect.LightingEnabled = false;
@@ -225,7 +225,7 @@ namespace Subsurface.Lights
}
shadowEffect.World = cam.ShaderTransform
- * Matrix.CreateOrthographic(Game1.GraphicsWidth, Game1.GraphicsHeight, -1, 1) * 0.5f;
+ * Matrix.CreateOrthographic(GameMain.GraphicsWidth, GameMain.GraphicsHeight, -1, 1) * 0.5f;
shadowEffect.CurrentTechnique.Passes[0].Apply();
graphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleStrip, shadowVertices, 0, shadowVertexCount * 2 - 2);
diff --git a/Subsurface/Source/Map/Lights/LightManager.cs b/Subsurface/Source/Map/Lights/LightManager.cs
index a270b226c..3d0565ad9 100644
--- a/Subsurface/Source/Map/Lights/LightManager.cs
+++ b/Subsurface/Source/Map/Lights/LightManager.cs
@@ -34,7 +34,7 @@ namespace Subsurface.Lights
var pp = graphics.PresentationParameters;
- lightMap = new RenderTarget2D(graphics, Game1.GraphicsWidth, Game1.GraphicsHeight, false,
+ lightMap = new RenderTarget2D(graphics, GameMain.GraphicsWidth, GameMain.GraphicsHeight, false,
pp.BackBufferFormat, pp.DepthStencilFormat, pp.MultiSampleCount,
RenderTargetUsage.DiscardContents);
diff --git a/Subsurface/Source/Map/Lights/LightSource.cs b/Subsurface/Source/Map/Lights/LightSource.cs
index 3b57c26b3..8798a6e0e 100644
--- a/Subsurface/Source/Map/Lights/LightSource.cs
+++ b/Subsurface/Source/Map/Lights/LightSource.cs
@@ -47,7 +47,7 @@ namespace Subsurface.Lights
texture = lightTexture;
- Game1.LightManager.AddLight(this);
+ GameMain.LightManager.AddLight(this);
}
public void Draw(SpriteBatch spriteBatch)
@@ -59,7 +59,7 @@ namespace Subsurface.Lights
public void Remove()
{
- Game1.LightManager.RemoveLight(this);
+ GameMain.LightManager.RemoveLight(this);
}
}
}
diff --git a/Subsurface/Source/Map/Map.cs b/Subsurface/Source/Map/Map.cs
index 89e5924da..03a75b777 100644
--- a/Subsurface/Source/Map/Map.cs
+++ b/Subsurface/Source/Map/Map.cs
@@ -296,7 +296,7 @@ namespace Subsurface
{
selectedConnection = connection;
selectedLocation = highlightedLocation;
- Game1.LobbyScreen.SelectLocation(highlightedLocation, connection);
+ GameMain.LobbyScreen.SelectLocation(highlightedLocation, connection);
}
}
diff --git a/Subsurface/Source/Map/Structure.cs b/Subsurface/Source/Map/Structure.cs
index d6ef4ee57..fb7e97800 100644
--- a/Subsurface/Source/Map/Structure.cs
+++ b/Subsurface/Source/Map/Structure.cs
@@ -148,7 +148,7 @@ namespace Subsurface
bodies = new List();
//gaps = new List();
- Body newBody = BodyFactory.CreateRectangle(Game1.World,
+ Body newBody = BodyFactory.CreateRectangle(GameMain.World,
ConvertUnits.ToSimUnits(rect.Width),
ConvertUnits.ToSimUnits(rect.Height),
1.5f);
@@ -206,7 +206,7 @@ namespace Subsurface
{
bodies = new List();
- Body newBody = BodyFactory.CreateRectangle(Game1.World,
+ Body newBody = BodyFactory.CreateRectangle(GameMain.World,
ConvertUnits.ToSimUnits(rect.Width * Math.Sqrt(2.0) + Submarine.GridSize.X*3.0f),
ConvertUnits.ToSimUnits(10),
1.5f);
@@ -273,7 +273,7 @@ namespace Subsurface
if (bodies != null)
{
foreach (Body b in bodies)
- Game1.World.RemoveBody(b);
+ GameMain.World.RemoveBody(b);
}
if (convexHull != null) convexHull.Remove();
@@ -381,7 +381,7 @@ namespace Subsurface
{
if (!prefab.HasBody || prefab.IsPlatform) return;
- if (Game1.Client==null)
+ if (GameMain.Client==null)
SetDamage(sectionIndex, sections[sectionIndex].damage + damage);
}
@@ -419,7 +419,7 @@ namespace Subsurface
int i = FindSectionIndex(ConvertUnits.ToDisplayUnits(position));
if (i == -1) return new AttackResult(0.0f, 0.0f);
- Game1.ParticleManager.CreateParticle("dustcloud", SectionPosition(i), 0.0f, 0.0f);
+ GameMain.ParticleManager.CreateParticle("dustcloud", SectionPosition(i), 0.0f, 0.0f);
if (playSound && !SectionHasHole(i))
{
@@ -477,7 +477,7 @@ namespace Subsurface
{
foreach (Body b in bodies)
{
- Game1.World.RemoveBody(b);
+ GameMain.World.RemoveBody(b);
}
bodies.Clear();
@@ -531,7 +531,7 @@ namespace Subsurface
private Body CreateRectBody(Rectangle rect)
{
- Body newBody = BodyFactory.CreateRectangle(Game1.World,
+ Body newBody = BodyFactory.CreateRectangle(GameMain.World,
ConvertUnits.ToSimUnits(rect.Width),
ConvertUnits.ToSimUnits(rect.Height),
1.5f);
diff --git a/Subsurface/Source/Map/StructurePrefab.cs b/Subsurface/Source/Map/StructurePrefab.cs
index 32cd776e8..f4b7af9a4 100644
--- a/Subsurface/Source/Map/StructurePrefab.cs
+++ b/Subsurface/Source/Map/StructurePrefab.cs
@@ -152,8 +152,8 @@ namespace Subsurface
sprite.DrawTiled(spriteBatch, new Vector2(newRect.X, -newRect.Y), new Vector2(newRect.Width, newRect.Height), Color.White);
- GUI.DrawRectangle(spriteBatch, new Rectangle(newRect.X - Game1.GraphicsWidth, -newRect.Y, newRect.Width + Game1.GraphicsWidth*2, newRect.Height), Color.White);
- GUI.DrawRectangle(spriteBatch, new Rectangle(newRect.X, -newRect.Y - Game1.GraphicsHeight, newRect.Width, newRect.Height + Game1.GraphicsHeight*2), Color.White);
+ GUI.DrawRectangle(spriteBatch, new Rectangle(newRect.X - GameMain.GraphicsWidth, -newRect.Y, newRect.Width + GameMain.GraphicsWidth*2, newRect.Height), Color.White);
+ GUI.DrawRectangle(spriteBatch, new Rectangle(newRect.X, -newRect.Y - GameMain.GraphicsHeight, newRect.Width, newRect.Height + GameMain.GraphicsHeight*2), Color.White);
if (PlayerInput.GetMouseState.RightButton == ButtonState.Pressed) selected = null;
}
diff --git a/Subsurface/Source/Map/Submarine.cs b/Subsurface/Source/Map/Submarine.cs
index 596ada878..8ac493396 100644
--- a/Subsurface/Source/Map/Submarine.cs
+++ b/Subsurface/Source/Map/Submarine.cs
@@ -326,7 +326,7 @@ namespace Subsurface
float closestFraction = 1.0f;
Body closestBody = null;
- Game1.World.RayCast((fixture, point, normal, fraction) =>
+ GameMain.World.RayCast((fixture, point, normal, fraction) =>
{
if (fixture == null || fixture.CollisionCategories == Category.None) return -1;
if (ignoredBodies != null && ignoredBodies.Contains(fixture.Body)) return -1;
@@ -363,7 +363,7 @@ namespace Subsurface
return null;
}
- Game1.World.RayCast((fixture, point, normal, fraction) =>
+ GameMain.World.RayCast((fixture, point, normal, fraction) =>
{
if (fixture == null || fixture.CollisionCategories != Physics.CollisionWall) return -1;
@@ -395,7 +395,7 @@ namespace Subsurface
Body foundBody = null;
AABB aabb = new AABB(point, point);
- Game1.World.QueryAABB(p =>
+ GameMain.World.QueryAABB(p =>
{
foundBody = p.Body;
@@ -406,16 +406,16 @@ namespace Subsurface
return foundBody;
}
- public static bool InsideWall(Vector2 point)
- {
- Body foundBody = PickBody(point);
- if (foundBody==null) return false;
+ //public static bool InsideWall(Vector2 point)
+ //{
+ // Body foundBody = PickBody(point);
+ // if (foundBody==null) return false;
- Structure wall = foundBody.UserData as Structure;
- if (wall == null || wall.IsPlatform) return false;
+ // Structure wall = foundBody.UserData as Structure;
+ // if (wall == null || wall.IsPlatform) return false;
- return true;
- }
+ // return true;
+ //}
//movement ----------------------------------------------------
@@ -436,8 +436,10 @@ namespace Subsurface
}
Translate(translateAmount);
+
+ //-------------------------
- ApplyForce(CalculateBuoyancy());
+ Vector2 totalForce = CalculateBuoyancy();
float dragCoefficient = 0.00001f;
@@ -446,8 +448,11 @@ namespace Subsurface
if (speed != Vector2.Zero)
{
- ApplyForce(-Vector2.Normalize(speed) * drag);
+ totalForce += -Vector2.Normalize(speed) * drag;
}
+
+ ApplyForce(totalForce);
+
//hullBodies[0].body.LinearVelocity = -hullBodies[0].body.Position;
//hullBody.SetTransform(Vector2.Zero , 0.0f);
@@ -462,8 +467,8 @@ namespace Subsurface
foreach (GraphEdge ge in collidingCell.edges)
{
Body body = PickBody(
- ConvertUnits.ToSimUnits(ge.point1+ Game1.GameSession.Level.Position),
- ConvertUnits.ToSimUnits(ge.point2 + Game1.GameSession.Level.Position), new List(){collidingCell.body});
+ ConvertUnits.ToSimUnits(ge.point1+ GameMain.GameSession.Level.Position),
+ ConvertUnits.ToSimUnits(ge.point2 + GameMain.GameSession.Level.Position), new List(){collidingCell.body});
if (body == null || body.UserData == null) continue;
Structure structure = body.UserData as Structure;
@@ -471,6 +476,8 @@ namespace Subsurface
structure.AddDamage(lastPickedPosition, DamageType.Blunt, 50.0f, 0.0f, 0.0f, true);
}
+ collidingCell = null;
+
//hullBodies[0].body.SetTransform(Vector2.Zero, 0.0f);
//position = hullBodies[0].body.Position;
@@ -528,15 +535,41 @@ namespace Subsurface
VoronoiCell cell = f2.Body.UserData as VoronoiCell;
if (cell==null) return true;
- Vector2 normal = -contact.Manifold.LocalNormal;
+ Vector2 normal = contact.Manifold.LocalNormal;
Vector2 simSpeed = ConvertUnits.ToSimUnits(speed);
- float impact = -Vector2.Dot(simSpeed, normal);
+ float impact = Vector2.Dot(simSpeed, normal);
- Vector2 u = Vector2.Dot(simSpeed, normal)*normal;
+ Vector2 u = Vector2.Dot(simSpeed, -normal)*-normal;
Vector2 w = simSpeed - u;
+ Vector2 limbForce = normal * impact;
- System.Diagnostics.Debug.WriteLine("IMPACT:"+impact);
+ foreach (Character c in Character.CharacterList)
+ {
+ if (c.AnimController.CurrentHull == null) continue;
+
+ if (impact > 2.0f) c.AnimController.StunTimer = (impact - 2.0f) * 0.1f;
+
+ foreach (Limb limb in c.AnimController.Limbs)
+ {
+ limb.body.ApplyLinearImpulse(limb.Mass * limbForce);
+ }
+ }
+
+ if (impact >= 1.0f)
+ {
+ AmbientSoundManager.PlayDamageSound(DamageSoundType.StructureBlunt, impact * 10.0f, cell.body);
+
+ FixedArray2 worldPoints;
+ contact.GetWorldManifold(out normal, out worldPoints);
+
+
+ AmbientSoundManager.PlayDamageSound(DamageSoundType.StructureBlunt, impact * 10.0f, ConvertUnits.ToDisplayUnits(worldPoints[0]));
+
+ GameMain.GameScreen.Cam.Shake = impact*2.0f;
+ }
+
+ System.Diagnostics.Debug.WriteLine("IMPACT: "+impact + " normal: "+normal+" simspeed: "+simSpeed+" u: "+u+" w: " +w);
if (impact < 4.0f)
{
speed = ConvertUnits.ToDisplayUnits(w * 0.9f - u * 0.2f);
@@ -547,13 +580,6 @@ namespace Subsurface
speed = ConvertUnits.ToDisplayUnits(w * 0.9f + u * 0.5f);
}
- if (contact.Manifold.PointCount >= 1)
- {
- FixedArray2 worldPoints;
- contact.GetWorldManifold(out normal, out worldPoints);
-
- Game1.GameScreen.Cam.Shake = impact;
- }
collisionRigidness = 0.8f;
@@ -828,7 +854,7 @@ namespace Subsurface
var triangulatedVertices = Triangulate.ConvexPartition(shapevertices, TriangulationAlgorithm.Bayazit);
- hullBody = BodyFactory.CreateCompoundPolygon(Game1.World, triangulatedVertices, 5.0f);
+ hullBody = BodyFactory.CreateCompoundPolygon(GameMain.World, triangulatedVertices, 5.0f);
hullBody.BodyType = BodyType.Dynamic;
hullBody.CollisionCategories = Physics.CollisionMisc;
@@ -880,7 +906,7 @@ namespace Subsurface
private void Clear()
{
- if (Game1.GameScreen.Cam != null) Game1.GameScreen.Cam.TargetPos = Vector2.Zero;
+ if (GameMain.GameScreen.Cam != null) GameMain.GameScreen.Cam.TargetPos = Vector2.Zero;
Entity.RemoveAll();
@@ -888,7 +914,7 @@ namespace Subsurface
Ragdoll.list.Clear();
- Game1.World.Clear();
+ GameMain.World.Clear();
}
}
diff --git a/Subsurface/Source/Map/WaterRenderer.cs b/Subsurface/Source/Map/WaterRenderer.cs
index ade28cd35..27718c5ed 100644
--- a/Subsurface/Source/Map/WaterRenderer.cs
+++ b/Subsurface/Source/Map/WaterRenderer.cs
@@ -38,7 +38,7 @@ namespace Subsurface
if (basicEffect==null)
{
- basicEffect = new BasicEffect(Game1.CurrGraphicsDevice);
+ basicEffect = new BasicEffect(GameMain.CurrGraphicsDevice);
basicEffect.VertexColorEnabled = false;
basicEffect.TextureEnabled = true;
@@ -58,7 +58,7 @@ namespace Subsurface
wavePos.X += 0.0001f;
wavePos.Y += 0.0001f;
- spriteBatch.Draw(waterTexture, new Rectangle(0,0,Game1.GraphicsWidth, Game1.GraphicsHeight), Color.White);
+ spriteBatch.Draw(waterTexture, new Rectangle(0,0,GameMain.GraphicsWidth, GameMain.GraphicsHeight), Color.White);
spriteBatch.End();
}
@@ -72,7 +72,7 @@ namespace Subsurface
basicEffect.View = Matrix.Identity;
basicEffect.World = cam.ShaderTransform
- * Matrix.CreateOrthographic(Game1.GraphicsWidth, Game1.GraphicsHeight, -1, 1) * 0.5f;
+ * Matrix.CreateOrthographic(GameMain.GraphicsWidth, GameMain.GraphicsHeight, -1, 1) * 0.5f;
basicEffect.CurrentTechnique.Passes[0].Apply();
diff --git a/Subsurface/Source/Map/WayPoint.cs b/Subsurface/Source/Map/WayPoint.cs
index c4e83ed75..2261bea12 100644
--- a/Subsurface/Source/Map/WayPoint.cs
+++ b/Subsurface/Source/Map/WayPoint.cs
@@ -55,7 +55,7 @@ namespace Subsurface
public override void Draw(SpriteBatch spriteBatch, bool editing)
{
- if (!editing && !Game1.DebugDraw) return;
+ if (!editing && !GameMain.DebugDraw) return;
Point pos = new Point((int)Position.X, (int)Position.Y);
@@ -144,7 +144,7 @@ namespace Subsurface
private GUIComponent CreateEditingHUD(bool inGame = false)
{
int width = 500;
- int x = Game1.GraphicsWidth / 2 - width / 2, y = 10;
+ int x = GameMain.GraphicsWidth / 2 - width / 2, y = 10;
editingHUD = new GUIFrame(new Rectangle(x, y, width, 150), Color.Black * 0.5f);
editingHUD.Padding = new Vector4(10, 10, 0, 0);
diff --git a/Subsurface/Source/Networking/GameClient.cs b/Subsurface/Source/Networking/GameClient.cs
index 0cad9f5d1..81d26c105 100644
--- a/Subsurface/Source/Networking/GameClient.cs
+++ b/Subsurface/Source/Networking/GameClient.cs
@@ -76,9 +76,9 @@ namespace Subsurface.Networking
outmsg.Write((byte)PacketTypes.Login);
outmsg.Write(password);
- outmsg.Write(Game1.Version.ToString());
- outmsg.Write(Game1.SelectedPackage.Name);
- outmsg.Write(Game1.SelectedPackage.MD5hash.Hash);
+ outmsg.Write(GameMain.Version.ToString());
+ outmsg.Write(GameMain.SelectedPackage.Name);
+ outmsg.Write(GameMain.SelectedPackage.MD5hash.Hash);
outmsg.Write(name);
// Connect client, to ip previously requested from user
@@ -124,8 +124,8 @@ namespace Subsurface.Networking
private bool SelectMainMenu(GUIButton button, object obj)
{
Disconnect();
- Game1.NetworkMember = null;
- Game1.MainMenuScreen.Select();
+ GameMain.NetworkMember = null;
+ GameMain.MainMenuScreen.Select();
return true;
}
@@ -159,12 +159,12 @@ namespace Subsurface.Networking
if (packetType == (byte)PacketTypes.LoggedIn)
{
myID = inc.ReadInt32();
- if (inc.ReadBoolean() && Screen.Selected != Game1.GameScreen)
+ if (inc.ReadBoolean() && Screen.Selected != GameMain.GameScreen)
{
new GUIMessageBox("Please wait", "A round is already running. You will have to wait for a new round to start.");
}
- Game1.NetLobbyScreen.ClearPlayers();
+ GameMain.NetLobbyScreen.ClearPlayers();
//add the names of other connected clients to the lobby screen
int existingClients = inc.ReadInt32();
@@ -172,12 +172,12 @@ namespace Subsurface.Networking
{
Client otherClient = new Client(inc.ReadString(), inc.ReadInt32());
- Game1.NetLobbyScreen.AddPlayer(otherClient);
+ GameMain.NetLobbyScreen.AddPlayer(otherClient);
otherClients.Add(otherClient);
}
//add the name of own client to the lobby screen
- Game1.NetLobbyScreen.AddPlayer(new Client(name, myID));
+ GameMain.NetLobbyScreen.AddPlayer(new Client(name, myID));
CanStart = true;
}
@@ -186,7 +186,7 @@ namespace Subsurface.Networking
string msg = inc.ReadString();
DebugConsole.ThrowError(msg);
- Game1.MainMenuScreen.Select();
+ GameMain.MainMenuScreen.Select();
}
break;
case NetIncomingMessageType.StatusChanged:
@@ -229,7 +229,7 @@ namespace Subsurface.Networking
}
else
{
- if (Screen.Selected != Game1.GameScreen) Game1.NetLobbyScreen.Select();
+ if (Screen.Selected != GameMain.GameScreen) GameMain.NetLobbyScreen.Select();
connected = true;
}
@@ -265,7 +265,7 @@ namespace Subsurface.Networking
if (myCharacter.IsDead)
{
Character.Controlled = null;
- Game1.GameScreen.Cam.TargetPos = Vector2.Zero;
+ GameMain.GameScreen.Cam.TargetPos = Vector2.Zero;
}
else if (gameStarted)
{
@@ -327,15 +327,15 @@ namespace Subsurface.Networking
string mapName = inc.ReadString();
string mapHash = inc.ReadString();
- Game1.NetLobbyScreen.TrySelectMap(mapName, mapHash);
+ GameMain.NetLobbyScreen.TrySelectMap(mapName, mapHash);
double durationMinutes = inc.ReadDouble();
TimeSpan duration = new TimeSpan(0,(int)durationMinutes,0);
Rand.SetSyncedSeed(seed);
//int gameModeIndex = inc.ReadInt32();
- Game1.GameSession = new GameSession(Submarine.Loaded, "", Game1.NetLobbyScreen.SelectedMode);
- Game1.GameSession.StartShift(duration, levelSeed);
+ GameMain.GameSession = new GameSession(Submarine.Loaded, "", GameMain.NetLobbyScreen.SelectedMode);
+ GameMain.GameSession.StartShift(duration, levelSeed);
//myCharacter = ReadCharacterData(inc);
//Character.Controlled = myCharacter;
@@ -353,7 +353,7 @@ namespace Subsurface.Networking
gameStarted = true;
- Game1.GameScreen.Select();
+ GameMain.GameScreen.Select();
AddChatMessage("Press TAB to chat", ChatMessageType.Server);
@@ -368,7 +368,7 @@ namespace Subsurface.Networking
Client otherClient = new Client(inc.ReadString(), inc.ReadInt32());
- Game1.NetLobbyScreen.AddPlayer(otherClient);
+ GameMain.NetLobbyScreen.AddPlayer(otherClient);
otherClients.Add(otherClient);
AddChatMessage(otherClient.name + " has joined the server", ChatMessageType.Server);
@@ -378,7 +378,7 @@ namespace Subsurface.Networking
int leavingID = inc.ReadInt32();
AddChatMessage(inc.ReadString(), ChatMessageType.Server);
- Game1.NetLobbyScreen.RemovePlayer(otherClients.Find(c => c.ID==leavingID));
+ GameMain.NetLobbyScreen.RemovePlayer(otherClients.Find(c => c.ID==leavingID));
break;
case (byte)PacketTypes.KickedOut:
@@ -386,7 +386,7 @@ namespace Subsurface.Networking
new GUIMessageBox("KICKED", msg);
- Game1.MainMenuScreen.Select();
+ GameMain.MainMenuScreen.Select();
break;
case (byte)PacketTypes.Chatmessage:
@@ -400,7 +400,7 @@ namespace Subsurface.Networking
break;
case (byte)PacketTypes.UpdateNetLobby:
if (gameStarted) continue;
- Game1.NetLobbyScreen.ReadData(inc);
+ GameMain.NetLobbyScreen.ReadData(inc);
break;
case (byte)PacketTypes.Traitor:
string targetName = inc.ReadString();
@@ -421,7 +421,7 @@ namespace Subsurface.Networking
var messageBox = new GUIMessageBox("The round has ended", endMessage);
Character.Controlled = null;
- Game1.LightManager.LosEnabled = false;
+ GameMain.LightManager.LosEnabled = false;
float endPreviewLength = 10.0f;
@@ -437,7 +437,7 @@ namespace Subsurface.Networking
(float)Math.Cos(camAngle) * (Submarine.Borders.Width / 2.0f),
(float)Math.Sin(camAngle) * (Submarine.Borders.Height / 2.0f)));
- Game1.GameScreen.Cam.TargetPos = offset * 0.8f;
+ GameMain.GameScreen.Cam.TargetPos = offset * 0.8f;
//Game1.GameScreen.Cam.MoveCamera((float)deltaTime);
messageBox.Text = endMessage + "\nReturning to lobby in " + (int)secondsLeft + " s";
@@ -448,9 +448,9 @@ namespace Subsurface.Networking
Submarine.Unload();
- Game1.NetLobbyScreen.Select();
+ GameMain.NetLobbyScreen.Select();
- if (Game1.GameSession!=null) Game1.GameSession.EndShift("");
+ if (GameMain.GameSession!=null) GameMain.GameSession.EndShift("");
myCharacter = null;
@@ -462,10 +462,10 @@ namespace Subsurface.Networking
{
base.Draw(spriteBatch);
- if (!Game1.DebugDraw) return;
+ if (!GameMain.DebugDraw) return;
int width = 200, height = 300;
- int x = Game1.GraphicsWidth - width, y = (int)(Game1.GraphicsHeight * 0.3f);
+ int x = GameMain.GraphicsWidth - width, y = (int)(GameMain.GraphicsHeight * 0.3f);
GUI.DrawRectangle(spriteBatch, new Rectangle(x, y, width, height), Color.Black * 0.7f, true);
spriteBatch.DrawString(GUI.Font, "Network statistics:", new Vector2(x + 10, y + 10), Color.White);
@@ -497,7 +497,7 @@ namespace Subsurface.Networking
msg.Write(characterInfo.Gender == Gender.Male);
msg.Write(characterInfo.HeadSpriteId);
- var jobPreferences = Game1.NetLobbyScreen.JobPreferences;
+ var jobPreferences = GameMain.NetLobbyScreen.JobPreferences;
int count = Math.Min(jobPreferences.Count, 3);
msg.Write(count);
for (int i = 0; i < count; i++ )
diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs
index bf64c528c..2cfc95e23 100644
--- a/Subsurface/Source/Networking/GameServer.cs
+++ b/Subsurface/Source/Networking/GameServer.cs
@@ -36,7 +36,7 @@ namespace Subsurface.Networking
public GameServer(string name, int port, bool isPublic = false, string password = "", bool attemptUPnP = false, int maxPlayers = 10)
{
- var endRoundButton = new GUIButton(new Rectangle(Game1.GraphicsWidth - 290, 20, 150, 25), "End round", Alignment.TopLeft, GUI.Style, inGameHUD);
+ var endRoundButton = new GUIButton(new Rectangle(GameMain.GraphicsWidth - 290, 20, 150, 25), "End round", Alignment.TopLeft, GUI.Style, inGameHUD);
endRoundButton.OnClicked = EndButtonHit;
this.name = name;
@@ -116,7 +116,7 @@ namespace Subsurface.Networking
DebugConsole.NewMessage("Server started", Color.Green);
- Game1.NetLobbyScreen.Select();
+ GameMain.NetLobbyScreen.Select();
started = true;
yield return CoroutineStatus.Success;
}
@@ -312,21 +312,21 @@ namespace Subsurface.Networking
break;
}
- else if (version != Game1.Version.ToString())
+ else if (version != GameMain.Version.ToString())
{
- inc.SenderConnection.Deny("Subsurface version " + Game1.Version + " required to connect to the server (Your version: " + version + ")");
+ inc.SenderConnection.Deny("Subsurface version " + GameMain.Version + " required to connect to the server (Your version: " + version + ")");
DebugConsole.NewMessage("Connection error - wrong game version", Color.Red);
break;
}
- else if (packageName != Game1.SelectedPackage.Name)
+ else if (packageName != GameMain.SelectedPackage.Name)
{
- inc.SenderConnection.Deny("Your content package ("+packageName+") doesn't match the server's version (" + Game1.SelectedPackage.Name + ")");
+ inc.SenderConnection.Deny("Your content package ("+packageName+") doesn't match the server's version (" + GameMain.SelectedPackage.Name + ")");
DebugConsole.NewMessage("Connection error - wrong content package name", Color.Red);
break;
}
- else if (packageHash != Game1.SelectedPackage.MD5hash.Hash)
+ else if (packageHash != GameMain.SelectedPackage.MD5hash.Hash)
{
- inc.SenderConnection.Deny("Your content package (MD5: " + packageHash + ") doesn't match the server's version (MD5: " + Game1.SelectedPackage.MD5hash.Hash + ")");
+ inc.SenderConnection.Deny("Your content package (MD5: " + packageHash + ") doesn't match the server's version (MD5: " + GameMain.SelectedPackage.MD5hash.Hash + ")");
DebugConsole.NewMessage("Connection error - wrong content package hash", Color.Red);
break;
}
@@ -365,10 +365,10 @@ namespace Subsurface.Networking
if (sender == null) break;
- if (sender.version != Game1.Version.ToString())
+ if (sender.version != GameMain.Version.ToString())
{
DisconnectClient(sender, sender.name+" was unable to connect to the server (nonmatching game version)",
- "Subsurface version " + Game1.Version + " required to connect to the server (Your version: " + sender.version + ")");
+ "Subsurface version " + GameMain.Version + " required to connect to the server (Your version: " + sender.version + ")");
}
else if (connectedClients.Find(x => x.name == sender.name && x != sender)!=null)
{
@@ -379,7 +379,7 @@ namespace Subsurface.Networking
{
//AssignJobs();
- Game1.NetLobbyScreen.AddPlayer(sender);
+ GameMain.NetLobbyScreen.AddPlayer(sender);
// Notify the client that they have logged in
outmsg = server.CreateMessage();
@@ -538,11 +538,11 @@ namespace Subsurface.Networking
public bool StartGame(GUIButton button, object obj)
{
- Submarine selectedMap = Game1.NetLobbyScreen.SelectedMap as Submarine;
+ Submarine selectedMap = GameMain.NetLobbyScreen.SelectedMap as Submarine;
if (selectedMap == null)
{
- Game1.NetLobbyScreen.SubList.Flash();
+ GameMain.NetLobbyScreen.SubList.Flash();
return false;
}
@@ -552,8 +552,8 @@ namespace Subsurface.Networking
int seed = DateTime.Now.Millisecond;
Rand.SetSyncedSeed(seed);
- Game1.GameSession = new GameSession(selectedMap, "", Game1.NetLobbyScreen.SelectedMode);
- Game1.GameSession.StartShift(Game1.NetLobbyScreen.GameDuration, Game1.NetLobbyScreen.LevelSeed);
+ GameMain.GameSession = new GameSession(selectedMap, "", GameMain.NetLobbyScreen.SelectedMode);
+ GameMain.GameSession.StartShift(GameMain.NetLobbyScreen.GameDuration, GameMain.NetLobbyScreen.LevelSeed);
//EventManager.SelectEvent(Game1.netLobbyScreen.SelectedEvent);
List characterInfos = new List();
@@ -573,7 +573,7 @@ namespace Subsurface.Networking
if (characterInfo != null)
{
- characterInfo.Job = new Job(Game1.NetLobbyScreen.JobPreferences[0]);
+ characterInfo.Job = new Job(GameMain.NetLobbyScreen.JobPreferences[0]);
characterInfos.Add(characterInfo);
}
@@ -604,12 +604,12 @@ namespace Subsurface.Networking
msg.Write(seed);
- msg.Write(Game1.NetLobbyScreen.LevelSeed);
+ msg.Write(GameMain.NetLobbyScreen.LevelSeed);
- msg.Write(Game1.NetLobbyScreen.SelectedMap.Name);
- msg.Write(Game1.NetLobbyScreen.SelectedMap.MD5Hash.Hash);
+ msg.Write(GameMain.NetLobbyScreen.SelectedMap.Name);
+ msg.Write(GameMain.NetLobbyScreen.SelectedMap.MD5Hash.Hash);
- msg.Write(Game1.NetLobbyScreen.GameDuration.TotalMinutes);
+ msg.Write(GameMain.NetLobbyScreen.GameDuration.TotalMinutes);
msg.Write((myCharacter == null) ? connectedClients.Count : connectedClients.Count+1);
foreach (Client client in connectedClients)
@@ -628,9 +628,9 @@ namespace Subsurface.Networking
gameStarted = true;
- Game1.GameScreen.Cam.TargetPos = Vector2.Zero;
+ GameMain.GameScreen.Cam.TargetPos = Vector2.Zero;
- Game1.GameScreen.Select();
+ GameMain.GameScreen.Select();
CreateCrewFrame(crew);
@@ -639,7 +639,7 @@ namespace Subsurface.Networking
private bool EndButtonHit(GUIButton button, object obj)
{
- Game1.GameSession.gameMode.End("Server admin has ended the round");
+ GameMain.GameSession.gameMode.End("Server admin has ended the round");
return true;
}
@@ -651,8 +651,8 @@ namespace Subsurface.Networking
Character.Controlled = null;
- Game1.GameScreen.Cam.TargetPos = Vector2.Zero;
- Game1.LightManager.LosEnabled = false;
+ GameMain.GameScreen.Cam.TargetPos = Vector2.Zero;
+ GameMain.LightManager.LosEnabled = false;
gameStarted = false;
@@ -688,7 +688,7 @@ namespace Subsurface.Networking
(float)Math.Cos(camAngle) * (Submarine.Borders.Width / 2.0f),
(float)Math.Sin(camAngle) * (Submarine.Borders.Height / 2.0f)));
- Game1.GameScreen.Cam.TargetPos = offset * 0.8f;
+ GameMain.GameScreen.Cam.TargetPos = offset * 0.8f;
//Game1.GameScreen.Cam.MoveCamera((float)deltaTime);
messageBox.Text = endMessage + "\nReturning to lobby in " + (int)secondsLeft + " s";
@@ -698,7 +698,7 @@ namespace Subsurface.Networking
Submarine.Unload();
- Game1.NetLobbyScreen.Select();
+ GameMain.NetLobbyScreen.Select();
yield return CoroutineStatus.Success;
@@ -731,7 +731,7 @@ namespace Subsurface.Networking
outmsg.Write(client.ID);
outmsg.Write(msg);
- Game1.NetLobbyScreen.RemovePlayer(client);
+ GameMain.NetLobbyScreen.RemovePlayer(client);
if (server.Connections.Count > 0)
{
@@ -775,10 +775,10 @@ namespace Subsurface.Networking
{
base.Draw(spriteBatch);
- if (!Game1.DebugDraw) return;
+ if (!GameMain.DebugDraw) return;
int width = 200, height = 300;
- int x = Game1.GraphicsWidth - width, y = (int)(Game1.GraphicsHeight*0.3f);
+ int x = GameMain.GraphicsWidth - width, y = (int)(GameMain.GraphicsHeight*0.3f);
GUI.DrawRectangle(spriteBatch, new Rectangle(x,y,width,height), Color.Black*0.7f, true);
spriteBatch.DrawString(GUI.Font, "Network statistics:", new Vector2(x+10, y+10), Color.White);
@@ -809,7 +809,7 @@ namespace Subsurface.Networking
{
NetOutgoingMessage msg = server.CreateMessage();
msg.Write((byte)PacketTypes.UpdateNetLobby);
- Game1.NetLobbyScreen.WriteData(msg);
+ GameMain.NetLobbyScreen.WriteData(msg);
if (server.Connections.Count > 0)
{
@@ -912,7 +912,7 @@ namespace Subsurface.Networking
if (characterInfo!=null)
{
- assignedClientCount[JobPrefab.List.FindIndex(jp => jp == Game1.NetLobbyScreen.JobPreferences[0])]=1;
+ assignedClientCount[JobPrefab.List.FindIndex(jp => jp == GameMain.NetLobbyScreen.JobPreferences[0])]=1;
}
//if any of the players has chosen a job that is Always Allowed, give them that job
diff --git a/Subsurface/Source/Networking/NetConfig.cs b/Subsurface/Source/Networking/NetConfig.cs
index f2cd6231f..e1d19a6c7 100644
--- a/Subsurface/Source/Networking/NetConfig.cs
+++ b/Subsurface/Source/Networking/NetConfig.cs
@@ -12,7 +12,7 @@ namespace Subsurface.Networking
//UpdateEntity networkevents aren't sent to clients if they're further than this from the entity
public const float UpdateEntityDistance = 2500.0f;
- public static string MasterServerUrl = Game1.Config.MasterServerUrl;
+ public static string MasterServerUrl = GameMain.Config.MasterServerUrl;
//if a ragdoll is further than this from the correct position, teleport it there
//(in sim units)
diff --git a/Subsurface/Source/Networking/NetworkEvent.cs b/Subsurface/Source/Networking/NetworkEvent.cs
index 3a4081653..047357f60 100644
--- a/Subsurface/Source/Networking/NetworkEvent.cs
+++ b/Subsurface/Source/Networking/NetworkEvent.cs
@@ -59,11 +59,11 @@ namespace Subsurface.Networking
{
if (isClient)
{
- if (Game1.Server != null && Game1.Server.Character == null) return;
+ if (GameMain.Server != null && GameMain.Server.Character == null) return;
}
else
{
- if (Game1.Server == null) return;
+ if (GameMain.Server == null) return;
}
eventType = type;
diff --git a/Subsurface/Source/Networking/NetworkMember.cs b/Subsurface/Source/Networking/NetworkMember.cs
index e4366b75d..6a7a3c99d 100644
--- a/Subsurface/Source/Networking/NetworkMember.cs
+++ b/Subsurface/Source/Networking/NetworkMember.cs
@@ -93,8 +93,8 @@ namespace Subsurface.Networking
int width = 350, height = 100;
chatBox = new GUIListBox(new Rectangle(
- Game1.GraphicsWidth - 20 - width,
- Game1.GraphicsHeight - 40 - 25 - height,
+ GameMain.GraphicsWidth - 20 - width,
+ GameMain.GraphicsHeight - 40 - 25 - height,
width, height),
Color.White * 0.5f, GUI.Style, inGameHUD);
@@ -112,7 +112,7 @@ namespace Subsurface.Networking
{
int width = 500, height = 400;
- crewFrame = new GUIFrame(new Rectangle(Game1.GraphicsWidth / 2 - width / 2, Game1.GraphicsHeight / 2 - height / 2, width, height), GUI.Style);
+ crewFrame = new GUIFrame(new Rectangle(GameMain.GraphicsWidth / 2 - width / 2, GameMain.GraphicsHeight / 2 - height / 2, width, height), GUI.Style);
crewFrame.Padding = new Vector4(10.0f, 10.0f, 10.0f, 10.0f);
GUIListBox crewList = new GUIListBox(new Rectangle(0, 0, 200, 300), Color.White * 0.7f, GUI.Style, crewFrame);
@@ -135,7 +135,7 @@ namespace Subsurface.Networking
null, frame);
textBlock.Padding = new Vector4(5.0f, 0.0f, 5.0f, 0.0f);
- new GUIImage(new Rectangle(-10, -10, 0, 0), character.AnimController.limbs[0].sprite, Alignment.Left, frame);
+ new GUIImage(new Rectangle(-10, -10, 0, 0), character.AnimController.Limbs[0].sprite, Alignment.Left, frame);
}
var closeButton = new GUIButton(new Rectangle(0,0, 80, 20), "Close", Alignment.BottomCenter, GUI.Style, crewFrame);
@@ -171,7 +171,7 @@ namespace Subsurface.Networking
{
if (string.IsNullOrWhiteSpace(message)) return false;
- SendChatMessage(Game1.NetworkMember.Name + ": " + message);
+ SendChatMessage(GameMain.NetworkMember.Name + ": " + message);
textBox.Deselect();
@@ -180,7 +180,7 @@ namespace Subsurface.Networking
public void AddChatMessage(string message, ChatMessageType messageType)
{
- Game1.NetLobbyScreen.NewChatMessage(message, messageColor[(int)messageType]);
+ GameMain.NetLobbyScreen.NewChatMessage(message, messageColor[(int)messageType]);
while (chatBox.CountChildren > 20)
{
diff --git a/Subsurface/Source/Particles/ParticleEmitter.cs b/Subsurface/Source/Particles/ParticleEmitter.cs
index c66370a36..d2e3cea6b 100644
--- a/Subsurface/Source/Particles/ParticleEmitter.cs
+++ b/Subsurface/Source/Particles/ParticleEmitter.cs
@@ -21,7 +21,7 @@ namespace Subsurface.Particles
{
Name = element.Name.ToString();
- particlePrefab = Game1.ParticleManager.FindPrefab(ToolBox.GetAttributeString(element, "particle", ""));
+ particlePrefab = GameMain.ParticleManager.FindPrefab(ToolBox.GetAttributeString(element, "particle", ""));
if (element.Attribute("startrotation") == null)
{
@@ -58,7 +58,7 @@ namespace Subsurface.Particles
float angle = Rand.Range(AngleMin, AngleMax);
Vector2 velocity = new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle)) * Rand.Range(VelocityMin, VelocityMax);
- Game1.ParticleManager.CreateParticle(particlePrefab, position, velocity);
+ GameMain.ParticleManager.CreateParticle(particlePrefab, position, velocity);
}
}
}
diff --git a/Subsurface/Source/Physics/PhysicsBody.cs b/Subsurface/Source/Physics/PhysicsBody.cs
index 47172e0fc..828f3b699 100644
--- a/Subsurface/Source/Physics/PhysicsBody.cs
+++ b/Subsurface/Source/Physics/PhysicsBody.cs
@@ -197,17 +197,17 @@ namespace Subsurface
if (width != 0.0f && height != 0.0f)
{
- body = BodyFactory.CreateRectangle(Game1.World, width, height, density);
+ body = BodyFactory.CreateRectangle(GameMain.World, width, height, density);
bodyShape = Shape.Rectangle;
}
else if (radius != 0.0f && height != 0.0f)
{
- body = BodyFactory.CreateCapsule(Game1.World, height, radius, density);
+ body = BodyFactory.CreateCapsule(GameMain.World, height, radius, density);
bodyShape = Shape.Capsule;
}
else if (radius != 0.0f)
{
- body = BodyFactory.CreateCircle(Game1.World, radius, density);
+ body = BodyFactory.CreateCircle(GameMain.World, radius, density);
bodyShape = Shape.Circle;
}
else
@@ -346,7 +346,7 @@ namespace Subsurface
public void Remove()
{
list.Remove(this);
- Game1.World.RemoveBody(body);
+ GameMain.World.RemoveBody(body);
}
diff --git a/Subsurface/Source/Program.cs b/Subsurface/Source/Program.cs
index 8b88b8480..c0c6c7dec 100644
--- a/Subsurface/Source/Program.cs
+++ b/Subsurface/Source/Program.cs
@@ -26,7 +26,7 @@ namespace Subsurface
[STAThread]
static void Main()
{
- using (var game = new Game1())
+ using (var game = new GameMain())
{
#if !DEBUG
try
@@ -44,7 +44,7 @@ namespace Subsurface
}
}
- static void CrashDump(Game1 game, string filePath, Exception exception)
+ static void CrashDump(GameMain game, string filePath, Exception exception)
{
StreamWriter sw = new StreamWriter(filePath);
@@ -54,19 +54,19 @@ namespace Subsurface
sb.AppendLine("Subsurface seems to have crashed. Sorry for the inconvenience! ");
sb.AppendLine("If you'd like to help fix the bug that caused the crash, please send this file to the developers on the Undertow Games forums.");
sb.AppendLine("\n");
- sb.AppendLine("Subsurface version " + Game1.Version);
- sb.AppendLine("Selected content package: "+Game1.SelectedPackage.Name);
+ sb.AppendLine("Subsurface version " + GameMain.Version);
+ sb.AppendLine("Selected content package: " + GameMain.SelectedPackage.Name);
sb.AppendLine("Level seed: "+ ((Level.Loaded == null) ? "no level loaded" : Level.Loaded.Seed));
sb.AppendLine("Loaded submarine: " + ((Submarine.Loaded == null) ? "none" : Submarine.Loaded.Name +" ("+Submarine.Loaded.MD5Hash+")"));
sb.AppendLine("Selected screen: " + Screen.Selected.ToString());
- if (Game1.Server != null)
+ if (GameMain.Server != null)
{
- sb.AppendLine("Server (" +(Game1.Server.GameStarted ? "Round had started)" : "Round hand't been started)"));
+ sb.AppendLine("Server (" + (GameMain.Server.GameStarted ? "Round had started)" : "Round hand't been started)"));
}
- else if (Game1.Client != null)
+ else if (GameMain.Client != null)
{
- sb.AppendLine("Client (" +(Game1.Client.GameStarted ? "Round had started)" : "Round hand't been started)"));
+ sb.AppendLine("Client (" + (GameMain.Client.GameStarted ? "Round had started)" : "Round hand't been started)"));
}
sb.AppendLine("\n");
diff --git a/Subsurface/Source/Screens/EditCharacterScreen.cs b/Subsurface/Source/Screens/EditCharacterScreen.cs
index 5f1746521..adcc4fda8 100644
--- a/Subsurface/Source/Screens/EditCharacterScreen.cs
+++ b/Subsurface/Source/Screens/EditCharacterScreen.cs
@@ -39,11 +39,11 @@ namespace Subsurface
{
base.Select();
- Game1.DebugDraw = true;
+ GameMain.DebugDraw = true;
cam = new Camera();
- GUIpanel = new GUIFrame(new Rectangle(0, 0, 300, Game1.GraphicsHeight), GUI.Style);
+ GUIpanel = new GUIFrame(new Rectangle(0, 0, 300, GameMain.GraphicsHeight), GUI.Style);
GUIpanel.Padding = new Vector4(10.0f, 10.0f, 10.0f, 10.0f);
physicsButton = new GUIButton(new Rectangle(0, 50, 200, 25), "Physics", Alignment.Left, GUI.Style, GUIpanel);
@@ -66,7 +66,7 @@ namespace Subsurface
if (editingCharacter != Character.CharacterList[0]) UpdateLimbLists(Character.CharacterList[0]);
editingCharacter = Character.CharacterList[0];
- Vector2 camPos = editingCharacter.AnimController.limbs[0].body.SimPosition;
+ Vector2 camPos = editingCharacter.AnimController.Limbs[0].body.SimPosition;
camPos = ConvertUnits.ToDisplayUnits(camPos);
camPos.Y = -camPos.Y;
cam.TargetPos = camPos;
@@ -83,7 +83,7 @@ namespace Subsurface
textures = new List();
texturePaths = new List();
- foreach (Limb limb in editingCharacter.AnimController.limbs)
+ foreach (Limb limb in editingCharacter.AnimController.Limbs)
{
if (texturePaths.Contains(limb.sprite.FilePath)) continue;
textures.Add(limb.sprite.Texture);
@@ -112,7 +112,7 @@ namespace Subsurface
Ragdoll.UpdateAll((float)Physics.step);
- Game1.World.Step((float)Physics.step);
+ GameMain.World.Step((float)Physics.step);
Physics.accumulator -= Physics.step;
}
@@ -169,10 +169,10 @@ namespace Subsurface
int x = 0, y = 0;
for (int i = 0; i < textures.Count; i++ )
{
- x = Game1.GraphicsWidth - textures[i].Width;
+ x = GameMain.GraphicsWidth - textures[i].Width;
spriteBatch.Draw(textures[i], new Vector2(x, y), Color.White);
- foreach (Limb limb in editingCharacter.AnimController.limbs)
+ foreach (Limb limb in editingCharacter.AnimController.Limbs)
{
if (limb.sprite.FilePath != texturePaths[i]) continue;
Rectangle rect = limb.sprite.SourceRect;
@@ -219,7 +219,7 @@ namespace Subsurface
private void UpdateLimbLists(Character character)
{
limbList.ClearChildren();
- foreach (Limb limb in character.AnimController.limbs)
+ foreach (Limb limb in character.AnimController.Limbs)
{
GUITextBlock textBlock = new GUITextBlock(
new Rectangle(0,0,0,25),
diff --git a/Subsurface/Source/Screens/EditMapScreen.cs b/Subsurface/Source/Screens/EditMapScreen.cs
index 8a50933b9..340fb111e 100644
--- a/Subsurface/Source/Screens/EditMapScreen.cs
+++ b/Subsurface/Source/Screens/EditMapScreen.cs
@@ -41,7 +41,7 @@ namespace Subsurface
private string GetPhysicsBodyCount()
{
- return "Physics bodies: " + Game1.World.BodyList.Count;
+ return "Physics bodies: " + GameMain.World.BodyList.Count;
}
@@ -52,7 +52,7 @@ namespace Subsurface
selectedTab = -1;
- GUIpanel = new GUIFrame(new Rectangle(0, 0, 150, Game1.GraphicsHeight), GUI.Style);
+ GUIpanel = new GUIFrame(new Rectangle(0, 0, 150, GameMain.GraphicsHeight), GUI.Style);
GUIpanel.Padding = new Vector4(10.0f, 10.0f, 10.0f, 10.0f);
//GUIListBox constructionList = new GUIListBox(new Rectangle(0, 0, 0, 300), Color.White * 0.7f, GUIpanel);
//constructionList.OnSelected = MapEntityPrefab.SelectPrefab;
@@ -84,13 +84,13 @@ namespace Subsurface
GUItabs = new GUIComponent[2];
int width = 400, height = 400;
- GUItabs[0] = new GUIFrame(new Rectangle(Game1.GraphicsWidth/2-width/2, Game1.GraphicsHeight/2-height/2, width, height), GUI.Style);
+ GUItabs[0] = new GUIFrame(new Rectangle(GameMain.GraphicsWidth/2-width/2, GameMain.GraphicsHeight/2-height/2, width, height), GUI.Style);
GUItabs[0].Padding = new Vector4(10.0f, 10.0f, 10.0f, 10.0f);
GUIListBox itemList = new GUIListBox(new Rectangle(0, 0, 0, 0), Color.White * 0.7f, GUI.Style, GUItabs[0]);
itemList.OnSelected = SelectPrefab;
itemList.CheckSelected = MapEntityPrefab.GetSelected;
- GUItabs[1] = new GUIFrame(new Rectangle(Game1.GraphicsWidth / 2 - width / 2, Game1.GraphicsHeight / 2 - height / 2, width, height), GUI.Style);
+ GUItabs[1] = new GUIFrame(new Rectangle(GameMain.GraphicsWidth / 2 - width / 2, GameMain.GraphicsHeight / 2 - height / 2, width, height), GUI.Style);
GUItabs[1].Padding = new Vector4(10.0f, 10.0f, 10.0f, 10.0f);
GUIListBox structureList = new GUIListBox(new Rectangle(0, 0, 0, 300), Color.White * 0.7f, GUI.Style, GUItabs[1]);
structureList.OnSelected = SelectPrefab;
@@ -143,7 +143,7 @@ namespace Subsurface
{
dummyCharacter.Remove();
dummyCharacter = null;
- Game1.World.ProcessChanges();
+ GameMain.World.ProcessChanges();
}
}
@@ -153,7 +153,7 @@ namespace Subsurface
dummyCharacter = new Character(Character.HumanConfigFile, Vector2.Zero);
Character.Controlled = dummyCharacter;
- Game1.World.ProcessChanges();
+ GameMain.World.ProcessChanges();
}
private bool SelectTab(GUIButton button, object obj)
@@ -218,7 +218,7 @@ namespace Subsurface
if (dummyCharacter.SelectedConstruction==null)
{
Vector2 mouseSimPos = FarseerPhysics.ConvertUnits.ToSimUnits(cam.ScreenToWorld(PlayerInput.MousePosition));
- foreach (Limb limb in dummyCharacter.AnimController.limbs)
+ foreach (Limb limb in dummyCharacter.AnimController.Limbs)
{
limb.body.SetTransform(mouseSimPos, 0.0f);
}
diff --git a/Subsurface/Source/Screens/GameScreen.cs b/Subsurface/Source/Screens/GameScreen.cs
index 24f7a7e3a..5c7d5f1f4 100644
--- a/Subsurface/Source/Screens/GameScreen.cs
+++ b/Subsurface/Source/Screens/GameScreen.cs
@@ -28,9 +28,9 @@ namespace Subsurface
cam = new Camera();
cam.Translate(new Vector2(-10.0f, 50.0f));
- renderTarget = new RenderTarget2D(graphics, Game1.GraphicsWidth, Game1.GraphicsHeight);
- renderTargetWater = new RenderTarget2D(graphics, Game1.GraphicsWidth, Game1.GraphicsHeight);
- renderTargetAir = new RenderTarget2D(graphics, Game1.GraphicsWidth, Game1.GraphicsHeight);
+ renderTarget = new RenderTarget2D(graphics, GameMain.GraphicsWidth, GameMain.GraphicsHeight);
+ renderTargetWater = new RenderTarget2D(graphics, GameMain.GraphicsWidth, GameMain.GraphicsHeight);
+ renderTargetAir = new RenderTarget2D(graphics, GameMain.GraphicsWidth, GameMain.GraphicsHeight);
background = new Sprite("Content/Map/background.png", Vector2.Zero);
backgroundTop = new Sprite("Content/Map/background2.png", Vector2.Zero);
@@ -70,14 +70,14 @@ namespace Subsurface
// Game1.GameSession.Submarine.ApplyForce(targetMovement * 100000.0f);
//}
- if (Game1.GameSession!=null) Game1.GameSession.Update((float)deltaTime);
+ if (GameMain.GameSession!=null) GameMain.GameSession.Update((float)deltaTime);
//EventManager.Update(gameTime);
Character.UpdateAll(cam, (float)deltaTime);
BackgroundSpriteManager.Update((float)deltaTime);
- Game1.ParticleManager.Update((float)deltaTime);
+ GameMain.ParticleManager.Update((float)deltaTime);
StatusEffect.UpdateAll((float)deltaTime);
@@ -98,9 +98,9 @@ namespace Subsurface
Ragdoll.UpdateAll((float)Physics.step);
- if (Game1.GameSession != null && Game1.GameSession.Level != null) Game1.GameSession.Submarine.Update((float)Physics.step);
+ if (GameMain.GameSession != null && GameMain.GameSession.Level != null) GameMain.GameSession.Submarine.Update((float)Physics.step);
- Game1.World.Step((float)Physics.step);
+ GameMain.World.Step((float)Physics.step);
Level.AfterWorldStep();
@@ -132,7 +132,7 @@ namespace Subsurface
}
}
- if (Game1.GameSession != null) Game1.GameSession.Draw(spriteBatch);
+ if (GameMain.GameSession != null) GameMain.GameSession.Draw(spriteBatch);
GUI.Draw((float)deltaTime, spriteBatch, cam);
@@ -143,7 +143,7 @@ namespace Subsurface
public void DrawMap(GraphicsDevice graphics, SpriteBatch spriteBatch)
{
- Game1.LightManager.DrawLightmap(graphics, spriteBatch, cam);
+ GameMain.LightManager.DrawLightmap(graphics, spriteBatch, cam);
//----------------------------------------------------------------------------------------
//1. draw the background, characters and the parts of the submarine that are behind them
@@ -167,14 +167,14 @@ namespace Subsurface
background.SourceRect = new Rectangle((int)backgroundPos.X, (int)Math.Max(backgroundPos.Y, 0), 1024, 1024);
background.DrawTiled(spriteBatch,
(backgroundPos.Y < 0) ? new Vector2(0.0f, -backgroundPos.Y) : Vector2.Zero,
- new Vector2(Game1.GraphicsWidth, 1024 - backgroundPos.Y),
+ new Vector2(GameMain.GraphicsWidth, 1024 - backgroundPos.Y),
Vector2.Zero, Color.White);
}
if (backgroundPos.Y < 0)
{
backgroundTop.SourceRect = new Rectangle((int)backgroundPos.X, (int)backgroundPos.Y, 1024, (int)Math.Min(-backgroundPos.Y, 1024));
- backgroundTop.DrawTiled(spriteBatch, Vector2.Zero, new Vector2(Game1.GraphicsWidth, Math.Min(-backgroundPos.Y, Game1.GraphicsHeight)),
+ backgroundTop.DrawTiled(spriteBatch, Vector2.Zero, new Vector2(GameMain.GraphicsWidth, Math.Min(-backgroundPos.Y, GameMain.GraphicsHeight)),
Vector2.Zero, Color.White);
}
}
@@ -208,7 +208,7 @@ namespace Subsurface
spriteBatch.Begin(SpriteSortMode.Immediate,
BlendState.AlphaBlend);
- spriteBatch.Draw(renderTarget, new Rectangle(0, 0, Game1.GraphicsWidth, Game1.GraphicsHeight), new Color(0.75f, 0.8f, 0.9f, 1.0f));
+ spriteBatch.Draw(renderTarget, new Rectangle(0, 0, GameMain.GraphicsWidth, GameMain.GraphicsHeight), new Color(0.75f, 0.8f, 0.9f, 1.0f));
spriteBatch.End();
BlendState blend = new BlendState();
@@ -219,7 +219,7 @@ namespace Subsurface
BlendState.AlphaBlend,
null, DepthStencilState.DepthRead, null, null,
cam.Transform);
- Game1.ParticleManager.Draw(spriteBatch, true);
+ GameMain.ParticleManager.Draw(spriteBatch, true);
spriteBatch.End();
@@ -229,7 +229,7 @@ namespace Subsurface
graphics.SetRenderTarget(renderTargetAir);
spriteBatch.Begin(SpriteSortMode.Immediate,
BlendState.AlphaBlend);
- spriteBatch.Draw(renderTarget, new Rectangle(0, 0, Game1.GraphicsWidth, Game1.GraphicsHeight), Color.White);
+ spriteBatch.Draw(renderTarget, new Rectangle(0, 0, GameMain.GraphicsWidth, GameMain.GraphicsHeight), Color.White);
spriteBatch.End();
spriteBatch.Begin(SpriteSortMode.Immediate,
@@ -237,7 +237,7 @@ namespace Subsurface
null, DepthStencilState.DepthRead, null, null,
cam.Transform);
- Game1.ParticleManager.Draw(spriteBatch, false);
+ GameMain.ParticleManager.Draw(spriteBatch, false);
spriteBatch.End();
graphics.SetRenderTarget(null);
@@ -257,17 +257,17 @@ namespace Subsurface
Hull.renderer.Render(graphics, cam, renderTargetAir, Cam.ShaderTransform);
- if (Game1.GameSession != null && Game1.GameSession.Level != null)
+ if (GameMain.GameSession != null && GameMain.GameSession.Level != null)
{
- Game1.GameSession.Level.Render(graphics, cam);
- Game1.GameSession.Level.SetObserverPosition(cam.WorldViewCenter);
+ GameMain.GameSession.Level.Render(graphics, cam);
+ GameMain.GameSession.Level.SetObserverPosition(cam.WorldViewCenter);
}
- if (Game1.LightManager.LightingEnabled)
+ if (GameMain.LightManager.LightingEnabled)
{
//multiply scene with lightmap
spriteBatch.Begin(SpriteSortMode.Immediate, CustomBlendStates.Multiplicative);
- spriteBatch.Draw(Game1.LightManager.LightMap, Vector2.Zero, Color.White);
+ spriteBatch.Draw(GameMain.LightManager.LightMap, Vector2.Zero, Color.White);
spriteBatch.End();
}
@@ -284,15 +284,15 @@ namespace Subsurface
foreach (Character c in Character.CharacterList) c.DrawFront(spriteBatch);
- if (Game1.GameSession != null && Game1.GameSession.Level != null)
+ if (GameMain.GameSession != null && GameMain.GameSession.Level != null)
{
- Game1.GameSession.Level.Draw(spriteBatch);
+ GameMain.GameSession.Level.Draw(spriteBatch);
//Game1.GameSession.Level.SetObserverPosition(cam.WorldViewCenter);
}
spriteBatch.End();
- Game1.LightManager.DrawLOS(graphics, cam, LightManager.ViewPos);
+ GameMain.LightManager.DrawLOS(graphics, cam, LightManager.ViewPos);
}
}
diff --git a/Subsurface/Source/Screens/LobbyScreen.cs b/Subsurface/Source/Screens/LobbyScreen.cs
index 3a12e1cc9..f084175e1 100644
--- a/Subsurface/Source/Screens/LobbyScreen.cs
+++ b/Subsurface/Source/Screens/LobbyScreen.cs
@@ -58,7 +58,7 @@ namespace Subsurface
Rectangle panelRect = new Rectangle(
40, 40,
180,
- Game1.GraphicsHeight - 80);
+ GameMain.GraphicsHeight - 80);
leftPanel = new GUIFrame(panelRect, GUI.Style);
//leftPanel.Padding = GUI.style.smallPadding;
@@ -92,8 +92,8 @@ namespace Subsurface
panelRect = new Rectangle(
panelRect.X + panelRect.Width + 40,
40,
- Game1.GraphicsWidth - panelRect.Width - 120,
- Game1.GraphicsHeight - 80);
+ GameMain.GraphicsWidth - panelRect.Width - 120,
+ GameMain.GraphicsHeight - 80);
rightPanel = new GUIFrame[4];
@@ -147,7 +147,7 @@ namespace Subsurface
{
base.Select();
- gameMode = Game1.GameSession.gameMode as SinglePlayerMode;
+ gameMode = GameMain.GameSession.gameMode as SinglePlayerMode;
selectedRightPanel = (int)PanelTab.Crew;
@@ -210,9 +210,9 @@ namespace Subsurface
new GUITextBlock(new Rectangle(0,0,0,0), location.Name, Color.Transparent, Color.White, Alignment.TopLeft, null, locationPanel);
- if (Game1.GameSession.Map.SelectedConnection != null && Game1.GameSession.Map.SelectedConnection.Quest != null)
+ if (GameMain.GameSession.Map.SelectedConnection != null && GameMain.GameSession.Map.SelectedConnection.Quest != null)
{
- var quest = Game1.GameSession.Map.SelectedConnection.Quest;
+ var quest = GameMain.GameSession.Map.SelectedConnection.Quest;
new GUITextBlock(new Rectangle(0, 40, 0, 20), "Quest: "+quest.Name, Color.Transparent, Color.White, Alignment.TopLeft, null, locationPanel);
@@ -343,7 +343,7 @@ namespace Subsurface
graphics.Clear(Color.CornflowerBlue);
- Game1.GameScreen.DrawMap(graphics, spriteBatch);
+ GameMain.GameScreen.DrawMap(graphics, spriteBatch);
spriteBatch.Begin();
@@ -353,16 +353,16 @@ namespace Subsurface
if (selectedRightPanel == (int)PanelTab.Map)
{
- Game1.GameSession.Map.Draw(spriteBatch, new Rectangle(
+ GameMain.GameSession.Map.Draw(spriteBatch, new Rectangle(
rightPanel[selectedRightPanel].Rect.X + 20,
rightPanel[selectedRightPanel].Rect.Y + 20,
rightPanel[selectedRightPanel].Rect.Width - 280,
rightPanel[selectedRightPanel].Rect.Height - 40), mapZoom);
}
- if (rightPanel[(int)selectedRightPanel].UserData as Location != Game1.GameSession.Map.CurrentLocation)
+ if (rightPanel[(int)selectedRightPanel].UserData as Location != GameMain.GameSession.Map.CurrentLocation)
{
- UpdateLocationTab(Game1.GameSession.Map.CurrentLocation);
+ UpdateLocationTab(GameMain.GameSession.Map.CurrentLocation);
}
GUI.Draw((float)deltaTime, spriteBatch, null);
@@ -380,7 +380,7 @@ namespace Subsurface
private string GetMoney()
{
- return "Money: " + ((Game1.GameSession == null) ? "" : gameMode.CrewManager.Money.ToString());
+ return "Money: " + ((GameMain.GameSession == null) ? "" : gameMode.CrewManager.Money.ToString());
}
private bool SelectCharacter(GUIComponent component, object selection)
@@ -416,9 +416,9 @@ namespace Subsurface
CharacterInfo characterInfo = selection as CharacterInfo;
if (characterInfo == null) return false;
- if (gameMode.TryHireCharacter(Game1.GameSession.Map.CurrentLocation.HireManager, characterInfo))
+ if (gameMode.TryHireCharacter(GameMain.GameSession.Map.CurrentLocation.HireManager, characterInfo))
{
- UpdateLocationTab(Game1.GameSession.Map.CurrentLocation);
+ UpdateLocationTab(GameMain.GameSession.Map.CurrentLocation);
}
@@ -428,15 +428,15 @@ namespace Subsurface
private bool StartShift(GUIButton button, object selection)
{
- Game1.GameSession.StartShift(TimeSpan.Zero, selectedLevel, false);
- Game1.GameScreen.Select();
+ GameMain.GameSession.StartShift(TimeSpan.Zero, selectedLevel, false);
+ GameMain.GameScreen.Select();
return true;
}
public bool QuitToMainMenu(GUIButton button, object selection)
{
- Game1.MainMenuScreen.Select();
+ GameMain.MainMenuScreen.Select();
return true;
}
}
diff --git a/Subsurface/Source/Screens/MainMenu.cs b/Subsurface/Source/Screens/MainMenu.cs
index b19936f7c..29531d7c0 100644
--- a/Subsurface/Source/Screens/MainMenu.cs
+++ b/Subsurface/Source/Screens/MainMenu.cs
@@ -23,11 +23,11 @@ namespace Subsurface
private GUITextBox serverNameBox, portBox, passwordBox, maxPlayersBox;
private GUITickBox isPublicBox, useUpnpBox;
- private Game1 game;
+ private GameMain game;
int selectedTab;
- public MainMenuScreen(Game1 game)
+ public MainMenuScreen(GameMain game)
{
menuTabs = new GUIFrame[Enum.GetValues(typeof(Tabs)).Length+1];
@@ -37,7 +37,7 @@ namespace Subsurface
//menuTabs[(int)Tabs.Main].Padding = GUI.style.smallPadding;
Rectangle panelRect = new Rectangle(
- Game1.GraphicsWidth / 2 - 250,
+ GameMain.GraphicsWidth / 2 - 250,
buttonsTab.Rect.Y,
500, 360);
@@ -136,7 +136,7 @@ namespace Subsurface
minusPlayersBox.OnClicked = ChangeMaxPlayers;
new GUITextBlock(new Rectangle(0, 150, 0, 30), "Password (optional):", GUI.Style, Alignment.TopLeft, Alignment.Left, menuTabs[(int)Tabs.HostServer]);
- passwordBox = new GUITextBox(new Rectangle(160, 170, 200, 30), null, null, Alignment.TopLeft, Alignment.Left, GUI.Style, menuTabs[(int)Tabs.HostServer]);
+ passwordBox = new GUITextBox(new Rectangle(160, 150, 200, 30), null, null, Alignment.TopLeft, Alignment.Left, GUI.Style, menuTabs[(int)Tabs.HostServer]);
isPublicBox = new GUITickBox(new Rectangle(10, 200, 20, 20), "Public server", Alignment.TopLeft, menuTabs[(int)Tabs.HostServer]);
isPublicBox.ToolTip = "Public servers are shown in the list of available servers in the ''Join Server'' -tab";
@@ -189,7 +189,7 @@ namespace Subsurface
private bool JoinServerClicked(GUIButton button, object obj)
{
- Game1.ServerListScreen.Select();
+ GameMain.ServerListScreen.Select();
return true;
}
@@ -223,9 +223,9 @@ namespace Subsurface
return false;
}
- Game1.NetworkMember = new GameServer(name, port, isPublicBox.Selected, passwordBox.Text, useUpnpBox.Selected, int.Parse(maxPlayersBox.Text));
+ GameMain.NetworkMember = new GameServer(name, port, isPublicBox.Selected, passwordBox.Text, useUpnpBox.Selected, int.Parse(maxPlayersBox.Text));
- Game1.NetLobbyScreen.IsServer = true;
+ GameMain.NetLobbyScreen.IsServer = true;
//Game1.NetLobbyScreen.Select();
return true;
}
@@ -340,10 +340,10 @@ namespace Subsurface
buttonsTab.Update((float)deltaTime);
if (selectedTab>0) menuTabs[selectedTab].Update((float)deltaTime);
- Game1.TitleScreen.TitlePosition =
- Vector2.Lerp(Game1.TitleScreen.TitlePosition, new Vector2(
- Game1.TitleScreen.TitleSize.X / 2.0f * Game1.TitleScreen.Scale + 30.0f,
- Game1.TitleScreen.TitleSize.Y / 2.0f * Game1.TitleScreen.Scale + 30.0f),
+ GameMain.TitleScreen.TitlePosition =
+ Vector2.Lerp(GameMain.TitleScreen.TitlePosition, new Vector2(
+ GameMain.TitleScreen.TitleSize.X / 2.0f * GameMain.TitleScreen.Scale + 30.0f,
+ GameMain.TitleScreen.TitleSize.Y / 2.0f * GameMain.TitleScreen.Scale + 30.0f),
0.1f);
}
@@ -352,7 +352,7 @@ namespace Subsurface
{
graphics.Clear(Color.CornflowerBlue);
- Game1.TitleScreen.Draw(spriteBatch, graphics, -1.0f, (float)deltaTime);
+ GameMain.TitleScreen.Draw(spriteBatch, graphics, -1.0f, (float)deltaTime);
//Game1.GameScreen.DrawMap(graphics, spriteBatch);
@@ -363,7 +363,7 @@ namespace Subsurface
GUI.Draw((float)deltaTime, spriteBatch, null);
- spriteBatch.DrawString(GUI.Font, "Subsurface v"+Game1.Version, new Vector2(10, Game1.GraphicsHeight-20), Color.White);
+ spriteBatch.DrawString(GUI.Font, "Subsurface v"+GameMain.Version, new Vector2(10, GameMain.GraphicsHeight-20), Color.White);
spriteBatch.End();
}
@@ -383,10 +383,10 @@ namespace Subsurface
Submarine selectedSub = mapList.SelectedData as Submarine;
if (selectedSub == null) return false;
- Game1.GameSession = new GameSession(selectedSub, saveNameBox.Text, GameModePreset.list.Find(gm => gm.Name == "Single Player"));
- (Game1.GameSession.gameMode as SinglePlayerMode).GenerateMap(seedBox.Text);
+ GameMain.GameSession = new GameSession(selectedSub, saveNameBox.Text, GameModePreset.list.Find(gm => gm.Name == "Single Player"));
+ (GameMain.GameSession.gameMode as SinglePlayerMode).GenerateMap(seedBox.Text);
- Game1.LobbyScreen.Select();
+ GameMain.LobbyScreen.Select();
new GUIMessageBox("Welcome to Subsurface!", "Please note that the single player mode is very unfinished at the moment; "+
"for example, the NPCs don't have an AI yet and there are only a couple of different quests to complete. The multiplayer "+
@@ -420,7 +420,7 @@ namespace Subsurface
}
- Game1.LobbyScreen.Select();
+ GameMain.LobbyScreen.Select();
return true;
}
diff --git a/Subsurface/Source/Screens/NetLobbyScreen.cs b/Subsurface/Source/Screens/NetLobbyScreen.cs
index dbd362f72..b50245723 100644
--- a/Subsurface/Source/Screens/NetLobbyScreen.cs
+++ b/Subsurface/Source/Screens/NetLobbyScreen.cs
@@ -105,8 +105,8 @@ namespace Subsurface
public NetLobbyScreen()
{
- int width = Math.Min(Game1.GraphicsWidth - 80, 1500);
- int height = Math.Min(Game1.GraphicsHeight - 80, 800);
+ int width = Math.Min(GameMain.GraphicsWidth - 80, 1500);
+ int height = Math.Min(GameMain.GraphicsHeight - 80, 800);
Rectangle panelRect = new Rectangle(0,0,width,height);
@@ -232,7 +232,7 @@ namespace Subsurface
var serverName = new GUITextBox(new Rectangle(0, 0, 200, 20), null, null, Alignment.TopLeft, Alignment.TopLeft, GUI.Style, infoFrame);
serverName.TextGetter = GetServerName;
- serverName.Enabled = Game1.Server != null;
+ serverName.Enabled = GameMain.Server != null;
serverName.OnTextChanged = ChangeServerName;
serverMessage = new GUITextBox(new Rectangle(0, 30, 360, 70), null, null, Alignment.TopLeft, Alignment.TopLeft, GUI.Style, infoFrame);
@@ -248,50 +248,50 @@ namespace Subsurface
public override void Select()
{
- Game1.LightManager.LosEnabled = false;
+ GameMain.LightManager.LosEnabled = false;
//infoFrame.ClearChildren();
textBox.Select();
Character.Controlled = null;
- Game1.GameScreen.Cam.TargetPos = Vector2.Zero;
+ GameMain.GameScreen.Cam.TargetPos = Vector2.Zero;
- subList.Enabled = Game1.Server != null;
- modeList.Enabled = Game1.Server != null;
- durationBar.Enabled = Game1.Server != null;
- seedBox.Enabled = Game1.Server != null;
- serverMessage.Enabled = Game1.Server != null;
- ServerName = (Game1.Server==null) ? "Server" : Game1.Server.Name;
+ subList.Enabled = GameMain.Server != null;
+ modeList.Enabled = GameMain.Server != null;
+ durationBar.Enabled = GameMain.Server != null;
+ seedBox.Enabled = GameMain.Server != null;
+ serverMessage.Enabled = GameMain.Server != null;
+ ServerName = (GameMain.Server==null) ? "Server" : GameMain.Server.Name;
modeList.OnSelected += SelectMode;
infoFrame.RemoveChild(infoFrame.children.Find(c => c.UserData as string == "startButton"));
- if (IsServer && Game1.Server != null)
+ if (IsServer && GameMain.Server != null)
{
GUIButton startButton = new GUIButton(new Rectangle(0, 0, 200, 30), "Start", Alignment.BottomRight, GUI.Style, infoFrame);
- startButton.OnClicked = Game1.Server.StartGame;
+ startButton.OnClicked = GameMain.Server.StartGame;
startButton.UserData = "startButton";
//mapList.OnSelected = new GUIListBox.OnSelectedHandler(Game1.server.UpdateNetLobby);
- modeList.OnSelected += Game1.Server.UpdateNetLobby;
- durationBar.OnMoved = Game1.Server.UpdateNetLobby;
+ modeList.OnSelected += GameMain.Server.UpdateNetLobby;
+ durationBar.OnMoved = GameMain.Server.UpdateNetLobby;
if (subList.CountChildren > 0 && subList.Selected == null) subList.Select(-1);
if (GameModePreset.list.Count > 0 && modeList.Selected == null) modeList.Select(-1);
if (infoFrame.children.Find(c => c.UserData as string == "playyourself") == null)
{
- var playYourself = new GUITickBox(new Rectangle(0, -20, 20, 20), "Play yourself", Alignment.TopLeft, playerFrame);
- playYourself.Selected = Game1.Server.CharacterInfo != null;
+ var playYourself = new GUITickBox(new Rectangle(-30, -30, 20, 20), "Play yourself", Alignment.TopLeft, playerFrame);
+ playYourself.Selected = GameMain.Server.CharacterInfo != null;
playYourself.OnSelected = TogglePlayYourself;
playYourself.UserData = "playyourself";
}
}
else
{
- UpdatePlayerFrame(Game1.Client.CharacterInfo);
+ UpdatePlayerFrame(GameMain.Client.CharacterInfo);
}
base.Select();
@@ -303,10 +303,10 @@ namespace Subsurface
{
playerFrame.ClearChildren();
- if (IsServer && Game1.Server != null)
+ if (IsServer && GameMain.Server != null)
{
var playYourself = new GUITickBox(new Rectangle(0, -20, 20, 20), "Play yourself", Alignment.TopLeft, playerFrame);
- playYourself.Selected = Game1.Server.CharacterInfo != null;
+ playYourself.Selected = GameMain.Server.CharacterInfo != null;
playYourself.OnSelected = TogglePlayYourself;
playYourself.UserData = "playyourself";
}
@@ -364,17 +364,17 @@ namespace Subsurface
GUITickBox tickBox = obj as GUITickBox;
if (tickBox.Selected)
{
- Game1.Server.CharacterInfo = new CharacterInfo(Character.HumanConfigFile, Game1.Server.Name);
- UpdatePlayerFrame(Game1.Server.CharacterInfo);
+ GameMain.Server.CharacterInfo = new CharacterInfo(Character.HumanConfigFile, GameMain.Server.Name);
+ UpdatePlayerFrame(GameMain.Server.CharacterInfo);
}
else
{
playerFrame.ClearChildren();
- if (IsServer && Game1.Server != null)
+ if (IsServer && GameMain.Server != null)
{
- Game1.Server.CharacterInfo = null;
- Game1.Server.Character = null;
+ GameMain.Server.CharacterInfo = null;
+ GameMain.Server.Character = null;
var playYourself = new GUITickBox(new Rectangle(0, -20, 20, 20), "Play yourself", Alignment.TopLeft, playerFrame);
playYourself.OnSelected = TogglePlayYourself;
@@ -385,7 +385,7 @@ namespace Subsurface
private bool SelectMap(GUIComponent component, object obj)
{
- if (Game1.Server != null) Game1.Server.UpdateNetLobby(obj);
+ if (GameMain.Server != null) GameMain.Server.UpdateNetLobby(obj);
Submarine sub = (Submarine)obj;
@@ -399,18 +399,18 @@ namespace Subsurface
public bool ChangeServerName(GUITextBox textBox, string text)
{
- if (Game1.Server == null) return false;
+ if (GameMain.Server == null) return false;
ServerName = text;
- Game1.Server.UpdateNetLobby(null, null);
+ GameMain.Server.UpdateNetLobby(null, null);
return true;
}
public bool UpdateServerMessage(GUITextBox textBox, string text)
{
- if (Game1.Server == null) return false;
+ if (GameMain.Server == null) return false;
ServerMessage = text;
- Game1.Server.UpdateNetLobby(null, null);
+ GameMain.Server.UpdateNetLobby(null, null);
return true;
}
@@ -456,8 +456,8 @@ namespace Subsurface
pos += offset * 0.8f;
- Game1.GameScreen.Cam.TargetPos = pos;
- Game1.GameScreen.Cam.MoveCamera((float)deltaTime);
+ GameMain.GameScreen.Cam.TargetPos = pos;
+ GameMain.GameScreen.Cam.MoveCamera((float)deltaTime);
menu.Update((float)deltaTime);
@@ -468,7 +468,7 @@ namespace Subsurface
{
graphics.Clear(Color.CornflowerBlue);
- Game1.GameScreen.DrawMap(graphics, spriteBatch);
+ GameMain.GameScreen.DrawMap(graphics, spriteBatch);
spriteBatch.Begin();
@@ -507,7 +507,7 @@ namespace Subsurface
public bool StartGame(object obj)
{
- Game1.Server.StartGame(null, obj);
+ GameMain.Server.StartGame(null, obj);
return true;
}
@@ -515,7 +515,7 @@ namespace Subsurface
{
if (String.IsNullOrEmpty(message)) return false;
- Game1.NetworkMember.SendChatMessage(Game1.NetworkMember.Name + ": " + message);
+ GameMain.NetworkMember.SendChatMessage(GameMain.NetworkMember.Name + ": " + message);
return true;
}
@@ -534,14 +534,14 @@ namespace Subsurface
try
{
Gender gender = (Gender)obj;
- Game1.Client.CharacterInfo.Gender = gender;
- Game1.Client.SendCharacterData();
+ GameMain.Client.CharacterInfo.Gender = gender;
+ GameMain.Client.SendCharacterData();
//CreatePreviewCharacter();
}
catch {}
- UpdatePreviewPlayer(Game1.Client.CharacterInfo);
+ UpdatePreviewPlayer(GameMain.Client.CharacterInfo);
return true;
}
@@ -570,7 +570,7 @@ namespace Subsurface
//textBox.Text = LevelSeed;
//textBox.Selected = false;
- if (Game1.Server != null) Game1.Server.UpdateNetLobby(null);
+ if (GameMain.Server != null) GameMain.Server.UpdateNetLobby(null);
return true;
}
@@ -579,13 +579,13 @@ namespace Subsurface
{
if (string.IsNullOrEmpty(newName)) return false;
- if (Game1.NetworkMember == null || Game1.NetworkMember.CharacterInfo == null) return true;
+ if (GameMain.NetworkMember == null || GameMain.NetworkMember.CharacterInfo == null) return true;
- Game1.NetworkMember.CharacterInfo.Name = newName;
- if (Game1.Client != null)
+ GameMain.NetworkMember.CharacterInfo.Name = newName;
+ if (GameMain.Client != null)
{
- Game1.Client.Name = newName;
- Game1.Client.SendCharacterData();
+ GameMain.Client.Name = newName;
+ GameMain.Client.SendCharacterData();
}
textBox.Text = newName;
@@ -628,7 +628,7 @@ namespace Subsurface
(listBox.children[i] as GUITextBlock).Text = (i+1) + ". " + (listBox.children[i].UserData as JobPrefab).Name;
}
- if (Game1.Client!=null) Game1.Client.SendCharacterData();
+ if (GameMain.Client!=null) GameMain.Client.SendCharacterData();
}
public bool TrySelectMap(string mapName, string md5Hash)
diff --git a/Subsurface/Source/Screens/ServerListScreen.cs b/Subsurface/Source/Screens/ServerListScreen.cs
index d2e0beddc..08322336b 100644
--- a/Subsurface/Source/Screens/ServerListScreen.cs
+++ b/Subsurface/Source/Screens/ServerListScreen.cs
@@ -36,8 +36,8 @@ namespace Subsurface
public ServerListScreen()
{
- int width = Math.Min(Game1.GraphicsWidth - 160, 1000);
- int height = Math.Min(Game1.GraphicsHeight - 160, 700);
+ int width = Math.Min(GameMain.GraphicsWidth - 160, 1000);
+ int height = Math.Min(GameMain.GraphicsHeight - 160, 700);
Rectangle panelRect = new Rectangle(0, 0, width, height);
@@ -78,7 +78,7 @@ namespace Subsurface
GUIButton button = new GUIButton(new Rectangle(-20, -20, 100, 30), "Back", Alignment.TopLeft, GUI.Style, menu);
button.UserData = 0;
- button.OnClicked = Game1.MainMenuScreen.SelectTab;
+ button.OnClicked = GameMain.MainMenuScreen.SelectTab;
refreshDisableTimer = DateTime.Now;
@@ -302,8 +302,8 @@ namespace Subsurface
selectedPassword = passwordBox.Text;
}
- Game1.NetworkMember = new GameClient(clientNameBox.Text);
- Game1.Client.ConnectToServer(ip, selectedPassword);
+ GameMain.NetworkMember = new GameClient(clientNameBox.Text);
+ GameMain.Client.ConnectToServer(ip, selectedPassword);
yield return CoroutineStatus.Success;
}
@@ -312,7 +312,7 @@ namespace Subsurface
{
graphics.Clear(Color.CornflowerBlue);
- Game1.GameScreen.DrawMap(graphics, spriteBatch);
+ GameMain.GameScreen.DrawMap(graphics, spriteBatch);
spriteBatch.Begin();
diff --git a/Subsurface/Source/Sounds/AmbientSoundManager.cs b/Subsurface/Source/Sounds/AmbientSoundManager.cs
index 14a0e0725..2d7d719fa 100644
--- a/Subsurface/Source/Sounds/AmbientSoundManager.cs
+++ b/Subsurface/Source/Sounds/AmbientSoundManager.cs
@@ -170,7 +170,7 @@ namespace Subsurface
if (animController.HeadInWater)
{
ambienceVolume = 0.5f;
- ambienceVolume += animController.limbs[0].LinearVelocity.Length();
+ ambienceVolume += animController.Limbs[0].LinearVelocity.Length();
lowpassHFGain = 0.2f;
}
@@ -185,9 +185,9 @@ namespace Subsurface
if (musicClips == null) return;
Task criticalTask = null;
- if (Game1.GameSession!=null)
+ if (GameMain.GameSession!=null)
{
- foreach (Task task in Game1.GameSession.taskManager.Tasks)
+ foreach (Task task in GameMain.GameSession.taskManager.Tasks)
{
if (!task.IsStarted) continue;
if (criticalTask == null || task.Priority > criticalTask.Priority)
diff --git a/Subsurface/Source/Utils/SaveUtil.cs b/Subsurface/Source/Utils/SaveUtil.cs
index a824054a4..140cde774 100644
--- a/Subsurface/Source/Utils/SaveUtil.cs
+++ b/Subsurface/Source/Utils/SaveUtil.cs
@@ -38,7 +38,7 @@ namespace Subsurface
}
else
{
- File.Copy(Game1.GameSession.Submarine.FilePath, tempPath + "\\map.gz");
+ File.Copy(GameMain.GameSession.Submarine.FilePath, tempPath + "\\map.gz");
}
}
catch (Exception e)
@@ -48,7 +48,7 @@ namespace Subsurface
try
{
- Game1.GameSession.Save(tempPath + "\\gamesession.xml");
+ GameMain.GameSession.Save(tempPath + "\\gamesession.xml");
}
catch (Exception e)
@@ -76,7 +76,7 @@ namespace Subsurface
DecompressToDirectory(filePath, tempPath, null);
Submarine selectedMap = Submarine.Load(tempPath +"\\map.gz");
- Game1.GameSession = new GameSession(selectedMap, fileName, tempPath + "\\gamesession.xml");
+ GameMain.GameSession = new GameSession(selectedMap, fileName, tempPath + "\\gamesession.xml");
//Directory.Delete(tempPath, true);
}
diff --git a/Subsurface/Source/Utils/UpdaterUtil.cs b/Subsurface/Source/Utils/UpdaterUtil.cs
index 368e72d93..5541efa7d 100644
--- a/Subsurface/Source/Utils/UpdaterUtil.cs
+++ b/Subsurface/Source/Utils/UpdaterUtil.cs
@@ -177,5 +177,31 @@ namespace Subsurface
}
}
}
+
+
+ public static void CleanOldFiles()
+ {
+ string currentDir = Directory.GetCurrentDirectory();
+
+ string[] files = Directory.GetFiles(currentDir, "*", SearchOption.AllDirectories);
+
+ foreach (string file in files)
+ {
+ if (file.Length<4 || file.Substring(0,4)!="OLD_") continue;
+
+ System.Diagnostics.Debug.WriteLine("deleting file " + file);
+
+ try
+ {
+ File.Delete(currentDir + "\\" + file);
+ }
+
+ catch (Exception e)
+ {
+ System.Diagnostics.Debug.WriteLine("Could not delete file ''" + file + "'' (" + e.Message + ")");
+ continue;
+ }
+ }
+ }
}
}
diff --git a/Subsurface/Subsurface.csproj b/Subsurface/Subsurface.csproj
index 3e1cfe070..6faae5fab 100644
--- a/Subsurface/Subsurface.csproj
+++ b/Subsurface/Subsurface.csproj
@@ -57,6 +57,7 @@
+
diff --git a/Subsurface_Solution.sln b/Subsurface_Solution.sln
index 1f5084252..895b06759 100644
--- a/Subsurface_Solution.sln
+++ b/Subsurface_Solution.sln
@@ -17,6 +17,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lidgren.Network", "Lidgren.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Launcher2", "Launcher2\Launcher2.csproj", "{251AAFE1-F24B-4837-9128-9D04FCBFD528}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CrashReporter", "CrashReporter\CrashReporter.csproj", "{6BE950CD-9A34-49C9-939A-786AC89C287E}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Android|Any CPU = Android|Any CPU
@@ -345,6 +347,51 @@ Global
{251AAFE1-F24B-4837-9128-9D04FCBFD528}.Windows8|Mixed Platforms.Build.0 = Release|x86
{251AAFE1-F24B-4837-9128-9D04FCBFD528}.Windows8|x86.ActiveCfg = Release|x86
{251AAFE1-F24B-4837-9128-9D04FCBFD528}.Windows8|x86.Build.0 = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Android|Any CPU.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Android|Mixed Platforms.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Android|Mixed Platforms.Build.0 = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Android|x86.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Android|x86.Build.0 = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Debug|x86.ActiveCfg = Debug|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Debug|x86.Build.0 = Debug|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.iOS|Any CPU.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.iOS|Mixed Platforms.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.iOS|Mixed Platforms.Build.0 = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.iOS|x86.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.iOS|x86.Build.0 = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Linux|Any CPU.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Linux|Mixed Platforms.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Linux|Mixed Platforms.Build.0 = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Linux|x86.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Linux|x86.Build.0 = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.OSX|Any CPU.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.OSX|Mixed Platforms.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.OSX|Mixed Platforms.Build.0 = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.OSX|x86.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.OSX|x86.Build.0 = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.PSM|Any CPU.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.PSM|Mixed Platforms.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.PSM|Mixed Platforms.Build.0 = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.PSM|x86.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.PSM|x86.Build.0 = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Release|Any CPU.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Release|Mixed Platforms.Build.0 = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Release|x86.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Release|x86.Build.0 = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Windows|Any CPU.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Windows|Mixed Platforms.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Windows|Mixed Platforms.Build.0 = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Windows|x86.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Windows|x86.Build.0 = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Windows8|Any CPU.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Windows8|Mixed Platforms.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Windows8|Mixed Platforms.Build.0 = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Windows8|x86.ActiveCfg = Release|x86
+ {6BE950CD-9A34-49C9-939A-786AC89C287E}.Windows8|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Subsurface_Solution.v12.suo b/Subsurface_Solution.v12.suo
index d99e1b1d3..29bc80cc3 100644
Binary files a/Subsurface_Solution.v12.suo and b/Subsurface_Solution.v12.suo differ