WIP CrashReporter, misc refactoring

This commit is contained in:
Regalis
2015-09-19 15:14:47 +03:00
parent 16bf562837
commit f6966f06c3
86 changed files with 1616 additions and 631 deletions
+15
View File
@@ -0,0 +1,15 @@
#----------------------------- Global Properties ----------------------------#
/outputDir:bin/Windows
/intermediateDir:obj/Windows
/platform:Windows
/config:
/profile:Reach
/compress:False
#-------------------------------- References --------------------------------#
#---------------------------------- Content ---------------------------------#
+73
View File
@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{6BE950CD-9A34-49C9-939A-786AC89C287E}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CrashReporter</RootNamespace>
<AssemblyName>CrashReporter</AssemblyName>
<FileAlignment>512</FileAlignment>
<MonoGamePlatform>Windows</MonoGamePlatform>
<MonoGameContentBuilderExe>
</MonoGameContentBuilderExe>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Windows\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;WINDOWS</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Windows\Release\</OutputPath>
<DefineConstants>TRACE;WINDOWS</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>Icon.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Compile Include="ReporterMain.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<Reference Include="MonoGame.Framework">
<HintPath>$(MSBuildProgramFiles32)\MonoGame\v3.0\Assemblies\Windows\MonoGame.Framework.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Content Include="Icon.ico" />
</ItemGroup>
<ItemGroup>
<MonoGameContentReference Include="Content\Content.mgcb" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Subsurface\Subsurface.csproj">
<Project>{008c0f83-e914-4966-9135-ea885059edd8}</Project>
<Name>Subsurface</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath)\MonoGame\v3.0\MonoGame.Content.Builder.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

+26
View File
@@ -0,0 +1,26 @@
#region Using Statements
using System;
using System.Collections.Generic;
using System.Linq;
#endregion
namespace CrashReporter
{
#if WINDOWS || LINUX
/// <summary>
/// The main class.
/// </summary>
public static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
using (var game = new ReporterMain())
game.Run();
}
}
#endif
}
+36
View File
@@ -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")]
+147
View File
@@ -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
{
/// <summary>
/// This is the main type for your game
/// </summary>
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;
}
/// <summary>
/// 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.
/// </summary>
protected override void Initialize()
{
// TODO: Add your initialization logic here
base.Initialize();
}
/// <summary>
/// LoadContent will be called once per game and is the place to load
/// all of your content.
/// </summary>
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;
}
/// <summary>
/// UnloadContent will be called once per game and is the place to unload
/// all content.
/// </summary>
protected override void UnloadContent()
{
// TODO: Unload any non ContentManager content here
}
/// <summary>
/// Allows the game to run logic such as updating the world,
/// checking for collisions, gathering input, and playing audio.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
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);
}
/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
guiRoot.Draw(spriteBatch);
spriteBatch.End();
}
private void SendReport()
{
}
}
}
+416
View File
@@ -0,0 +1,416 @@
<stylecopresultscache>
<version>12</version>
<project key="-635107402">
<configuration>DEBUG;TRACE;WINDOWS</configuration>
</project>
<sourcecode name="Game1.cs" parser="StyleCop.CSharp.CsParser">
<timestamps>
<styleCop>2014.04.01 10:18:24.000</styleCop>
<settingsFile>2012.09.27 21:03:32.000</settingsFile>
<sourceFile>2015.09.17 23:21:18.138</sourceFile>
<parser>2014.04.01 10:18:24.000</parser>
<StyleCop.CSharp.DocumentationRules>2014.04.01 10:18:24.000</StyleCop.CSharp.DocumentationRules>
<StyleCop.CSharp.DocumentationRules.FilesHashCode>-1945363787</StyleCop.CSharp.DocumentationRules.FilesHashCode>
<StyleCop.CSharp.LayoutRules>2014.04.01 10:18:24.000</StyleCop.CSharp.LayoutRules>
<StyleCop.CSharp.LayoutRules.FilesHashCode>0</StyleCop.CSharp.LayoutRules.FilesHashCode>
<StyleCop.CSharp.MaintainabilityRules>2014.04.01 10:18:24.000</StyleCop.CSharp.MaintainabilityRules>
<StyleCop.CSharp.MaintainabilityRules.FilesHashCode>0</StyleCop.CSharp.MaintainabilityRules.FilesHashCode>
<StyleCop.CSharp.NamingRules>2014.04.01 10:18:24.000</StyleCop.CSharp.NamingRules>
<StyleCop.CSharp.NamingRules.FilesHashCode>0</StyleCop.CSharp.NamingRules.FilesHashCode>
<StyleCop.CSharp.OrderingRules>2014.04.01 10:18:24.000</StyleCop.CSharp.OrderingRules>
<StyleCop.CSharp.OrderingRules.FilesHashCode>0</StyleCop.CSharp.OrderingRules.FilesHashCode>
<StyleCop.CSharp.ReadabilityRules>2014.04.01 10:18:24.000</StyleCop.CSharp.ReadabilityRules>
<StyleCop.CSharp.ReadabilityRules.FilesHashCode>0</StyleCop.CSharp.ReadabilityRules.FilesHashCode>
<StyleCop.CSharp.SpacingRules>2014.04.01 10:18:24.000</StyleCop.CSharp.SpacingRules>
<StyleCop.CSharp.SpacingRules.FilesHashCode>0</StyleCop.CSharp.SpacingRules.FilesHashCode>
</timestamps>
<violations>
<violation namespace="StyleCop.CSharp.DocumentationRules" rule="FileMustHaveHeader" ruleCheckId="SA1633">
<context>The file has no header, the header Xml is invalid, or the header is not located at the top of the file.</context>
<line>1</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.OrderingRules" rule="UsingDirectivesMustBePlacedWithinNamespace" ruleCheckId="SA1200">
<context>All using directives must be placed inside of the namespace.</context>
<line>1</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.OrderingRules" rule="UsingDirectivesMustBePlacedWithinNamespace" ruleCheckId="SA1200">
<context>All using directives must be placed inside of the namespace.</context>
<line>2</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.OrderingRules" rule="UsingDirectivesMustBePlacedWithinNamespace" ruleCheckId="SA1200">
<context>All using directives must be placed inside of the namespace.</context>
<line>3</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.OrderingRules" rule="UsingDirectivesMustBePlacedWithinNamespace" ruleCheckId="SA1200">
<context>All using directives must be placed inside of the namespace.</context>
<line>4</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.OrderingRules" rule="UsingDirectivesMustBePlacedWithinNamespace" ruleCheckId="SA1200">
<context>All using directives must be placed inside of the namespace.</context>
<line>5</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.OrderingRules" rule="SystemUsingDirectivesMustBePlacedBeforeOtherUsingDirectives" ruleCheckId="SA1208">
<context>System using directives must be placed before all other using directives.</context>
<line>5</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.LayoutRules" rule="CodeMustNotContainMultipleBlankLinesInARow" ruleCheckId="SA1507">
<context>The code must not contain multiple blank lines in a row.</context>
<line>23</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.LayoutRules" rule="CodeMustNotContainMultipleBlankLinesInARow" ruleCheckId="SA1507">
<context>The code must not contain multiple blank lines in a row.</context>
<line>24</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.DocumentationRules" rule="ElementsMustBeDocumented" ruleCheckId="SA1600">
<context>The field must have a documentation header.</context>
<line>14</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.MaintainabilityRules" rule="AccessModifierMustBeDeclared" ruleCheckId="SA1400">
<context>The field must have an access modifier.</context>
<line>14</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.DocumentationRules" rule="ElementsMustBeDocumented" ruleCheckId="SA1600">
<context>The field must have a documentation header.</context>
<line>15</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.MaintainabilityRules" rule="AccessModifierMustBeDeclared" ruleCheckId="SA1400">
<context>The field must have an access modifier.</context>
<line>15</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.DocumentationRules" rule="ElementsMustBeDocumented" ruleCheckId="SA1600">
<context>The field must have a documentation header.</context>
<line>17</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.MaintainabilityRules" rule="AccessModifierMustBeDeclared" ruleCheckId="SA1400">
<context>The field must have an access modifier.</context>
<line>17</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.DocumentationRules" rule="ElementsMustBeDocumented" ruleCheckId="SA1600">
<context>The field must have a documentation header.</context>
<line>19</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.MaintainabilityRules" rule="AccessModifierMustBeDeclared" ruleCheckId="SA1400">
<context>The field must have an access modifier.</context>
<line>19</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.DocumentationRules" rule="ElementsMustBeDocumented" ruleCheckId="SA1600">
<context>The field must have a documentation header.</context>
<line>21</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.MaintainabilityRules" rule="AccessModifierMustBeDeclared" ruleCheckId="SA1400">
<context>The field must have an access modifier.</context>
<line>21</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.DocumentationRules" rule="ElementsMustBeDocumented" ruleCheckId="SA1600">
<context>The constructor must have a documentation header.</context>
<line>25</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="PrefixCallsCorrectly" ruleCheckId="SA1126">
<context>The call to graphics must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call. </context>
<line>28</line>
<index>601</index>
<endIndex>608</endIndex>
<startLine>28</startLine>
<startColumn>13</startColumn>
<endLine>28</endLine>
<endColumn>20</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="PrefixCallsCorrectly" ruleCheckId="SA1126">
<context>The call to graphics must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call. </context>
<line>31</line>
<index>708</index>
<endIndex>715</endIndex>
<startLine>31</startLine>
<startColumn>13</startColumn>
<endLine>31</endLine>
<endColumn>20</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="PrefixCallsCorrectly" ruleCheckId="SA1126">
<context>The call to graphics must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call. </context>
<line>32</line>
<index>765</index>
<endIndex>772</endIndex>
<startLine>32</startLine>
<startColumn>13</startColumn>
<endLine>32</endLine>
<endColumn>20</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="PrefixCallsCorrectly" ruleCheckId="SA1126">
<context>The call to graphics must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call. </context>
<line>33</line>
<index>819</index>
<endIndex>826</endIndex>
<startLine>33</startLine>
<startColumn>13</startColumn>
<endLine>33</endLine>
<endColumn>20</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.LayoutRules" rule="SingleLineCommentsMustNotBeFollowedByBlankLine" ruleCheckId="SA1512">
<context>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 '//'.</context>
<line>44</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.LayoutRules" rule="CurlyBracketsMustNotBeOmitted" ruleCheckId="SA1503">
<context>The body of the if statement must be wrapped in opening and closing curly brackets.</context>
<line>88</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.LayoutRules" rule="SingleLineCommentMustBePrecededByBlankLine" ruleCheckId="SA1515">
<context>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 '//'.</context>
<line>99</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="ParametersMustBeOnSameLineOrSeparateLines" ruleCheckId="SA1117">
<context>All method parameters must be placed on the same line, or each parameter must be placed on a separate line.</context>
<line>90</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="ParameterMustFollowComma" ruleCheckId="SA1115">
<context>The parameter must begin on the line after the previous parameter.</context>
<line>92</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="ParameterMustFollowComma" ruleCheckId="SA1115">
<context>The parameter must begin on the line after the previous parameter.</context>
<line>93</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="ParameterMustFollowComma" ruleCheckId="SA1115">
<context>The parameter must begin on the line after the previous parameter.</context>
<line>94</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="PrefixCallsCorrectly" ruleCheckId="SA1126">
<context>The call to spriteBatch must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call. </context>
<line>56</line>
<index>1712</index>
<endIndex>1722</endIndex>
<startLine>56</startLine>
<startColumn>13</startColumn>
<endLine>56</endLine>
<endColumn>23</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="PrefixCallsCorrectly" ruleCheckId="SA1126">
<context>The call to graphicsWidth must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call. </context>
<line>58</line>
<index>1774</index>
<endIndex>1786</endIndex>
<startLine>58</startLine>
<startColumn>13</startColumn>
<endLine>58</endLine>
<endColumn>25</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="PrefixCallsCorrectly" ruleCheckId="SA1126">
<context>The call to graphicsHeight must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call. </context>
<line>59</line>
<index>1834</index>
<endIndex>1847</endIndex>
<startLine>59</startLine>
<startColumn>13</startColumn>
<endLine>59</endLine>
<endColumn>26</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="PrefixCallsCorrectly" ruleCheckId="SA1126">
<context>The call to GraphicsDevice must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call. </context>
<line>61</line>
<index>1917</index>
<endIndex>1930</endIndex>
<startLine>61</startLine>
<startColumn>32</startColumn>
<endLine>61</endLine>
<endColumn>45</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="PrefixCallsCorrectly" ruleCheckId="SA1126">
<context>The call to Content must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call. </context>
<line>63</line>
<index>1958</index>
<endIndex>1964</endIndex>
<startLine>63</startLine>
<startColumn>22</startColumn>
<endLine>63</endLine>
<endColumn>28</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="PrefixCallsCorrectly" ruleCheckId="SA1126">
<context>The call to spriteBatch must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call. </context>
<line>66</line>
<index>2061</index>
<endIndex>2071</endIndex>
<startLine>66</startLine>
<startColumn>13</startColumn>
<endLine>66</endLine>
<endColumn>23</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="PrefixCallsCorrectly" ruleCheckId="SA1126">
<context>The call to GraphicsDevice must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call. </context>
<line>68</line>
<index>2139</index>
<endIndex>2152</endIndex>
<startLine>68</startLine>
<startColumn>29</startColumn>
<endLine>68</endLine>
<endColumn>42</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="PrefixCallsCorrectly" ruleCheckId="SA1126">
<context>The call to backgroundTexture must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call. </context>
<line>70</line>
<index>2171</index>
<endIndex>2187</endIndex>
<startLine>70</startLine>
<startColumn>13</startColumn>
<endLine>70</endLine>
<endColumn>29</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="PrefixCallsCorrectly" ruleCheckId="SA1126">
<context>The call to titleTexture must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call. </context>
<line>71</line>
<index>2262</index>
<endIndex>2273</endIndex>
<startLine>71</startLine>
<startColumn>13</startColumn>
<endLine>71</endLine>
<endColumn>24</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="PrefixCallsCorrectly" ruleCheckId="SA1126">
<context>The call to guiRoot must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call. </context>
<line>73</line>
<index>2344</index>
<endIndex>2350</endIndex>
<startLine>73</startLine>
<startColumn>13</startColumn>
<endLine>73</endLine>
<endColumn>19</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="PrefixCallsCorrectly" ruleCheckId="SA1126">
<context>The call to graphicsWidth must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call. </context>
<line>73</line>
<index>2387</index>
<endIndex>2399</endIndex>
<startLine>73</startLine>
<startColumn>56</startColumn>
<endLine>73</endLine>
<endColumn>68</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="PrefixCallsCorrectly" ruleCheckId="SA1126">
<context>The call to graphicsHeight must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call. </context>
<line>73</line>
<index>2402</index>
<endIndex>2415</endIndex>
<startLine>73</startLine>
<startColumn>71</startColumn>
<endLine>73</endLine>
<endColumn>84</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="PrefixCallsCorrectly" ruleCheckId="SA1126">
<context>The call to guiRoot must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call. </context>
<line>74</line>
<index>2452</index>
<endIndex>2458</endIndex>
<startLine>74</startLine>
<startColumn>13</startColumn>
<endLine>74</endLine>
<endColumn>19</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="PrefixCallsCorrectly" ruleCheckId="SA1126">
<context>The call to guiRoot must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call. </context>
<line>76</line>
<index>2616</index>
<endIndex>2622</endIndex>
<startLine>76</startLine>
<startColumn>91</startColumn>
<endLine>76</endLine>
<endColumn>97</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="PrefixCallsCorrectly" ruleCheckId="SA1126">
<context>The call to guiRoot must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call. </context>
<line>98</line>
<index>3542</index>
<endIndex>3548</endIndex>
<startLine>98</startLine>
<startColumn>122</startColumn>
<endLine>98</endLine>
<endColumn>128</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="UseStringEmptyForEmptyStrings" ruleCheckId="SA1122">
<context>Use string.Empty rather than "".</context>
<line>79</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.SpacingRules" rule="SingleLineCommentsMustBeginWithSingleSpace" ruleCheckId="SA1005">
<context>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 '//'.</context>
<line>99</line>
<index>3565</index>
<endIndex>3593</endIndex>
<startLine>99</startLine>
<startColumn>13</startColumn>
<endLine>99</endLine>
<endColumn>41</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.LayoutRules" rule="CurlyBracketsMustNotBeOmitted" ruleCheckId="SA1503">
<context>The body of the if statement must be wrapped in opening and closing curly brackets.</context>
<line>119</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.LayoutRules" rule="SingleLineCommentsMustNotBeFollowedByBlankLine" ruleCheckId="SA1512">
<context>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 '//'.</context>
<line>121</line>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.ReadabilityRules" rule="PrefixCallsCorrectly" ruleCheckId="SA1126">
<context>The call to Exit must begin with the 'this.', 'base.', 'object.' or 'ReporterMain.' or 'Game.' prefix to indicate the intended method call. </context>
<line>119</line>
<index>4396</index>
<endIndex>4399</endIndex>
<startLine>119</startLine>
<startColumn>17</startColumn>
<endLine>119</endLine>
<endColumn>20</endColumn>
<warning>False</warning>
</violation>
<violation namespace="StyleCop.CSharp.LayoutRules" rule="SingleLineCommentsMustNotBeFollowedByBlankLine" ruleCheckId="SA1512">
<context>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 '//'.</context>
<line>134</line>
<warning>False</warning>
</violation>
</violations>
</sourcecode>
</stylecopresultscache>
+1 -1
View File
@@ -433,7 +433,7 @@ namespace Launcher2
return; return;
} }
UpdaterUtil.CleanUnnecessaryFiles(latestVersionFiles); //UpdaterUtil.CleanUnnecessaryFiles(latestVersionFiles);
updateInfoText.Text = "The game was updated succesfully!"; updateInfoText.Text = "The game was updated succesfully!";
launchButton.Enabled = true; launchButton.Enabled = true;
Binary file not shown.
+4 -4
View File
@@ -105,13 +105,13 @@ namespace Subsurface
position = Vector2.Zero; position = Vector2.Zero;
worldView = new Rectangle(0,0, worldView = new Rectangle(0,0,
Game1.GraphicsWidth, GameMain.GraphicsWidth,
Game1.GraphicsHeight); GameMain.GraphicsHeight);
resolution = new Point(Game1.GraphicsWidth, Game1.GraphicsHeight); resolution = new Point(GameMain.GraphicsWidth, GameMain.GraphicsHeight);
viewMatrix = 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 public Vector2 TargetPos
@@ -23,12 +23,12 @@ namespace Subsurface
public Vector2 Position public Vector2 Position
{ {
get { return Character.AnimController.limbs[0].SimPosition; } get { return Character.AnimController.Limbs[0].SimPosition; }
} }
public Vector2 Velocity public Vector2 Velocity
{ {
get { return Character.AnimController.limbs[0].LinearVelocity; } get { return Character.AnimController.Limbs[0].LinearVelocity; }
} }
public AiState State public AiState State
@@ -145,7 +145,7 @@ namespace Subsurface
private void UpdateDistanceAccumulator() private void UpdateDistanceAccumulator()
{ {
Limb limb = Character.AnimController.limbs[0]; Limb limb = Character.AnimController.Limbs[0];
distanceAccumulator += (limb.SimPosition - prevPosition).Length(); distanceAccumulator += (limb.SimPosition - prevPosition).Length();
prevPosition = limb.body.SimPosition; prevPosition = limb.body.SimPosition;
@@ -187,7 +187,7 @@ namespace Subsurface
//check if any of the limbs is close enough to attack the target //check if any of the limbs is close enough to attack the target
if (attackingLimb == null) 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 (limb.attack==null || limb.attack.Type == AttackType.None) continue;
if (Vector2.Distance(limb.SimPosition, attackPosition) > limb.attack.Range) continue; if (Vector2.Distance(limb.SimPosition, attackPosition) > limb.attack.Range) continue;
@@ -210,7 +210,7 @@ namespace Subsurface
//System.Diagnostics.Debug.WriteLine("cooldown"); //System.Diagnostics.Debug.WriteLine("cooldown");
if (selectedAiTarget.Entity is Hull || 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.SteeringSeek(attackPosition, -0.8f);
steeringManager.SteeringAvoid(deltaTime, 1.0f); steeringManager.SteeringAvoid(deltaTime, 1.0f);
@@ -226,7 +226,7 @@ namespace Subsurface
{ {
targetEntity = null; targetEntity = null;
//check if there's a wall between the target and the character //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; Vector2 rayEnd = selectedAiTarget.Position;
Body closestBody = Submarine.CheckVisibility(rayStart, rayEnd); Body closestBody = Submarine.CheckVisibility(rayStart, rayEnd);
@@ -372,7 +372,7 @@ namespace Subsurface
} }
dist = Vector2.Distance( dist = Vector2.Distance(
character.AnimController.limbs[0].SimPosition, character.AnimController.Limbs[0].SimPosition,
target.Position); target.Position);
dist = ConvertUnits.ToDisplayUnits(dist); 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)) 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; Vector2 rayEnd = target.Position;
Body closestBody = Submarine.CheckVisibility(rayStart, rayEnd); Body closestBody = Submarine.CheckVisibility(rayStart, rayEnd);
+216
View File
@@ -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;
}
}
}
@@ -147,7 +147,7 @@ namespace Subsurface
if (depth > 0.0f) 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; drawPos = drawPos - camOffset * (depth / MaxDepth) * 0.05f;
} }
+67 -100
View File
@@ -56,7 +56,6 @@ namespace Subsurface
private Item[] selectedItems; private Item[] selectedItems;
public AnimController AnimController; public AnimController AnimController;
private AIController aiController;
private Vector2 cursorPosition; private Vector2 cursorPosition;
@@ -246,9 +245,9 @@ namespace Subsurface
get { return closestItem; } get { return closestItem; }
} }
public AIController AIController public virtual AIController AIController
{ {
get { return aiController; } get { return null; }
} }
public bool IsDead public bool IsDead
@@ -258,12 +257,12 @@ namespace Subsurface
public override Vector2 SimPosition public override Vector2 SimPosition
{ {
get { return AnimController.limbs[0].SimPosition; } get { return AnimController.Limbs[0].SimPosition; }
} }
public Vector2 Position 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) public Character(string file) : this(file, Vector2.Zero, null)
@@ -332,11 +331,9 @@ namespace Subsurface
AnimController = new FishAnimController(this, doc.Root.Element("ragdoll")); AnimController = new FishAnimController(this, doc.Root.Element("ragdoll"));
PressureProtection = 100.0f; PressureProtection = 100.0f;
//FishAnimController fishAnim = (FishAnimController)animController; //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.body.SetTransform(position+limb.SimPosition, 0.0f);
//limb.prevPosition = ConvertUnits.ToDisplayUnits(position); //limb.prevPosition = ConvertUnits.ToDisplayUnits(position);
@@ -397,7 +394,7 @@ namespace Subsurface
{ {
if (string.IsNullOrEmpty(humanConfigFile)) 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")); humanConfigFile = characterFiles.Find(c => c.EndsWith("human.xml"));
if (humanConfigFile == null) if (humanConfigFile == null)
@@ -632,15 +629,15 @@ namespace Subsurface
if (moveCam) 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); cam.OffsetAmount = MathHelper.Lerp(cam.OffsetAmount, 250.0f, 0.05f);
} }
cursorPosition = cam.ScreenToWorld(PlayerInput.MousePosition); cursorPosition = cam.ScreenToWorld(PlayerInput.MousePosition);
Vector2 mouseSimPos = ConvertUnits.ToSimUnits(cursorPosition); 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; Structure structure = null;
if (body != null) structure = body.UserData as Structure; if (body != null) structure = body.UserData as Structure;
if (structure != null) 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; if (isDead) return;
@@ -714,22 +711,13 @@ namespace Subsurface
PressureProtection -= deltaTime*100.0f; 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) //foreach (Limb limb in animController.limbs)
//{ //{
Health = health - bleeding * deltaTime; Health = health - bleeding * deltaTime;
//} //}
if (aiController != null) aiController.Update(deltaTime);
} }
private void UpdateSightRange() private void UpdateSightRange()
@@ -738,7 +726,7 @@ namespace Subsurface
//distance is approximated based on the mass of the character //distance is approximated based on the mass of the character
//(which corresponds to size because all the characters have the same limb density) //(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; aiTarget.SightRange += limb.Mass * 1000.0f;
} }
@@ -761,7 +749,7 @@ namespace Subsurface
public void DrawFront(SpriteBatch spriteBatch) 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; pos.Y = -pos.Y;
if (this == Character.controlled) return; 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 - new Vector2(1.0f, 1.0f), Color.Black);
spriteBatch.DrawString(GUI.Font, Info.Name, namePos, Color.White); 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); spriteBatch.DrawString(GUI.Font, ID.ToString(), namePos - new Vector2(0.0f, 20.0f), Color.White);
} }
@@ -790,9 +778,9 @@ namespace Subsurface
if (drowningBar == null) if (drowningBar == null)
{ {
int width = 100, height = 20; 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; drowningBar.BarSize = Controlled.Oxygen / 100.0f;
@@ -860,7 +848,7 @@ namespace Subsurface
if (n == selectedSound && sounds[i]!=null) if (n == selectedSound && sounds[i]!=null)
{ {
sounds[i].Play(1.0f, 2000.0f, sounds[i].Play(1.0f, 2000.0f,
AnimController.limbs[0].body.FarseerBody); AnimController.Limbs[0].body.FarseerBody);
Debug.WriteLine("playing: " + sounds[i]); Debug.WriteLine("playing: " + sounds[i]);
return; return;
} }
@@ -874,7 +862,7 @@ namespace Subsurface
Limb closestLimb = null; Limb closestLimb = null;
float closestDistance = 0.0f; float closestDistance = 0.0f;
foreach (Limb limb in AnimController.limbs) foreach (Limb limb in AnimController.Limbs)
{ {
float distance = Vector2.Distance(position, limb.SimPosition); float distance = Vector2.Distance(position, limb.SimPosition);
if (closestLimb == null || distance < closestDistance) if (closestLimb == null || distance < closestDistance)
@@ -915,7 +903,7 @@ namespace Subsurface
health = 0.0f; health = 0.0f;
foreach (Limb limb in AnimController.limbs) foreach (Limb limb in AnimController.Limbs)
{ {
Vector2 diff = centerOfMass - limb.SimPosition; Vector2 diff = centerOfMass - limb.SimPosition;
if (diff == Vector2.Zero) continue; if (diff == Vector2.Zero) continue;
@@ -927,12 +915,12 @@ namespace Subsurface
for (int i = 0; i < 10; i++) for (int i = 0; i < 10; i++)
{ {
Particle p = Game1.ParticleManager.CreateParticle("waterblood", Particle p = GameMain.ParticleManager.CreateParticle("waterblood",
centerOfMass + Rand.Vector(50.0f), centerOfMass + Rand.Vector(50.0f),
Vector2.Zero); Vector2.Zero);
if (p!=null) p.Size *= 2.0f; if (p!=null) p.Size *= 2.0f;
Game1.ParticleManager.CreateParticle("bubbles", GameMain.ParticleManager.CreateParticle("bubbles",
centerOfMass + Rand.Vector(50.0f), centerOfMass + Rand.Vector(50.0f),
new Vector2(Rand.Range(-50f, 50f), Rand.Range(-100f,50f))); new Vector2(Rand.Range(-50f, 50f), Rand.Range(-100f,50f)));
} }
@@ -949,20 +937,22 @@ namespace Subsurface
float dimDuration = 8.0f; float dimDuration = 8.0f;
float timer = 0.0f; float timer = 0.0f;
Color prevAmbientLight = Game1.LightManager.AmbientLight; Color prevAmbientLight = GameMain.LightManager.AmbientLight;
while (timer < dimDuration) while (timer < dimDuration)
{ {
AnimController.UpdateAnim(1.0f / 60.0f);
timer += 1.0f / 60.0f; timer += 1.0f / 60.0f;
if (cam != null) if (Character.controlled == this)
{ {
cam.TargetPos = ConvertUnits.ToDisplayUnits(AnimController.limbs[0].SimPosition); if (cam != null)
cam.OffsetAmount = 0.0f; {
} 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; yield return CoroutineStatus.Running;
} }
@@ -977,7 +967,7 @@ namespace Subsurface
{ {
lerpLightBack = Math.Min(lerpLightBack+0.05f,1.0f); 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; yield return CoroutineStatus.Running;
} }
@@ -989,7 +979,7 @@ namespace Subsurface
if (isDead) return; if (isDead) return;
//if the game is run by a client, characters are only killed when the server says so //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) if (networkMessage)
{ {
@@ -1001,7 +991,7 @@ namespace Subsurface
} }
} }
CoroutineManager.StartCoroutine(DeathAnim(Game1.GameScreen.Cam)); CoroutineManager.StartCoroutine(DeathAnim(GameMain.GameScreen.Cam));
health = 0.0f; health = 0.0f;
@@ -1017,7 +1007,7 @@ namespace Subsurface
aiTarget.Remove(); aiTarget.Remove();
aiTarget = null; aiTarget = null;
foreach (Limb limb in AnimController.limbs) foreach (Limb limb in AnimController.Limbs)
{ {
if (limb.pullJoint == null) continue; if (limb.pullJoint == null) continue;
limb.pullJoint.Enabled = false; limb.pullJoint.Enabled = false;
@@ -1029,14 +1019,14 @@ namespace Subsurface
joint.MaxMotorTorque = 0.0f; joint.MaxMotorTorque = 0.0f;
} }
if (Game1.Server != null) if (GameMain.Server != null)
{ {
new NetworkEvent(NetworkEventType.KillCharacter, ID, false); 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; return;
} }
var hasInputs = (GetInputState(InputType.Left) || var hasInputs =
GetInputState(InputType.Right) || (GetInputState(InputType.Left) ||
GetInputState(InputType.Up) || GetInputState(InputType.Right) ||
GetInputState(InputType.Down) || GetInputState(InputType.Up) ||
GetInputState(InputType.ActionHeld) || GetInputState(InputType.Down) ||
GetInputState(InputType.SecondaryHeld)); GetInputState(InputType.ActionHeld) ||
GetInputState(InputType.SecondaryHeld));
message.Write(hasInputs || LargeUpdateTimer <= 0); message.Write(hasInputs || LargeUpdateTimer <= 0);
message.Write((float)NetTime.Now); 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.ActionHeld].Dequeue);
message.Write(keys[(int)InputType.SecondaryHeld].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.Down].Dequeue);
message.Write(keys[(int)InputType.Run].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);
message.Write(cursorPosition.X);
message.Write(cursorPosition.Y);
}
else
{
message.Write(AnimController.TargetDir == Direction.Right);
}
message.Write(LargeUpdateTimer <= 0); message.Write(LargeUpdateTimer <= 0);
if (LargeUpdateTimer<=0) if (LargeUpdateTimer<=0)
{ {
int i = 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.X);
message.Write(limb.body.SimPosition.Y); 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.WriteRangedSingle(MathHelper.Clamp(AnimController.StunTimer,0.0f,60.0f), 0.0f, 60.0f, 8);
message.Write((byte)((health/maxHealth)*255.0f)); message.Write((byte)((health/maxHealth)*255.0f));
if (aiController != null) aiController.FillNetworkData(message);
LargeUpdateTimer = 10; LargeUpdateTimer = 10;
} }
else else
@@ -1150,10 +1132,10 @@ namespace Subsurface
else if (type == NetworkEventType.KillCharacter) else if (type == NetworkEventType.KillCharacter)
{ {
Kill(true); 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); GameMain.Client.AddChatMessage("YOU HAVE DIED. Your chat messages will only be visible to other dead players.", ChatMessageType.Dead);
Game1.LightManager.LosEnabled = false; GameMain.LightManager.LosEnabled = false;
} }
return; return;
} }
@@ -1161,8 +1143,6 @@ namespace Subsurface
bool actionKeyState = false; bool actionKeyState = false;
bool secondaryKeyState = false; bool secondaryKeyState = false;
float sendingTime = 0.0f; float sendingTime = 0.0f;
//Vector2 targetMovement = Vector2.Zero;
bool targetDir = false;
Vector2 cursorPos = Vector2.Zero; Vector2 cursorPos = Vector2.Zero;
bool leftKeyState = false, rightKeyState = false; bool leftKeyState = false, rightKeyState = false;
@@ -1211,37 +1191,26 @@ namespace Subsurface
keys[(int)InputType.Down].State = downKeyState; keys[(int)InputType.Down].State = downKeyState;
keys[(int)InputType.Run].State = runState; keys[(int)InputType.Run].State = runState;
bool isLargeUpdate;
try try
{ {
cursorPos = new Vector2(
if (aiController == null) message.ReadFloat(),
{ message.ReadFloat());
cursorPos = new Vector2( isLargeUpdate = message.ReadBoolean();
message.ReadFloat(),
message.ReadFloat());
}
else
{
targetDir = message.ReadBoolean();
}
} }
catch catch
{ {
return; return;
} }
if (aiController == null)
cursorPosition = cursorPos;
if (isLargeUpdate)
{ {
cursorPosition = cursorPos; foreach (Limb limb in AnimController.Limbs)
}
else
{
AnimController.TargetDir = (targetDir) ? Direction.Right : Direction.Left;
}
if (message.ReadBoolean())
{
foreach (Limb limb in AnimController.limbs)
{ {
Vector2 pos = Vector2.Zero, vel = Vector2.Zero; Vector2 pos = Vector2.Zero, vel = Vector2.Zero;
float rotation = 0.0f; float rotation = 0.0f;
@@ -1285,8 +1254,6 @@ namespace Subsurface
Health = newHealth; Health = newHealth;
LargeUpdateTimer = 1; LargeUpdateTimer = 1;
if (aiController != null) aiController.ReadNetworkData(message);
} }
else else
{ {
@@ -1319,7 +1286,7 @@ namespace Subsurface
if (controlled == this) controlled = null; 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(); if (inventory != null) inventory.Remove();
@@ -50,7 +50,7 @@ namespace Subsurface
{ {
if (character.IsDead) if (character.IsDead)
{ {
UpdateStruggling(deltaTime); UpdateDying(deltaTime);
return; return;
} }
@@ -64,7 +64,7 @@ namespace Subsurface
if (stunTimer>0.0f) if (stunTimer>0.0f)
{ {
UpdateStruggling(deltaTime); //UpdateStruggling(deltaTime);
stunTimer -= deltaTime; stunTimer -= deltaTime;
return; return;
} }
@@ -185,18 +185,18 @@ namespace Subsurface
if (!inWater) steerForce.Y = 0.0f; 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) 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) if (!inWater)
@@ -205,7 +205,7 @@ namespace Subsurface
} }
else 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 //out whether the ragdoll is standing on ground
float closestFraction = 1; float closestFraction = 1;
//Structure closestStructure = null; //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 //other limbs and bodies with no collision detection are ignored
if (fixture == null || if (fixture == null ||
@@ -301,7 +301,7 @@ namespace Subsurface
(float)Math.Cos(walkPos) * stepSize.X * 3.0f, (float)Math.Cos(walkPos) * stepSize.X * 3.0f,
(float)Math.Sin(walkPos) * stepSize.Y * 2.0f); (float)Math.Sin(walkPos) * stepSize.Y * 2.0f);
foreach (Limb limb in limbs) foreach (Limb limb in Limbs)
{ {
switch (limb.type) switch (limb.type)
{ {
@@ -343,7 +343,7 @@ namespace Subsurface
} }
} }
void UpdateStruggling(float deltaTime) void UpdateDying(float deltaTime)
{ {
Limb head = GetLimb(LimbType.Head); Limb head = GetLimb(LimbType.Head);
Limb tail = GetLimb(LimbType.Tail); Limb tail = GetLimb(LimbType.Tail);
@@ -355,7 +355,7 @@ namespace Subsurface
Vector2 centerOfMass = GetCenterOfMass(); Vector2 centerOfMass = GetCenterOfMass();
foreach (Limb limb in limbs) foreach (Limb limb in Limbs)
{ {
if (limb.type == LimbType.Head || limb.type == LimbType.Tail) continue; if (limb.type == LimbType.Head || limb.type == LimbType.Tail) continue;
@@ -367,7 +367,7 @@ namespace Subsurface
{ {
base.Flip(); base.Flip();
foreach (Limb l in limbs) foreach (Limb l in Limbs)
{ {
if (!l.DoesFlip) continue; if (!l.DoesFlip) continue;
@@ -378,22 +378,22 @@ namespace Subsurface
private void Mirror() private void Mirror()
{ {
float leftX = limbs[0].SimPosition.X, rightX = limbs[0].SimPosition.X; float leftX = Limbs[0].SimPosition.X, rightX = Limbs[0].SimPosition.X;
for (int i = 1; i < limbs.Count(); i++ ) 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; 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); Vector2 newPos = new Vector2(midX - (l.SimPosition.X - midX), l.SimPosition.Y);
@@ -30,11 +30,7 @@ namespace Subsurface
public override void UpdateAnim(float deltaTime) public override void UpdateAnim(float deltaTime)
{ {
if (character.IsDead) if (character.IsDead) return;
{
UpdateStruggling();
return;
}
Vector2 colliderPos = GetLimb(LimbType.Torso).SimPosition; Vector2 colliderPos = GetLimb(LimbType.Torso).SimPosition;
@@ -49,7 +45,7 @@ namespace Subsurface
//out whether the ragdoll is standing on ground //out whether the ragdoll is standing on ground
float closestFraction = 1; float closestFraction = 1;
Structure closestStructure = null; Structure closestStructure = null;
Game1.World.RayCast((fixture, point, normal, fraction) => GameMain.World.RayCast((fixture, point, normal, fraction) =>
{ {
switch (fixture.CollisionCategories) switch (fixture.CollisionCategories)
{ {
@@ -136,7 +132,7 @@ namespace Subsurface
if (stunTimer > 0) if (stunTimer > 0)
{ {
UpdateStruggling(); //UpdateStruggling();
stunTimer -= deltaTime; stunTimer -= deltaTime;
return; return;
} }
@@ -159,7 +155,7 @@ namespace Subsurface
if (TargetDir != dir) Flip(); if (TargetDir != dir) Flip();
foreach (Limb limb in limbs) foreach (Limb limb in Limbs)
{ {
limb.Disabled = false; limb.Disabled = false;
} }
@@ -223,7 +219,7 @@ namespace Subsurface
//place the anchors of the head and the torso to make the ragdoll stand //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) 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) if (stairs != null)
{ {
@@ -325,8 +321,7 @@ namespace Subsurface
posAdditon.Y += 0.1f; posAdditon.Y += 0.1f;
} }
} }
if (!rightHand.Disabled) if (!rightHand.Disabled)
{ {
rightHand.body.ApplyTorque(walkPosY * runningModifier * Dir); 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; //float punchTimer;
//bool punching; //bool punching;
@@ -885,7 +861,7 @@ namespace Subsurface
} }
} }
foreach (Limb l in limbs) foreach (Limb l in Limbs)
{ {
switch (l.type) switch (l.type)
{ {
+5 -5
View File
@@ -223,7 +223,7 @@ namespace Subsurface
pullJoint.Enabled = false; pullJoint.Enabled = false;
pullJoint.MaxForce = 150.0f * body.Mass; pullJoint.MaxForce = 150.0f * body.Mass;
Game1.World.AddJoint(pullJoint); GameMain.World.AddJoint(pullJoint);
} }
else else
{ {
@@ -325,14 +325,14 @@ namespace Subsurface
Vector2 particleVel = SimPosition - position; Vector2 particleVel = SimPosition - position;
if (particleVel != Vector2.Zero) particleVel = Vector2.Normalize(particleVel); if (particleVel != Vector2.Zero) particleVel = Vector2.Normalize(particleVel);
Game1.ParticleManager.CreateParticle("blood", GameMain.ParticleManager.CreateParticle("blood",
Position, Position,
particleVel * Rand.Range(100.0f, 300.0f)); particleVel * Rand.Range(100.0f, 300.0f));
} }
for (int i = 0; i < bloodAmount / 2; i++) 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); return new AttackResult(amount, bleedingAmount, hitArmor);
@@ -343,7 +343,7 @@ namespace Subsurface
if (LinearVelocity.X>100.0f) if (LinearVelocity.X>100.0f)
{ {
DebugConsole.ThrowError("CHARACTER EXPLODED"); DebugConsole.ThrowError("CHARACTER EXPLODED");
foreach (Limb limb in character.AnimController.limbs) foreach (Limb limb in character.AnimController.Limbs)
{ {
limb.body.ResetDynamics(); limb.body.ResetDynamics();
limb.body.SetTransform(body.SimPosition, 0.0f); limb.body.SetTransform(body.SimPosition, 0.0f);
@@ -421,7 +421,7 @@ namespace Subsurface
1.0f, spriteEffect, sprite.Depth - 0.000001f); 1.0f, spriteEffect, sprite.Depth - 0.000001f);
} }
if (!Game1.DebugDraw) return; if (!GameMain.DebugDraw) return;
if (pullJoint!=null) if (pullJoint!=null)
{ {
+38 -38
View File
@@ -18,7 +18,7 @@ namespace Subsurface
protected Hull currentHull; protected Hull currentHull;
public Limb[] limbs; public Limb[] Limbs;
private Dictionary<LimbType, Limb> limbDictionary; private Dictionary<LimbType, Limb> limbDictionary;
public RevoluteJoint[] limbJoints; public RevoluteJoint[] limbJoints;
@@ -138,7 +138,7 @@ namespace Subsurface
if (ignorePlatforms == value) return; if (ignorePlatforms == value) return;
ignorePlatforms = value; ignorePlatforms = value;
foreach (Limb l in limbs) foreach (Limb l in Limbs)
{ {
if (l.ignoreCollisions) continue; if (l.ignoreCollisions) continue;
@@ -170,7 +170,7 @@ namespace Subsurface
dir = Direction.Right; dir = Direction.Right;
//int limbAmount = ; //int limbAmount = ;
limbs = new Limb[element.Elements("limb").Count()]; Limbs = new Limb[element.Elements("limb").Count()];
limbJoints = new RevoluteJoint[element.Elements("joint").Count()]; limbJoints = new RevoluteJoint[element.Elements("joint").Count()];
limbDictionary = new Dictionary<LimbType, Limb>(); limbDictionary = new Dictionary<LimbType, Limb>();
@@ -193,7 +193,7 @@ namespace Subsurface
limb.body.FarseerBody.OnCollision += OnLimbCollision; limb.body.FarseerBody.OnCollision += OnLimbCollision;
limbs[ID] = limb; Limbs[ID] = limb;
Mass += limb.Mass; Mass += limb.Mass;
if (!limbDictionary.ContainsKey(limb.type)) limbDictionary.Add(limb.type, limb); if (!limbDictionary.ContainsKey(limb.type)) limbDictionary.Add(limb.type, limb);
break; break;
@@ -207,7 +207,7 @@ namespace Subsurface
Vector2 limb2Pos = ToolBox.GetAttributeVector2(subElement, "limb2anchor", Vector2.Zero); Vector2 limb2Pos = ToolBox.GetAttributeVector2(subElement, "limb2anchor", Vector2.Zero);
limb2Pos = ConvertUnits.ToSimUnits(limb2Pos); 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; joint.CollideConnected = false;
@@ -221,7 +221,7 @@ namespace Subsurface
joint.MotorEnabled = true; joint.MotorEnabled = true;
joint.MaxMotorTorque = 0.25f; joint.MaxMotorTorque = 0.25f;
Game1.World.AddJoint(joint); GameMain.World.AddJoint(joint);
for (int i = 0; i < limbJoints.Length; i++ ) for (int i = 0; i < limbJoints.Length; i++ )
{ {
@@ -257,7 +257,7 @@ namespace Subsurface
startDepth+=increment; startDepth+=increment;
} }
foreach (Limb limb in limbs) foreach (Limb limb in Limbs)
{ {
limb.sprite.Depth = startDepth + limb.sprite.Depth * 0.0001f; limb.sprite.Depth = startDepth + limb.sprite.Depth * 0.0001f;
} }
@@ -328,16 +328,16 @@ namespace Subsurface
Vector2 normal = contact.Manifold.LocalNormal; Vector2 normal = contact.Manifold.LocalNormal;
Vector2 avgVelocity = Vector2.Zero; Vector2 avgVelocity = Vector2.Zero;
foreach (Limb limb in limbs) foreach (Limb limb in Limbs)
{ {
avgVelocity += limb.LinearVelocity; avgVelocity += limb.LinearVelocity;
} }
avgVelocity = avgVelocity / limbs.Count(); avgVelocity = avgVelocity / Limbs.Count();
float impact = Vector2.Dot((f1.Body.LinearVelocity + avgVelocity) / 2.0f, -normal); 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; Limb l = (Limb)f1.Body.UserData;
@@ -350,20 +350,20 @@ namespace Subsurface
AmbientSoundManager.PlayDamageSound(DamageSoundType.LimbBlunt, strongestImpact, l.body.FarseerBody); 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) public virtual void Draw(SpriteBatch spriteBatch)
{ {
foreach (Limb limb in limbs) foreach (Limb limb in Limbs)
{ {
limb.Draw(spriteBatch); 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) 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; Vector2 spriteOrigin = Limbs[i].sprite.Origin;
spriteOrigin.X = limbs[i].sprite.SourceRect.Width - spriteOrigin.X; spriteOrigin.X = Limbs[i].sprite.SourceRect.Width - spriteOrigin.X;
limbs[i].sprite.Origin = spriteOrigin; 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( new Vector2(
-limbs[i].pullJoint.LocalAnchorA.X, -Limbs[i].pullJoint.LocalAnchorA.X,
limbs[i].pullJoint.LocalAnchorA.Y); Limbs[i].pullJoint.LocalAnchorA.Y);
} }
} }
public Vector2 GetCenterOfMass() public Vector2 GetCenterOfMass()
{ {
Vector2 centerOfMass = Vector2.Zero; Vector2 centerOfMass = Vector2.Zero;
foreach (Limb limb in limbs) foreach (Limb limb in Limbs)
{ {
centerOfMass += limb.Mass * limb.SimPosition; centerOfMass += limb.Mass * limb.SimPosition;
} }
@@ -465,11 +465,11 @@ namespace Subsurface
public void ResetPullJoints() 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] == null) continue;
if (limbs[i].pullJoint == null) continue; if (Limbs[i].pullJoint == null) continue;
limbs[i].pullJoint.Enabled = false; 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); Vector2 limbPosition = ConvertUnits.ToDisplayUnits(limb.SimPosition);
@@ -562,7 +562,7 @@ namespace Subsurface
{ {
//create a splash particle //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(limb.Position.X, limbHull.Surface),
new Vector2(0.0f, Math.Abs(-limb.LinearVelocity.Y * 10.0f)), new Vector2(0.0f, Math.Abs(-limb.LinearVelocity.Y * 10.0f)),
0.0f); 0.0f);
@@ -572,7 +572,7 @@ namespace Subsurface
// limbHull.Rect.Y, // limbHull.Rect.Y,
// limbHull.Rect.Y - limbHull.Rect.Height)); // limbHull.Rect.Y - limbHull.Rect.Height));
Game1.ParticleManager.CreateParticle("bubbles", GameMain.ParticleManager.CreateParticle("bubbles",
new Vector2(limb.Position.X, limbHull.Surface), new Vector2(limb.Position.X, limbHull.Surface),
limb.LinearVelocity*0.001f, limb.LinearVelocity*0.001f,
0.0f); 0.0f);
@@ -629,7 +629,7 @@ namespace Subsurface
{ {
if (inWater) if (inWater)
{ {
foreach (Limb limb in limbs) foreach (Limb limb in Limbs)
{ {
if (limb.body.TargetPosition == Vector2.Zero) continue; if (limb.body.TargetPosition == Vector2.Zero) continue;
@@ -647,7 +647,7 @@ namespace Subsurface
{ {
System.Diagnostics.Debug.WriteLine("reset ragdoll limb positions"); 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; if (limb.body.TargetPosition == Vector2.Zero) continue;
@@ -663,7 +663,7 @@ namespace Subsurface
private Vector2 GetFlowForce() private Vector2 GetFlowForce()
{ {
Vector2 limbPos = ConvertUnits.ToDisplayUnits(limbs[0].SimPosition); Vector2 limbPos = ConvertUnits.ToDisplayUnits(Limbs[0].SimPosition);
Vector2 force = Vector2.Zero; Vector2 force = Vector2.Zero;
foreach (MapEntity e in MapEntity.mapEntityList) foreach (MapEntity e in MapEntity.mapEntityList)
@@ -693,7 +693,7 @@ namespace Subsurface
{ {
//find the lowest limb //find the lowest limb
lowestLimb = null; lowestLimb = null;
foreach (Limb limb in limbs) foreach (Limb limb in Limbs)
{ {
if (lowestLimb == null) if (lowestLimb == null)
lowestLimb = limb; lowestLimb = limb;
@@ -704,10 +704,10 @@ namespace Subsurface
public void Remove() public void Remove()
{ {
foreach (Limb l in limbs) l.Remove(); foreach (Limb l in Limbs) l.Remove();
foreach (RevoluteJoint joint in limbJoints) foreach (RevoluteJoint joint in limbJoints)
{ {
Game1.World.RemoveJoint(joint); GameMain.World.RemoveJoint(joint);
} }
} }
+23 -23
View File
@@ -46,7 +46,7 @@ namespace Subsurface
NewMessage("Press F3 to open/close the debug console", Color.Green); 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)) if (PlayerInput.KeyHit(Keys.F3))
{ {
@@ -138,7 +138,7 @@ namespace Subsurface
textBox.Draw(spriteBatch); textBox.Draw(spriteBatch);
} }
public static void ExecuteCommand(string command, Game1 game) public static void ExecuteCommand(string command, GameMain game)
{ {
#if !DEBUG #if !DEBUG
if (Game1.Client!=null) if (Game1.Client!=null)
@@ -163,9 +163,9 @@ namespace Subsurface
{ {
WayPoint spawnPoint = WayPoint.GetRandom(SpawnType.Human); WayPoint spawnPoint = WayPoint.GetRandom(SpawnType.Human);
Character.Controlled = new Character(Character.HumanConfigFile, (spawnPoint == null) ? Vector2.Zero : spawnPoint.SimPosition); 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; if (mode == null) break;
mode.CrewManager.AddCharacter(Character.Controlled); mode.CrewManager.AddCharacter(Character.Controlled);
mode.CrewManager.SelectCharacter(null, Character.Controlled); mode.CrewManager.SelectCharacter(null, Character.Controlled);
@@ -174,7 +174,7 @@ namespace Subsurface
else else
{ {
WayPoint spawnPoint = WayPoint.GetRandom(SpawnType.Enemy); 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; break;
@@ -183,50 +183,50 @@ namespace Subsurface
// Game1.NetworkMember = new GameServer(); // Game1.NetworkMember = new GameServer();
// break; // break;
case "kick": case "kick":
if (Game1.Server == null) break; if (GameMain.Server == null) break;
Game1.Server.KickPlayer(commands[1]); GameMain.Server.KickPlayer(commands[1]);
break; break;
case "startclient": case "startclient":
if (commands.Length == 1) return; if (commands.Length == 1) return;
if (Game1.Client == null) if (GameMain.Client == null)
{ {
Game1.NetworkMember = new GameClient("Name"); GameMain.NetworkMember = new GameClient("Name");
Game1.Client.ConnectToServer(commands[1]); GameMain.Client.ConnectToServer(commands[1]);
} }
break; break;
case "mainmenuscreen": case "mainmenuscreen":
case "mainmenu": case "mainmenu":
case "menu": case "menu":
Game1.MainMenuScreen.Select(); GameMain.MainMenuScreen.Select();
break; break;
case "gamescreen": case "gamescreen":
case "game": case "game":
Game1.GameScreen.Select(); GameMain.GameScreen.Select();
break; break;
case "editmapscreen": case "editmapscreen":
case "editmap": case "editmap":
case "edit": case "edit":
Game1.EditMapScreen.Select(); GameMain.EditMapScreen.Select();
break; break;
case "editcharacter": case "editcharacter":
case "editchar": case "editchar":
Game1.EditCharacterScreen.Select(); GameMain.EditCharacterScreen.Select();
break; break;
case "freecamera": case "freecamera":
case "freecam": case "freecam":
Character.Controlled = null; Character.Controlled = null;
Game1.GameScreen.Cam.TargetPos = Vector2.Zero; GameMain.GameScreen.Cam.TargetPos = Vector2.Zero;
break; break;
case "editwater": case "editwater":
case "water": case "water":
if (Game1.Client== null) if (GameMain.Client== null)
{ {
Hull.EditWater = !Hull.EditWater; Hull.EditWater = !Hull.EditWater;
} }
break; break;
case "generatelevel": case "generatelevel":
Game1.Level = new Level("asdf", 50.0f, 500,500, 50); GameMain.Level = new Level("asdf", 50.0f, 500,500, 50);
Game1.Level.Generate(100.0f); GameMain.Level.Generate(100.0f);
break; break;
case "fixitems": case "fixitems":
foreach (Item it in Item.itemList) foreach (Item it in Item.itemList)
@@ -245,18 +245,18 @@ namespace Subsurface
} }
break; break;
case "shake": case "shake":
Game1.GameScreen.Cam.Shake = 10.0f; GameMain.GameScreen.Cam.Shake = 10.0f;
break; break;
case "losenabled": case "losenabled":
case "los": case "los":
case "drawlos": case "drawlos":
Game1.LightManager.LosEnabled = !Game1.LightManager.LosEnabled; GameMain.LightManager.LosEnabled = !GameMain.LightManager.LosEnabled;
break; break;
case "lighting": case "lighting":
case "lightingenabled": case "lightingenabled":
case "light": case "light":
case "lights": case "lights":
Game1.LightManager.LightingEnabled = !Game1.LightManager.LightingEnabled; GameMain.LightManager.LightingEnabled = !GameMain.LightManager.LightingEnabled;
break; break;
case "oxygen": case "oxygen":
case "air": case "air":
@@ -270,7 +270,7 @@ namespace Subsurface
break; break;
case "lobbyscreen": case "lobbyscreen":
case "lobby": case "lobby":
Game1.LobbyScreen.Select(); GameMain.LobbyScreen.Select();
break; break;
case "savemap": case "savemap":
case "savesub": case "savesub":
@@ -297,7 +297,7 @@ namespace Subsurface
case "debugdraw": case "debugdraw":
//Hull.DebugDraw = !Hull.DebugDraw; //Hull.DebugDraw = !Hull.DebugDraw;
//Ragdoll.DebugDraw = !Ragdoll.DebugDraw; //Ragdoll.DebugDraw = !Ragdoll.DebugDraw;
Game1.DebugDraw = !Game1.DebugDraw; GameMain.DebugDraw = !GameMain.DebugDraw;
break; break;
default: default:
NewMessage("Command not found", Color.Red); NewMessage("Command not found", Color.Red);
+1 -1
View File
@@ -34,7 +34,7 @@ namespace Subsurface
Vector2 position = (randomWayPoint == null) ? Vector2.Zero : randomWayPoint.SimPosition; Vector2 position = (randomWayPoint == null) ? Vector2.Zero : randomWayPoint.SimPosition;
position.X += Rand.Range(-0.5f, 0.5f); position.X += Rand.Range(-0.5f, 0.5f);
position.Y += 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);
} }
} }
+1 -1
View File
@@ -159,7 +159,7 @@ namespace Subsurface
public void GiveReward() public void GiveReward()
{ {
var mode = Game1.GameSession.gameMode as SinglePlayerMode; var mode = GameMain.GameSession.gameMode as SinglePlayerMode;
mode.Money += reward; mode.Money += reward;
if (!string.IsNullOrWhiteSpace(successMessage)) if (!string.IsNullOrWhiteSpace(successMessage))
+2 -2
View File
@@ -41,9 +41,9 @@ namespace Subsurface
public Task(float priority, string name) 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"; musicType = "repair";
this.priority = priority; this.priority = priority;
this.name = name; this.name = name;
+16 -18
View File
@@ -61,7 +61,7 @@ namespace Subsurface
public static void TogglePauseMenu() public static void TogglePauseMenu()
{ {
if (Screen.Selected == Game1.MainMenuScreen) return; if (Screen.Selected == GameMain.MainMenuScreen) return;
TogglePauseMenu(null, null); TogglePauseMenu(null, null);
@@ -75,22 +75,22 @@ namespace Subsurface
y += 60; 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) if (spMode!=null)
{ {
button = new GUIButton(new Rectangle(0, y, 0, 30), "Load previous", Alignment.CenterX, GUI.Style, pauseMenu); button = new GUIButton(new Rectangle(0, y, 0, 30), "Load previous", Alignment.CenterX, GUI.Style, pauseMenu);
button.OnClicked += TogglePauseMenu; button.OnClicked += TogglePauseMenu;
button.OnClicked += Game1.GameSession.LoadPrevious; button.OnClicked += GameMain.GameSession.LoadPrevious;
y += 60; 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) if (spMode != null)
{ {
button = new GUIButton(new Rectangle(0, y, 0, 30), "Save & quit", Alignment.CenterX, GUI.Style, pauseMenu); 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") 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); //Game1.MainMenuScreen.SelectTab(null, (int)MainMenuScreen.Tabs.Main);
return true; return true;
@@ -301,15 +301,15 @@ namespace Subsurface
public static void Draw(float deltaTime, SpriteBatch spriteBatch, Camera cam) public static void Draw(float deltaTime, SpriteBatch spriteBatch, Camera cam)
{ {
spriteBatch.DrawString(Font, spriteBatch.DrawString(Font,
"FPS: " + (int)Game1.FrameCounter.AverageFramesPerSecond, "FPS: " + (int)GameMain.FrameCounter.AverageFramesPerSecond,
new Vector2(10, 10), Color.White); new Vector2(10, 10), Color.White);
if (Game1.DebugDraw) if (GameMain.DebugDraw)
{ {
spriteBatch.DrawString(Font, spriteBatch.DrawString(Font,
"Physics: " + Game1.World.UpdateTime "Physics: " + GameMain.World.UpdateTime
+ " - bodies: " + Game1.World.BodyList.Count + " - bodies: " + GameMain.World.BodyList.Count
+ " Camera pos: " + Game1.GameScreen.Cam.Position, + " Camera pos: " + GameMain.GameScreen.Cam.Position,
new Vector2(10, 30), Color.White); new Vector2(10, 30), Color.White);
if (Submarine.Loaded!=null) if (Submarine.Loaded!=null)
@@ -318,12 +318,10 @@ namespace Subsurface
"Sub pos: " + Submarine.Loaded.Position, "Sub pos: " + Submarine.Loaded.Position,
new Vector2(10, 50), Color.White); new Vector2(10, 50), Color.White);
} }
} }
if (Character.Controlled != null && cam!=null) Character.Controlled.DrawHud(spriteBatch, cam); 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); DrawMessages(spriteBatch, (float)deltaTime);
@@ -366,7 +364,7 @@ namespace Subsurface
return; 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; currPos.Y += messages.Count * 30;
messages.Add(new GUIMessage(message, color, currPos, lifeTime)); messages.Add(new GUIMessage(message, color, currPos, lifeTime));
@@ -382,7 +380,7 @@ namespace Subsurface
{ {
if (messages.Count == 0) return; 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; int i = 1;
foreach (GUIMessage msg in messages) foreach (GUIMessage msg in messages)
+1 -1
View File
@@ -290,7 +290,7 @@ namespace Subsurface
protected virtual void UpdateDimensions(GUIComponent parent = null) 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; Vector4 padding = (parent == null) ? Vector4.Zero : parent.padding;
+5 -5
View File
@@ -38,7 +38,7 @@ namespace Subsurface
monsterTexture = TextureLoader.FromFile("Content/UI/titleMonster.png"); monsterTexture = TextureLoader.FromFile("Content/UI/titleMonster.png");
titleTexture = TextureLoader.FromFile("Content/UI/titleText.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); graphics.SetRenderTarget(renderTarget);
//Debug.WriteLine(stopwatch.Elapsed.TotalMilliseconds); //Debug.WriteLine(stopwatch.Elapsed.TotalMilliseconds);
Scale = Game1.GraphicsHeight/1500.0f; Scale = GameMain.GraphicsHeight/1500.0f;
state += deltaTime; state += deltaTime;
if (loadState>-1) 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 = 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 + " %"; 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(); spriteBatch.End();
+2 -2
View File
@@ -14,7 +14,7 @@ using System.Xml;
namespace Subsurface namespace Subsurface
{ {
class Game1 : Game class GameMain : Game
{ {
public static GraphicsDeviceManager Graphics; public static GraphicsDeviceManager Graphics;
static int graphicsWidth, graphicsHeight; static int graphicsWidth, graphicsHeight;
@@ -93,7 +93,7 @@ namespace Subsurface
get { return NetworkMember as GameClient; } get { return NetworkMember as GameClient; }
} }
public Game1() public GameMain()
{ {
Graphics = new GraphicsDeviceManager(this); Graphics = new GraphicsDeviceManager(this);
+1 -1
View File
@@ -94,7 +94,7 @@ namespace Subsurface
null, frame); null, frame);
textBlock.Padding = new Vector4(5.0f, 0.0f, 5.0f, 0.0f); 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) public void Update(float deltaTime)
@@ -79,7 +79,7 @@ namespace Subsurface
endTime = startTime + duration; endTime = startTime + duration;
this.duration = 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!"; endMessage = "The round has ended!";
@@ -108,7 +108,7 @@ namespace Subsurface
if (endMessage != "" || this.endMessage == null) this.endMessage = endMessage; if (endMessage != "" || this.endMessage == null) this.endMessage = endMessage;
Game1.GameSession.EndShift(endMessage); GameMain.GameSession.EndShift(endMessage);
} }
@@ -23,7 +23,7 @@ namespace Subsurface
{ {
Location[] locations = new Location[2]; 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++) for (int i = 0; i < 2; i++)
{ {
@@ -47,7 +47,7 @@ namespace Subsurface
CargoManager = new CargoManager(); 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; endShiftButton.OnClicked = EndShift;
for (int i = 0; i < 3; i++) for (int i = 0; i < 3; i++)
@@ -101,7 +101,7 @@ namespace Subsurface
if (!savedOnStart) if (!savedOnStart)
{ {
SaveUtil.SaveGame(Game1.GameSession.SaveFile); SaveUtil.SaveGame(GameMain.GameSession.SaveFile);
savedOnStart = true; savedOnStart = true;
} }
@@ -192,9 +192,9 @@ namespace Subsurface
sb.Append("Your entire crew has died!"); sb.Append("Your entire crew has died!");
var msgBox = new GUIMessageBox("", sb.ToString(), new string[] { "Load game", "Quit" }); 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[0].OnClicked += msgBox.Close;
msgBox.Buttons[1].OnClicked = Game1.LobbyScreen.QuitToMainMenu; msgBox.Buttons[1].OnClicked = GameMain.LobbyScreen.QuitToMainMenu;
msgBox.Buttons[1].OnClicked += msgBox.Close; msgBox.Buttons[1].OnClicked += msgBox.Close;
} }
else else
@@ -217,7 +217,7 @@ namespace Subsurface
Map.MoveToNextLocation(); Map.MoveToNextLocation();
} }
SaveUtil.SaveGame(Game1.GameSession.SaveFile); SaveUtil.SaveGame(GameMain.GameSession.SaveFile);
} }
CrewManager.EndShift(); CrewManager.EndShift();
@@ -226,7 +226,7 @@ namespace Subsurface
Character.CharacterList[i].Remove(); Character.CharacterList[i].Remove();
} }
Game1.GameSession.EndShift(""); GameMain.GameSession.EndShift("");
} }
@@ -25,7 +25,7 @@ namespace Subsurface
public override void Update(float deltaTime) public override void Update(float deltaTime)
{ {
if (Game1.Server == null) return; if (GameMain.Server == null) return;
base.Update(deltaTime); base.Update(deltaTime);
@@ -34,21 +34,21 @@ namespace Subsurface
if (traitor==null || target ==null) if (traitor==null || target ==null)
{ {
int clientCount = Game1.Server.connectedClients.Count(); int clientCount = GameMain.Server.connectedClients.Count();
if (clientCount < 2) return; if (clientCount < 2) return;
int traitorIndex = Rand.Int(clientCount, false); int traitorIndex = Rand.Int(clientCount, false);
traitor = Game1.Server.connectedClients[traitorIndex]; traitor = GameMain.Server.connectedClients[traitorIndex];
int targetIndex = 0; int targetIndex = 0;
while (targetIndex == traitorIndex) while (targetIndex == traitorIndex)
{ {
targetIndex = Rand.Int(clientCount, false); 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 else
{ {
@@ -18,13 +18,13 @@ namespace Subsurface
{ {
Submarine.Load("Content/Map/TutorialSub.gz"); 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) public TutorialMode(GameModePreset preset)
@@ -313,7 +313,7 @@ namespace Subsurface
Vector2 steeringDir = windows[0].Position - moloch.Position; Vector2 steeringDir = windows[0].Position - moloch.Position;
if (steeringDir != Vector2.Zero) steeringDir = Vector2.Normalize(steeringDir); 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); limb.body.LinearVelocity = new Vector2(limb.LinearVelocity.X, limb.LinearVelocity.Y + steeringDir.Y*10.0f);
} }
@@ -511,7 +511,7 @@ namespace Subsurface
float secondsLeft = endPreviewLength; float secondsLeft = endPreviewLength;
Character.Controlled = null; Character.Controlled = null;
Game1.GameScreen.Cam.TargetPos = Vector2.Zero; GameMain.GameScreen.Cam.TargetPos = Vector2.Zero;
do do
{ {
@@ -522,14 +522,14 @@ namespace Subsurface
(float)Math.Cos(camAngle) * (Submarine.Borders.Width / 2.0f), (float)Math.Cos(camAngle) * (Submarine.Borders.Width / 2.0f),
(float)Math.Sin(camAngle) * (Submarine.Borders.Height / 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); //Game1.GameScreen.Cam.MoveCamera((float)deltaTime);
yield return CoroutineStatus.Running; yield return CoroutineStatus.Running;
} while (secondsLeft > 0.0f); } while (secondsLeft > 0.0f);
Submarine.Unload(); Submarine.Unload();
Game1.MainMenuScreen.Select(); GameMain.MainMenuScreen.Select();
yield return CoroutineStatus.Success; yield return CoroutineStatus.Success;
} }
@@ -544,7 +544,7 @@ namespace Subsurface
messageBox.Buttons[0].OnClicked += messageBox.Close; messageBox.Buttons[0].OnClicked += messageBox.Close;
//messageBox.Buttons[1].UserData = MainMenuScreen.Tabs.Main; //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; messageBox.Buttons[1].OnClicked += messageBox.Close;
+8 -8
View File
@@ -77,7 +77,7 @@ namespace Subsurface
this.saveFile = saveFile; 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.gameMode = gameMode;
this.submarine = selectedSub; this.submarine = selectedSub;
@@ -107,7 +107,7 @@ namespace Subsurface
public void StartShift(TimeSpan duration, Level level, bool reloadSub = true) 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; this.level = level;
@@ -118,7 +118,7 @@ namespace Subsurface
level.Generate(submarine == null ? 100.0f : Math.Max(Submarine.Borders.Width, Submarine.Borders.Height)); level.Generate(submarine == null ? 100.0f : Math.Max(Submarine.Borders.Width, Submarine.Borders.Height));
submarine.SetPosition(level.StartPosition - new Vector2(0.0f, 2000.0f)); 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); if (Quest!=null) Quest.Start(Level.Loaded);
@@ -132,14 +132,14 @@ namespace Subsurface
{ {
if (Quest != null) Quest.End(); 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(); taskManager.EndShift();
@@ -160,7 +160,7 @@ namespace Subsurface
{ {
SaveUtil.LoadGame(saveFile); SaveUtil.LoadGame(saveFile);
Game1.LobbyScreen.Select(); GameMain.LobbyScreen.Select();
return true; return true;
} }
@@ -46,19 +46,19 @@ namespace Subsurface
case 2: case 2:
slotPositions[i] = new Vector2( slotPositions[i] = new Vector2(
spacing, spacing,
Game1.GraphicsHeight - (spacing + rectHeight) * (3 - i)); GameMain.GraphicsHeight - (spacing + rectHeight) * (3 - i));
break; break;
//lefthand, righthand //lefthand, righthand
case 3: case 3:
case 4: case 4:
slotPositions[i] = new Vector2( slotPositions[i] = new Vector2(
spacing * 2 + rectWidth + (spacing + rectWidth) * (i - 3), spacing * 2 + rectWidth + (spacing + rectWidth) * (i - 3),
Game1.GraphicsHeight - (spacing + rectHeight)*3); GameMain.GraphicsHeight - (spacing + rectHeight)*3);
break; break;
default: default:
slotPositions[i] = new Vector2( slotPositions[i] = new Vector2(
spacing * 2 + rectWidth + (spacing + rectWidth) * ((i - 3)%5), 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; break;
} }
} }
+4 -4
View File
@@ -119,7 +119,7 @@ namespace Subsurface.Items.Components
(int)doorSprite.size.X, (int)doorSprite.size.X,
(int)doorSprite.size.Y); (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.Width, 1)),
ConvertUnits.ToSimUnits(Math.Max(doorRect.Height, 1)), ConvertUnits.ToSimUnits(Math.Max(doorRect.Height, 1)),
1.5f)); 1.5f));
@@ -282,8 +282,8 @@ namespace Subsurface.Items.Components
foreach (Character c in Character.CharacterList) foreach (Character c in Character.CharacterList)
{ {
int dir = Math.Sign(c.AnimController.limbs[0].SimPosition.X - simPos.X); int dir = Math.Sign(c.AnimController.Limbs[0].SimPosition.X - simPos.X);
foreach (Limb l in c.AnimController.limbs) foreach (Limb l in c.AnimController.Limbs)
{ {
if (l.SimPosition.Y < simPos.Y || l.SimPosition.Y > simPos.Y - simSize.Y) continue; 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; if (Math.Abs(l.SimPosition.X - simPos.X) > simSize.X * 2.0f) continue;
@@ -299,7 +299,7 @@ namespace Subsurface.Items.Components
{ {
base.Remove(); base.Remove();
Game1.World.RemoveBody(body.FarseerBody); GameMain.World.RemoveBody(body.FarseerBody);
if (linkedGap!=null) linkedGap.Remove(); if (linkedGap!=null) linkedGap.Remove();
@@ -101,7 +101,7 @@ namespace Subsurface.Items.Components
Msg = ""; 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); //holdAngle = ToolBox.GetAttributeFloat(element, "holdangle", 0.0f);
@@ -51,7 +51,7 @@ namespace Subsurface.Items.Components
item.body.FarseerBody.CollidesWith = Physics.CollisionCharacter | Physics.CollisionWall; item.body.FarseerBody.CollidesWith = Physics.CollisionCharacter | Physics.CollisionWall;
item.body.FarseerBody.OnCollision += OnCollision; 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); item.body.FarseerBody.IgnoreCollisionWith(l.body.FarseerBody);
@@ -153,7 +153,7 @@ namespace Subsurface.Items.Components
item.body.CollisionCategories = Physics.CollisionMisc; item.body.CollisionCategories = Physics.CollisionMisc;
item.body.CollidesWith = Physics.CollisionWall; 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); item.body.FarseerBody.RestoreCollisionWith(l.body.FarseerBody);
} }
@@ -60,7 +60,7 @@ namespace Subsurface.Items.Components
bool failed = DoesUseFail(character); bool failed = DoesUseFail(character);
List<Body> limbBodies = new List<Body>(); List<Body> limbBodies = new List<Body>();
foreach (Limb l in character.AnimController.limbs) foreach (Limb l in character.AnimController.Limbs)
{ {
limbBodies.Add(l.body.FarseerBody); limbBodies.Add(l.body.FarseerBody);
} }
@@ -116,7 +116,7 @@ namespace Subsurface.Items.Components
(float)Math.Sin(item.body.Rotation)) * range * item.body.Dir; (float)Math.Sin(item.body.Rotation)) * range * item.body.Dir;
List<Body> ignoredBodies = new List<Body>(); List<Body> ignoredBodies = new List<Body>();
foreach (Limb limb in character.AnimController.limbs) foreach (Limb limb in character.AnimController.Limbs)
{ {
ignoredBodies.Add(limb.body.FarseerBody); ignoredBodies.Add(limb.body.FarseerBody);
} }
@@ -200,7 +200,7 @@ namespace Subsurface.Items.Components
if (!string.IsNullOrWhiteSpace(particles)) 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); -item.body.Rotation + ((item.body.Dir>0.0f) ? 0.0f : MathHelper.Pi), 0.0f);
} }
@@ -196,10 +196,10 @@ namespace Subsurface.Items.Components
break; break;
case "guiframe": case "guiframe":
Vector4 rect = ToolBox.GetAttributeVector4(subElement, "rect", Vector4.One); Vector4 rect = ToolBox.GetAttributeVector4(subElement, "rect", Vector4.One);
rect.X *= Game1.GraphicsWidth; rect.X *= GameMain.GraphicsWidth;
rect.Y *= Game1.GraphicsHeight; rect.Y *= GameMain.GraphicsHeight;
rect.Z *= Game1.GraphicsWidth; rect.Z *= GameMain.GraphicsWidth;
rect.W *= Game1.GraphicsHeight; rect.W *= GameMain.GraphicsHeight;
Vector4 color = ToolBox.GetAttributeVector4(subElement, "color", Vector4.One); Vector4 color = ToolBox.GetAttributeVector4(subElement, "color", Vector4.One);
@@ -72,7 +72,7 @@ namespace Subsurface.Items.Components
for (int i = 0; i < 5; i++) 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))); -currForce/5.0f + new Vector2(Rand.Range(-100.0f, 100.0f), Rand.Range(-50f, 50f)));
} }
} }
@@ -74,7 +74,7 @@ namespace Subsurface.Items.Components
} }
int width = 400, height = 300; 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; itemList.OnSelected = SelectItem;
//structureList.CheckSelected = MapEntityPrefab.GetSelected; //structureList.CheckSelected = MapEntityPrefab.GetSelected;
@@ -110,7 +110,7 @@ namespace Subsurface.Items.Components
if (targetItem == null) return false; if (targetItem == null) return false;
int width = 200, height = 150; 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; //selectedItemFrame.Padding = GUI.style.smallPadding;
if (targetItem.TargetItem.sprite != null) if (targetItem.TargetItem.sprite != null)
@@ -150,20 +150,20 @@ namespace Subsurface.Items.Components
screenOverlay.Draw(spriteBatch, center, 0.0f, rect.Width/screenOverlay.size.X); screenOverlay.Draw(spriteBatch, center, 0.0f, rect.Width/screenOverlay.size.X);
} }
if (Game1.GameSession == null) return; if (GameMain.GameSession == null) return;
DrawMarker(spriteBatch, 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)); (Level.Loaded.StartPosition + Level.Loaded.Position), displayScale, center, (rect.Width * 0.55f));
DrawMarker(spriteBatch, 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)); (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)) if (!string.IsNullOrWhiteSpace(quest.RadarLabel))
{ {
@@ -184,8 +184,8 @@ namespace Subsurface.Items.Components
public override void DrawHUD(SpriteBatch spriteBatch, Character character) public override void DrawHUD(SpriteBatch spriteBatch, Character character)
{ {
int width = 300, height = 200; int width = 300, height = 200;
int x = Game1.GraphicsWidth / 2 - width / 2; int x = GameMain.GraphicsWidth / 2 - width / 2;
int y = Game1.GraphicsHeight / 2 - height / 2; int y = GameMain.GraphicsHeight / 2 - height / 2;
GUI.DrawRectangle(spriteBatch, new Rectangle(x, y, width, height), Color.Black, true); GUI.DrawRectangle(spriteBatch, new Rectangle(x, y, width, height), Color.Black, true);
@@ -65,7 +65,7 @@ namespace Subsurface.Items.Components
Vector2 baseVel = Rand.Vector(300.0f); Vector2 baseVel = Rand.Vector(300.0f);
for (int i = 0; i < 10; i++) 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); baseVel + Rand.Vector(100.0f), 0.0f);
if (particle != null) particle.Size *= Rand.Range(0.5f,1.0f); if (particle != null) particle.Size *= Rand.Range(0.5f,1.0f);
@@ -106,7 +106,7 @@ namespace Subsurface.Items.Components
if (stickJoint != null && doesStick) if (stickJoint != null && doesStick)
{ {
if (stickTarget!=null) item.body.FarseerBody.RestoreCollisionWith(stickTarget); if (stickTarget!=null) item.body.FarseerBody.RestoreCollisionWith(stickTarget);
Game1.World.RemoveJoint(stickJoint); GameMain.World.RemoveJoint(stickJoint);
stickJoint = null; stickJoint = null;
} }
} }
@@ -122,7 +122,7 @@ namespace Subsurface.Items.Components
item.body.FarseerBody.RestoreCollisionWith(stickTarget); item.body.FarseerBody.RestoreCollisionWith(stickTarget);
} }
Game1.World.RemoveJoint(stickJoint); GameMain.World.RemoveJoint(stickJoint);
stickJoint = null; stickJoint = null;
isActive = false; isActive = false;
@@ -209,7 +209,7 @@ namespace Subsurface.Items.Components
item.body.FarseerBody.IgnoreCollisionWith(targetBody); item.body.FarseerBody.IgnoreCollisionWith(targetBody);
stickTarget = targetBody; stickTarget = targetBody;
Game1.World.AddJoint(stickJoint); GameMain.World.AddJoint(stickJoint);
isActive = true; isActive = true;
+7 -7
View File
@@ -90,7 +90,7 @@ namespace Subsurface.Items.Components
Vertices box = PolygonTools.CreateRectangle(sectionLength, 0.05f); Vertices box = PolygonTools.CreateRectangle(sectionLength, 0.05f);
PolygonShape shape = new PolygonShape(box, 5); PolygonShape shape = new PolygonShape(box, 5);
List<Body>ropeList = PathManager.EvenlyDistributeShapesAlongPath(Game1.World, ropePath, shape, BodyType.Dynamic, (int)(length/sectionLength)); List<Body>ropeList = PathManager.EvenlyDistributeShapesAlongPath(GameMain.World, ropePath, shape, BodyType.Dynamic, (int)(length/sectionLength));
ropeBodies = new PhysicsBody[ropeList.Count()]; ropeBodies = new PhysicsBody[ropeList.Count()];
for (int i = 0; i<ropeBodies.Length; i++) for (int i = 0; i<ropeBodies.Length; i++)
@@ -104,14 +104,14 @@ namespace Subsurface.Items.Components
ropeBodies[i] = new PhysicsBody(ropeList[i]); ropeBodies[i] = new PhysicsBody(ropeList[i]);
} }
List<RevoluteJoint> joints = PathManager.AttachBodiesWithRevoluteJoint(Game1.World, ropeList, List<RevoluteJoint> joints = PathManager.AttachBodiesWithRevoluteJoint(GameMain.World, ropeList,
new Vector2(-sectionLength/2, 0.0f), new Vector2(sectionLength/2, 0.0f), false, false); new Vector2(-sectionLength/2, 0.0f), new Vector2(sectionLength/2, 0.0f), false, false);
ropeJoints = new RevoluteJoint[joints.Count+1]; ropeJoints = new RevoluteJoint[joints.Count+1];
//ropeJoints[0] = JointFactory.CreateRevoluteJoint(Game1.world, item.body, ropeList[0], new Vector2(0f, -0.0f)); //ropeJoints[0] = JointFactory.CreateRevoluteJoint(Game1.world, item.body, ropeList[0], new Vector2(0f, -0.0f));
for (int i = 0; i < joints.Count; i++) 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.Length = sectionLength;
distanceJoint.DampingRatio = 1.0f; distanceJoint.DampingRatio = 1.0f;
@@ -299,8 +299,8 @@ namespace Subsurface.Items.Components
ropeBodies[ropeBodies.Length - 1].SetTransform(projectile.body.SimPosition, projectile.body.Rotation); ropeBodies[ropeBodies.Length - 1].SetTransform(projectile.body.SimPosition, projectile.body.Rotation);
//attach projectile to the last section of the rope //attach projectile to the last section of the rope
if (ropeJoints[ropeJoints.Length-1] != null) Game1.World.RemoveJoint(ropeJoints[ropeJoints.Length-1]); if (ropeJoints[ropeJoints.Length-1] != null) GameMain.World.RemoveJoint(ropeJoints[ropeJoints.Length-1]);
ropeJoints[ropeJoints.Length - 1] = JointFactory.CreateRevoluteJoint(Game1.World, ropeJoints[ropeJoints.Length - 1] = JointFactory.CreateRevoluteJoint(GameMain.World,
projectile.body.FarseerBody, ropeBodies[ropeBodies.Length - 1].FarseerBody, projectile.body.FarseerBody, ropeBodies[ropeBodies.Length - 1].FarseerBody,
projectileAnchor, new Vector2(sectionLength / 2, 0.0f)); projectileAnchor, new Vector2(sectionLength / 2, 0.0f));
@@ -315,7 +315,7 @@ namespace Subsurface.Items.Components
body.SetTransform(TransformedBarrelPos, rotation); body.SetTransform(TransformedBarrelPos, rotation);
//Vector2 axis = new Vector2((float)Math.Cos(rotation), (float)Math.Sin(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, gunJoint = new DistanceJoint(item.body.FarseerBody, body, BarrelPos,
new Vector2(sectionLength / 2, 0.0f)); new Vector2(sectionLength / 2, 0.0f));
@@ -328,7 +328,7 @@ namespace Subsurface.Items.Components
//gunJoint.LimitEnabled = true; //gunJoint.LimitEnabled = true;
//gunJoint.ReferenceAngle = 0.0f; //gunJoint.ReferenceAngle = 0.0f;
Game1.World.AddJoint(gunJoint); GameMain.World.AddJoint(gunJoint);
} }
} }
@@ -172,7 +172,7 @@ namespace Subsurface.Items.Components
{ {
int width = 400, height = 200; 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); Rectangle panelRect = new Rectangle(x, y, width, height);
@@ -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); 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 && 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); 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) if (selectedNodeIndex!=null && item.IsSelected)
{ {
MapEntity.DisableSelect = true; 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]; Vector2 pos = Nodes[(int)selectedNodeIndex];
+2 -2
View File
@@ -28,8 +28,8 @@ namespace Subsurface
set set
{ {
centerPos = value; centerPos = value;
centerPos.X *= Game1.GraphicsWidth; centerPos.X *= GameMain.GraphicsWidth;
centerPos.Y *= Game1.GraphicsHeight; centerPos.Y *= GameMain.GraphicsHeight;
} }
} }
+27 -12
View File
@@ -40,6 +40,19 @@ namespace Subsurface
get { return properties; } get { return properties; }
} }
private bool? hasInGameEditableProperties;
bool HasInGameEditableProperties
{
get
{
if (hasInGameEditableProperties==null)
{
hasInGameEditableProperties = GetProperties<InGameEditable>().Count>0;
}
return (bool)hasInGameEditableProperties;
}
}
public PhysicsBody body; public PhysicsBody body;
private float condition; private float condition;
@@ -194,7 +207,7 @@ namespace Subsurface
public override string ToString() public override string ToString()
{ {
return (Game1.DebugDraw) ? Name +"(ID: "+ID+")" : Name; return (GameMain.DebugDraw) ? Name +"(ID: "+ID+")" : Name;
} }
public List<IPropertyObject> AllPropertyObjects public List<IPropertyObject> AllPropertyObjects
@@ -622,7 +635,7 @@ namespace Subsurface
private GUIComponent CreateEditingHUD(bool inGame=false) private GUIComponent CreateEditingHUD(bool inGame=false)
{ {
int width = 500; int width = 500;
int x = Game1.GraphicsWidth/2-width/2, y = 10; int x = GameMain.GraphicsWidth/2-width/2, y = 10;
List<ObjectProperty> editableProperties = inGame ? GetProperties<InGameEditable>() : GetProperties<Editable>(); List<ObjectProperty> editableProperties = inGame ? GetProperties<InGameEditable>() : GetProperties<Editable>();
@@ -700,27 +713,29 @@ namespace Subsurface
public virtual void DrawHUD(SpriteBatch spriteBatch, Character character) 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); editingHUD = CreateEditingHUD(true);
} }
if (editingHUD.Rect.Height>60) if (editingHUD.Rect.Height > 60)
{ {
editingHUD.Update((float)Physics.step); editingHUD.Update((float)Physics.step);
editingHUD.Draw(spriteBatch); 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);
} }
} }
+7 -7
View File
@@ -53,15 +53,15 @@ namespace Subsurface
{ {
Vector2 displayPosition = ConvertUnits.ToDisplayUnits(simPosition); Vector2 displayPosition = ConvertUnits.ToDisplayUnits(simPosition);
Game1.ParticleManager.CreateParticle("shockwave", displayPosition, GameMain.ParticleManager.CreateParticle("shockwave", displayPosition,
Vector2.Zero, 0.0f); Vector2.Zero, 0.0f);
for (int i = 0; i < range * 10; i++) 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); 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); Rand.Vector(Rand.Range(50f, 100.0f)), 0.0f);
} }
@@ -72,8 +72,8 @@ namespace Subsurface
light = new LightSource(displayPosition, displayRange, Color.LightYellow); light = new LightSource(displayPosition, displayRange, Color.LightYellow);
CoroutineManager.StartCoroutine(DimLight()); CoroutineManager.StartCoroutine(DimLight());
float cameraDist = Vector2.Distance(Game1.GameScreen.Cam.Position, displayPosition)/2.0f; float cameraDist = Vector2.Distance(GameMain.GameScreen.Cam.Position, displayPosition)/2.0f;
Game1.GameScreen.Cam.Shake = CameraShake * Math.Max((displayRange - cameraDist)/displayRange, 0.0f); GameMain.GameScreen.Cam.Shake = CameraShake * Math.Max((displayRange - cameraDist)/displayRange, 0.0f);
if (structureDamage > 0.0f) if (structureDamage > 0.0f)
{ {
@@ -111,11 +111,11 @@ namespace Subsurface
float distFactor = 1.0f - dist / range; 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; 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) if (force>0.0f)
{ {
+4 -4
View File
@@ -260,7 +260,7 @@ namespace Subsurface
{ {
pos.Y = MathHelper.Clamp(lowerSurface, rect.Y - rect.Height, rect.Y); 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(pos.X, pos.Y - Rand.Range(0.0f, 10.0f)),
new Vector2( new Vector2(
MathHelper.Clamp(flowForce.X, -5000.0f, 5000.0f) * Rand.Range(0.5f, 0.7f), 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); 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 else
{ {
@@ -281,12 +281,12 @@ namespace Subsurface
for (int i = 0; i < rect.Width; i += (int)Rand.Range(80, 100)) for (int i = 0; i < rect.Width; i += (int)Rand.Range(80, 100))
{ {
pos.X = Rand.Range(rect.X, rect.X + rect.Width); 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))); 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); 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);
} }
} }
+3 -3
View File
@@ -211,7 +211,7 @@ namespace Subsurface
float maxDelta = Math.Max(Math.Abs(rightDelta[i]), Math.Abs(leftDelta[i])); float maxDelta = Math.Max(Math.Abs(rightDelta[i]), Math.Abs(leftDelta[i]));
if (maxDelta > Rand.Range(0.2f,10.0f)) 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(rect.X + WaveWidth * i,surface + waveY[i]),
new Vector2(0.0f, -50.0f)); new Vector2(0.0f, -50.0f));
} }
@@ -276,7 +276,7 @@ namespace Subsurface
public override void Draw(SpriteBatch spriteBatch, bool editing) public override void Draw(SpriteBatch spriteBatch, bool editing)
{ {
if (!editing && !Game1.DebugDraw) return; if (!editing && !GameMain.DebugDraw) return;
GUI.DrawRectangle(spriteBatch, GUI.DrawRectangle(spriteBatch,
new Vector2(rect.X, -rect.Y), new Vector2(rect.X, -rect.Y),
@@ -313,7 +313,7 @@ namespace Subsurface
//interpolate the position of the rendered surface towards the "target surface" //interpolate the position of the rendered surface towards the "target surface"
surface = surface + (surfaceY - surface) / 10.0f; 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; if (bottom > cam.WorldView.Y || top < cam.WorldView.Y - cam.WorldView.Height) return;
+7 -7
View File
@@ -102,7 +102,7 @@ namespace Subsurface
if (basicEffect==null) if (basicEffect==null)
{ {
basicEffect = new BasicEffect(Game1.CurrGraphicsDevice); basicEffect = new BasicEffect(GameMain.CurrGraphicsDevice);
basicEffect.VertexColorEnabled = false; basicEffect.VertexColorEnabled = false;
basicEffect.TextureEnabled = true; basicEffect.TextureEnabled = true;
@@ -354,7 +354,7 @@ namespace Subsurface
Debug.WriteLine("Generatelevel: " + sw2.ElapsedMilliseconds + " ms"); Debug.WriteLine("Generatelevel: " + sw2.ElapsedMilliseconds + " ms");
sw2.Restart(); 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); vertexBuffer.SetData(vertices);
if (mirror) if (mirror)
@@ -639,7 +639,7 @@ int currentTargetIndex = 1;
triangles = MathUtils.TriangulateConvexHull(bodyPoints, cell.Center); 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++) for (int i = 0; i < triangles.Count; i++)
{ {
@@ -661,7 +661,7 @@ int currentTargetIndex = 1;
for (int i = 0; i < 2; i++ ) 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.BodyType = BodyType.Kinematic;
shaftBody.CollisionCategories = Physics.CollisionWall | Physics.CollisionLevel; shaftBody.CollisionCategories = Physics.CollisionWall | Physics.CollisionLevel;
shaftBody.SetTransform(ConvertUnits.ToSimUnits((i==0) ? startPosition : endPosition), 0.0f); shaftBody.SetTransform(ConvertUnits.ToSimUnits((i==0) ? startPosition : endPosition), 0.0f);
@@ -720,7 +720,7 @@ int currentTargetIndex = 1;
foreach (Character character in Character.CharacterList) 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; if (character.AnimController.CurrentHull != null) continue;
@@ -762,7 +762,7 @@ int currentTargetIndex = 1;
{ {
if (character.AnimController.CurrentHull != null) continue; if (character.AnimController.CurrentHull != null) continue;
foreach (Limb limb in character.AnimController.limbs) foreach (Limb limb in character.AnimController.Limbs)
{ {
limb.body.LinearVelocity -= prevVelocity; limb.body.LinearVelocity -= prevVelocity;
} }
@@ -949,7 +949,7 @@ int currentTargetIndex = 1;
if (vertices.Length <= 0) return; if (vertices.Length <= 0) return;
basicEffect.World = Matrix.CreateTranslation(new Vector3(Position, 0.0f)) * cam.ShaderTransform 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(); basicEffect.CurrentTechnique.Passes[0].Apply();
+3 -3
View File
@@ -37,12 +37,12 @@ namespace Subsurface.Lights
{ {
if (shadowEffect == null) if (shadowEffect == null)
{ {
shadowEffect = new BasicEffect(Game1.CurrGraphicsDevice); shadowEffect = new BasicEffect(GameMain.CurrGraphicsDevice);
shadowEffect.VertexColorEnabled = true; shadowEffect.VertexColorEnabled = true;
} }
if (penumbraEffect == null) if (penumbraEffect == null)
{ {
penumbraEffect = new BasicEffect(Game1.CurrGraphicsDevice); penumbraEffect = new BasicEffect(GameMain.CurrGraphicsDevice);
penumbraEffect.TextureEnabled = true; penumbraEffect.TextureEnabled = true;
//shadowEffect.VertexColorEnabled = true; //shadowEffect.VertexColorEnabled = true;
penumbraEffect.LightingEnabled = false; penumbraEffect.LightingEnabled = false;
@@ -225,7 +225,7 @@ namespace Subsurface.Lights
} }
shadowEffect.World = cam.ShaderTransform 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(); shadowEffect.CurrentTechnique.Passes[0].Apply();
graphicsDevice.DrawUserPrimitives<VertexPositionColor>(PrimitiveType.TriangleStrip, shadowVertices, 0, shadowVertexCount * 2 - 2); graphicsDevice.DrawUserPrimitives<VertexPositionColor>(PrimitiveType.TriangleStrip, shadowVertices, 0, shadowVertexCount * 2 - 2);
+1 -1
View File
@@ -34,7 +34,7 @@ namespace Subsurface.Lights
var pp = graphics.PresentationParameters; 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, pp.BackBufferFormat, pp.DepthStencilFormat, pp.MultiSampleCount,
RenderTargetUsage.DiscardContents); RenderTargetUsage.DiscardContents);
+2 -2
View File
@@ -47,7 +47,7 @@ namespace Subsurface.Lights
texture = lightTexture; texture = lightTexture;
Game1.LightManager.AddLight(this); GameMain.LightManager.AddLight(this);
} }
public void Draw(SpriteBatch spriteBatch) public void Draw(SpriteBatch spriteBatch)
@@ -59,7 +59,7 @@ namespace Subsurface.Lights
public void Remove() public void Remove()
{ {
Game1.LightManager.RemoveLight(this); GameMain.LightManager.RemoveLight(this);
} }
} }
} }
+1 -1
View File
@@ -296,7 +296,7 @@ namespace Subsurface
{ {
selectedConnection = connection; selectedConnection = connection;
selectedLocation = highlightedLocation; selectedLocation = highlightedLocation;
Game1.LobbyScreen.SelectLocation(highlightedLocation, connection); GameMain.LobbyScreen.SelectLocation(highlightedLocation, connection);
} }
} }
+7 -7
View File
@@ -148,7 +148,7 @@ namespace Subsurface
bodies = new List<Body>(); bodies = new List<Body>();
//gaps = new List<Gap>(); //gaps = new List<Gap>();
Body newBody = BodyFactory.CreateRectangle(Game1.World, Body newBody = BodyFactory.CreateRectangle(GameMain.World,
ConvertUnits.ToSimUnits(rect.Width), ConvertUnits.ToSimUnits(rect.Width),
ConvertUnits.ToSimUnits(rect.Height), ConvertUnits.ToSimUnits(rect.Height),
1.5f); 1.5f);
@@ -206,7 +206,7 @@ namespace Subsurface
{ {
bodies = new List<Body>(); bodies = new List<Body>();
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(rect.Width * Math.Sqrt(2.0) + Submarine.GridSize.X*3.0f),
ConvertUnits.ToSimUnits(10), ConvertUnits.ToSimUnits(10),
1.5f); 1.5f);
@@ -273,7 +273,7 @@ namespace Subsurface
if (bodies != null) if (bodies != null)
{ {
foreach (Body b in bodies) foreach (Body b in bodies)
Game1.World.RemoveBody(b); GameMain.World.RemoveBody(b);
} }
if (convexHull != null) convexHull.Remove(); if (convexHull != null) convexHull.Remove();
@@ -381,7 +381,7 @@ namespace Subsurface
{ {
if (!prefab.HasBody || prefab.IsPlatform) return; if (!prefab.HasBody || prefab.IsPlatform) return;
if (Game1.Client==null) if (GameMain.Client==null)
SetDamage(sectionIndex, sections[sectionIndex].damage + damage); SetDamage(sectionIndex, sections[sectionIndex].damage + damage);
} }
@@ -419,7 +419,7 @@ namespace Subsurface
int i = FindSectionIndex(ConvertUnits.ToDisplayUnits(position)); int i = FindSectionIndex(ConvertUnits.ToDisplayUnits(position));
if (i == -1) return new AttackResult(0.0f, 0.0f); 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)) if (playSound && !SectionHasHole(i))
{ {
@@ -477,7 +477,7 @@ namespace Subsurface
{ {
foreach (Body b in bodies) foreach (Body b in bodies)
{ {
Game1.World.RemoveBody(b); GameMain.World.RemoveBody(b);
} }
bodies.Clear(); bodies.Clear();
@@ -531,7 +531,7 @@ namespace Subsurface
private Body CreateRectBody(Rectangle rect) private Body CreateRectBody(Rectangle rect)
{ {
Body newBody = BodyFactory.CreateRectangle(Game1.World, Body newBody = BodyFactory.CreateRectangle(GameMain.World,
ConvertUnits.ToSimUnits(rect.Width), ConvertUnits.ToSimUnits(rect.Width),
ConvertUnits.ToSimUnits(rect.Height), ConvertUnits.ToSimUnits(rect.Height),
1.5f); 1.5f);
+2 -2
View File
@@ -152,8 +152,8 @@ namespace Subsurface
sprite.DrawTiled(spriteBatch, new Vector2(newRect.X, -newRect.Y), new Vector2(newRect.Width, newRect.Height), Color.White); 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 - GameMain.GraphicsWidth, -newRect.Y, newRect.Width + GameMain.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, -newRect.Y - GameMain.GraphicsHeight, newRect.Width, newRect.Height + GameMain.GraphicsHeight*2), Color.White);
if (PlayerInput.GetMouseState.RightButton == ButtonState.Pressed) selected = null; if (PlayerInput.GetMouseState.RightButton == ButtonState.Pressed) selected = null;
} }
+55 -29
View File
@@ -326,7 +326,7 @@ namespace Subsurface
float closestFraction = 1.0f; float closestFraction = 1.0f;
Body closestBody = null; 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 (fixture == null || fixture.CollisionCategories == Category.None) return -1;
if (ignoredBodies != null && ignoredBodies.Contains(fixture.Body)) return -1; if (ignoredBodies != null && ignoredBodies.Contains(fixture.Body)) return -1;
@@ -363,7 +363,7 @@ namespace Subsurface
return null; 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; if (fixture == null || fixture.CollisionCategories != Physics.CollisionWall) return -1;
@@ -395,7 +395,7 @@ namespace Subsurface
Body foundBody = null; Body foundBody = null;
AABB aabb = new AABB(point, point); AABB aabb = new AABB(point, point);
Game1.World.QueryAABB(p => GameMain.World.QueryAABB(p =>
{ {
foundBody = p.Body; foundBody = p.Body;
@@ -406,16 +406,16 @@ namespace Subsurface
return foundBody; return foundBody;
} }
public static bool InsideWall(Vector2 point) //public static bool InsideWall(Vector2 point)
{ //{
Body foundBody = PickBody(point); // Body foundBody = PickBody(point);
if (foundBody==null) return false; // if (foundBody==null) return false;
Structure wall = foundBody.UserData as Structure; // Structure wall = foundBody.UserData as Structure;
if (wall == null || wall.IsPlatform) return false; // if (wall == null || wall.IsPlatform) return false;
return true; // return true;
} //}
//movement ---------------------------------------------------- //movement ----------------------------------------------------
@@ -436,8 +436,10 @@ namespace Subsurface
} }
Translate(translateAmount); Translate(translateAmount);
//-------------------------
ApplyForce(CalculateBuoyancy()); Vector2 totalForce = CalculateBuoyancy();
float dragCoefficient = 0.00001f; float dragCoefficient = 0.00001f;
@@ -446,8 +448,11 @@ namespace Subsurface
if (speed != Vector2.Zero) if (speed != Vector2.Zero)
{ {
ApplyForce(-Vector2.Normalize(speed) * drag); totalForce += -Vector2.Normalize(speed) * drag;
} }
ApplyForce(totalForce);
//hullBodies[0].body.LinearVelocity = -hullBodies[0].body.Position; //hullBodies[0].body.LinearVelocity = -hullBodies[0].body.Position;
//hullBody.SetTransform(Vector2.Zero , 0.0f); //hullBody.SetTransform(Vector2.Zero , 0.0f);
@@ -462,8 +467,8 @@ namespace Subsurface
foreach (GraphEdge ge in collidingCell.edges) foreach (GraphEdge ge in collidingCell.edges)
{ {
Body body = PickBody( Body body = PickBody(
ConvertUnits.ToSimUnits(ge.point1+ Game1.GameSession.Level.Position), ConvertUnits.ToSimUnits(ge.point1+ GameMain.GameSession.Level.Position),
ConvertUnits.ToSimUnits(ge.point2 + Game1.GameSession.Level.Position), new List<Body>(){collidingCell.body}); ConvertUnits.ToSimUnits(ge.point2 + GameMain.GameSession.Level.Position), new List<Body>(){collidingCell.body});
if (body == null || body.UserData == null) continue; if (body == null || body.UserData == null) continue;
Structure structure = body.UserData as Structure; Structure structure = body.UserData as Structure;
@@ -471,6 +476,8 @@ namespace Subsurface
structure.AddDamage(lastPickedPosition, DamageType.Blunt, 50.0f, 0.0f, 0.0f, true); structure.AddDamage(lastPickedPosition, DamageType.Blunt, 50.0f, 0.0f, 0.0f, true);
} }
collidingCell = null;
//hullBodies[0].body.SetTransform(Vector2.Zero, 0.0f); //hullBodies[0].body.SetTransform(Vector2.Zero, 0.0f);
//position = hullBodies[0].body.Position; //position = hullBodies[0].body.Position;
@@ -528,15 +535,41 @@ namespace Subsurface
VoronoiCell cell = f2.Body.UserData as VoronoiCell; VoronoiCell cell = f2.Body.UserData as VoronoiCell;
if (cell==null) return true; if (cell==null) return true;
Vector2 normal = -contact.Manifold.LocalNormal; Vector2 normal = contact.Manifold.LocalNormal;
Vector2 simSpeed = ConvertUnits.ToSimUnits(speed); 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 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<Vector2> 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) if (impact < 4.0f)
{ {
speed = ConvertUnits.ToDisplayUnits(w * 0.9f - u * 0.2f); speed = ConvertUnits.ToDisplayUnits(w * 0.9f - u * 0.2f);
@@ -547,13 +580,6 @@ namespace Subsurface
speed = ConvertUnits.ToDisplayUnits(w * 0.9f + u * 0.5f); speed = ConvertUnits.ToDisplayUnits(w * 0.9f + u * 0.5f);
} }
if (contact.Manifold.PointCount >= 1)
{
FixedArray2<Vector2> worldPoints;
contact.GetWorldManifold(out normal, out worldPoints);
Game1.GameScreen.Cam.Shake = impact;
}
collisionRigidness = 0.8f; collisionRigidness = 0.8f;
@@ -828,7 +854,7 @@ namespace Subsurface
var triangulatedVertices = Triangulate.ConvexPartition(shapevertices, TriangulationAlgorithm.Bayazit); 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.BodyType = BodyType.Dynamic;
hullBody.CollisionCategories = Physics.CollisionMisc; hullBody.CollisionCategories = Physics.CollisionMisc;
@@ -880,7 +906,7 @@ namespace Subsurface
private void Clear() 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(); Entity.RemoveAll();
@@ -888,7 +914,7 @@ namespace Subsurface
Ragdoll.list.Clear(); Ragdoll.list.Clear();
Game1.World.Clear(); GameMain.World.Clear();
} }
} }
+3 -3
View File
@@ -38,7 +38,7 @@ namespace Subsurface
if (basicEffect==null) if (basicEffect==null)
{ {
basicEffect = new BasicEffect(Game1.CurrGraphicsDevice); basicEffect = new BasicEffect(GameMain.CurrGraphicsDevice);
basicEffect.VertexColorEnabled = false; basicEffect.VertexColorEnabled = false;
basicEffect.TextureEnabled = true; basicEffect.TextureEnabled = true;
@@ -58,7 +58,7 @@ namespace Subsurface
wavePos.X += 0.0001f; wavePos.X += 0.0001f;
wavePos.Y += 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(); spriteBatch.End();
} }
@@ -72,7 +72,7 @@ namespace Subsurface
basicEffect.View = Matrix.Identity; basicEffect.View = Matrix.Identity;
basicEffect.World = cam.ShaderTransform 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(); basicEffect.CurrentTechnique.Passes[0].Apply();
+2 -2
View File
@@ -55,7 +55,7 @@ namespace Subsurface
public override void Draw(SpriteBatch spriteBatch, bool editing) 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); Point pos = new Point((int)Position.X, (int)Position.Y);
@@ -144,7 +144,7 @@ namespace Subsurface
private GUIComponent CreateEditingHUD(bool inGame = false) private GUIComponent CreateEditingHUD(bool inGame = false)
{ {
int width = 500; 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 = new GUIFrame(new Rectangle(x, y, width, 150), Color.Black * 0.5f);
editingHUD.Padding = new Vector4(10, 10, 0, 0); editingHUD.Padding = new Vector4(10, 10, 0, 0);
+27 -27
View File
@@ -76,9 +76,9 @@ namespace Subsurface.Networking
outmsg.Write((byte)PacketTypes.Login); outmsg.Write((byte)PacketTypes.Login);
outmsg.Write(password); outmsg.Write(password);
outmsg.Write(Game1.Version.ToString()); outmsg.Write(GameMain.Version.ToString());
outmsg.Write(Game1.SelectedPackage.Name); outmsg.Write(GameMain.SelectedPackage.Name);
outmsg.Write(Game1.SelectedPackage.MD5hash.Hash); outmsg.Write(GameMain.SelectedPackage.MD5hash.Hash);
outmsg.Write(name); outmsg.Write(name);
// Connect client, to ip previously requested from user // Connect client, to ip previously requested from user
@@ -124,8 +124,8 @@ namespace Subsurface.Networking
private bool SelectMainMenu(GUIButton button, object obj) private bool SelectMainMenu(GUIButton button, object obj)
{ {
Disconnect(); Disconnect();
Game1.NetworkMember = null; GameMain.NetworkMember = null;
Game1.MainMenuScreen.Select(); GameMain.MainMenuScreen.Select();
return true; return true;
} }
@@ -159,12 +159,12 @@ namespace Subsurface.Networking
if (packetType == (byte)PacketTypes.LoggedIn) if (packetType == (byte)PacketTypes.LoggedIn)
{ {
myID = inc.ReadInt32(); 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."); 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 //add the names of other connected clients to the lobby screen
int existingClients = inc.ReadInt32(); int existingClients = inc.ReadInt32();
@@ -172,12 +172,12 @@ namespace Subsurface.Networking
{ {
Client otherClient = new Client(inc.ReadString(), inc.ReadInt32()); Client otherClient = new Client(inc.ReadString(), inc.ReadInt32());
Game1.NetLobbyScreen.AddPlayer(otherClient); GameMain.NetLobbyScreen.AddPlayer(otherClient);
otherClients.Add(otherClient); otherClients.Add(otherClient);
} }
//add the name of own client to the lobby screen //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; CanStart = true;
} }
@@ -186,7 +186,7 @@ namespace Subsurface.Networking
string msg = inc.ReadString(); string msg = inc.ReadString();
DebugConsole.ThrowError(msg); DebugConsole.ThrowError(msg);
Game1.MainMenuScreen.Select(); GameMain.MainMenuScreen.Select();
} }
break; break;
case NetIncomingMessageType.StatusChanged: case NetIncomingMessageType.StatusChanged:
@@ -229,7 +229,7 @@ namespace Subsurface.Networking
} }
else else
{ {
if (Screen.Selected != Game1.GameScreen) Game1.NetLobbyScreen.Select(); if (Screen.Selected != GameMain.GameScreen) GameMain.NetLobbyScreen.Select();
connected = true; connected = true;
} }
@@ -265,7 +265,7 @@ namespace Subsurface.Networking
if (myCharacter.IsDead) if (myCharacter.IsDead)
{ {
Character.Controlled = null; Character.Controlled = null;
Game1.GameScreen.Cam.TargetPos = Vector2.Zero; GameMain.GameScreen.Cam.TargetPos = Vector2.Zero;
} }
else if (gameStarted) else if (gameStarted)
{ {
@@ -327,15 +327,15 @@ namespace Subsurface.Networking
string mapName = inc.ReadString(); string mapName = inc.ReadString();
string mapHash = inc.ReadString(); string mapHash = inc.ReadString();
Game1.NetLobbyScreen.TrySelectMap(mapName, mapHash); GameMain.NetLobbyScreen.TrySelectMap(mapName, mapHash);
double durationMinutes = inc.ReadDouble(); double durationMinutes = inc.ReadDouble();
TimeSpan duration = new TimeSpan(0,(int)durationMinutes,0); TimeSpan duration = new TimeSpan(0,(int)durationMinutes,0);
Rand.SetSyncedSeed(seed); Rand.SetSyncedSeed(seed);
//int gameModeIndex = inc.ReadInt32(); //int gameModeIndex = inc.ReadInt32();
Game1.GameSession = new GameSession(Submarine.Loaded, "", Game1.NetLobbyScreen.SelectedMode); GameMain.GameSession = new GameSession(Submarine.Loaded, "", GameMain.NetLobbyScreen.SelectedMode);
Game1.GameSession.StartShift(duration, levelSeed); GameMain.GameSession.StartShift(duration, levelSeed);
//myCharacter = ReadCharacterData(inc); //myCharacter = ReadCharacterData(inc);
//Character.Controlled = myCharacter; //Character.Controlled = myCharacter;
@@ -353,7 +353,7 @@ namespace Subsurface.Networking
gameStarted = true; gameStarted = true;
Game1.GameScreen.Select(); GameMain.GameScreen.Select();
AddChatMessage("Press TAB to chat", ChatMessageType.Server); AddChatMessage("Press TAB to chat", ChatMessageType.Server);
@@ -368,7 +368,7 @@ namespace Subsurface.Networking
Client otherClient = new Client(inc.ReadString(), inc.ReadInt32()); Client otherClient = new Client(inc.ReadString(), inc.ReadInt32());
Game1.NetLobbyScreen.AddPlayer(otherClient); GameMain.NetLobbyScreen.AddPlayer(otherClient);
otherClients.Add(otherClient); otherClients.Add(otherClient);
AddChatMessage(otherClient.name + " has joined the server", ChatMessageType.Server); AddChatMessage(otherClient.name + " has joined the server", ChatMessageType.Server);
@@ -378,7 +378,7 @@ namespace Subsurface.Networking
int leavingID = inc.ReadInt32(); int leavingID = inc.ReadInt32();
AddChatMessage(inc.ReadString(), ChatMessageType.Server); AddChatMessage(inc.ReadString(), ChatMessageType.Server);
Game1.NetLobbyScreen.RemovePlayer(otherClients.Find(c => c.ID==leavingID)); GameMain.NetLobbyScreen.RemovePlayer(otherClients.Find(c => c.ID==leavingID));
break; break;
case (byte)PacketTypes.KickedOut: case (byte)PacketTypes.KickedOut:
@@ -386,7 +386,7 @@ namespace Subsurface.Networking
new GUIMessageBox("KICKED", msg); new GUIMessageBox("KICKED", msg);
Game1.MainMenuScreen.Select(); GameMain.MainMenuScreen.Select();
break; break;
case (byte)PacketTypes.Chatmessage: case (byte)PacketTypes.Chatmessage:
@@ -400,7 +400,7 @@ namespace Subsurface.Networking
break; break;
case (byte)PacketTypes.UpdateNetLobby: case (byte)PacketTypes.UpdateNetLobby:
if (gameStarted) continue; if (gameStarted) continue;
Game1.NetLobbyScreen.ReadData(inc); GameMain.NetLobbyScreen.ReadData(inc);
break; break;
case (byte)PacketTypes.Traitor: case (byte)PacketTypes.Traitor:
string targetName = inc.ReadString(); string targetName = inc.ReadString();
@@ -421,7 +421,7 @@ namespace Subsurface.Networking
var messageBox = new GUIMessageBox("The round has ended", endMessage); var messageBox = new GUIMessageBox("The round has ended", endMessage);
Character.Controlled = null; Character.Controlled = null;
Game1.LightManager.LosEnabled = false; GameMain.LightManager.LosEnabled = false;
float endPreviewLength = 10.0f; float endPreviewLength = 10.0f;
@@ -437,7 +437,7 @@ namespace Subsurface.Networking
(float)Math.Cos(camAngle) * (Submarine.Borders.Width / 2.0f), (float)Math.Cos(camAngle) * (Submarine.Borders.Width / 2.0f),
(float)Math.Sin(camAngle) * (Submarine.Borders.Height / 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); //Game1.GameScreen.Cam.MoveCamera((float)deltaTime);
messageBox.Text = endMessage + "\nReturning to lobby in " + (int)secondsLeft + " s"; messageBox.Text = endMessage + "\nReturning to lobby in " + (int)secondsLeft + " s";
@@ -448,9 +448,9 @@ namespace Subsurface.Networking
Submarine.Unload(); Submarine.Unload();
Game1.NetLobbyScreen.Select(); GameMain.NetLobbyScreen.Select();
if (Game1.GameSession!=null) Game1.GameSession.EndShift(""); if (GameMain.GameSession!=null) GameMain.GameSession.EndShift("");
myCharacter = null; myCharacter = null;
@@ -462,10 +462,10 @@ namespace Subsurface.Networking
{ {
base.Draw(spriteBatch); base.Draw(spriteBatch);
if (!Game1.DebugDraw) return; if (!GameMain.DebugDraw) return;
int width = 200, height = 300; 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); 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); 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.Gender == Gender.Male);
msg.Write(characterInfo.HeadSpriteId); msg.Write(characterInfo.HeadSpriteId);
var jobPreferences = Game1.NetLobbyScreen.JobPreferences; var jobPreferences = GameMain.NetLobbyScreen.JobPreferences;
int count = Math.Min(jobPreferences.Count, 3); int count = Math.Min(jobPreferences.Count, 3);
msg.Write(count); msg.Write(count);
for (int i = 0; i < count; i++ ) for (int i = 0; i < count; i++ )
+32 -32
View File
@@ -36,7 +36,7 @@ namespace Subsurface.Networking
public GameServer(string name, int port, bool isPublic = false, string password = "", bool attemptUPnP = false, int maxPlayers = 10) 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; endRoundButton.OnClicked = EndButtonHit;
this.name = name; this.name = name;
@@ -116,7 +116,7 @@ namespace Subsurface.Networking
DebugConsole.NewMessage("Server started", Color.Green); DebugConsole.NewMessage("Server started", Color.Green);
Game1.NetLobbyScreen.Select(); GameMain.NetLobbyScreen.Select();
started = true; started = true;
yield return CoroutineStatus.Success; yield return CoroutineStatus.Success;
} }
@@ -312,21 +312,21 @@ namespace Subsurface.Networking
break; 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); DebugConsole.NewMessage("Connection error - wrong game version", Color.Red);
break; 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); DebugConsole.NewMessage("Connection error - wrong content package name", Color.Red);
break; 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); DebugConsole.NewMessage("Connection error - wrong content package hash", Color.Red);
break; break;
} }
@@ -365,10 +365,10 @@ namespace Subsurface.Networking
if (sender == null) break; 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)", 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) else if (connectedClients.Find(x => x.name == sender.name && x != sender)!=null)
{ {
@@ -379,7 +379,7 @@ namespace Subsurface.Networking
{ {
//AssignJobs(); //AssignJobs();
Game1.NetLobbyScreen.AddPlayer(sender); GameMain.NetLobbyScreen.AddPlayer(sender);
// Notify the client that they have logged in // Notify the client that they have logged in
outmsg = server.CreateMessage(); outmsg = server.CreateMessage();
@@ -538,11 +538,11 @@ namespace Subsurface.Networking
public bool StartGame(GUIButton button, object obj) public bool StartGame(GUIButton button, object obj)
{ {
Submarine selectedMap = Game1.NetLobbyScreen.SelectedMap as Submarine; Submarine selectedMap = GameMain.NetLobbyScreen.SelectedMap as Submarine;
if (selectedMap == null) if (selectedMap == null)
{ {
Game1.NetLobbyScreen.SubList.Flash(); GameMain.NetLobbyScreen.SubList.Flash();
return false; return false;
} }
@@ -552,8 +552,8 @@ namespace Subsurface.Networking
int seed = DateTime.Now.Millisecond; int seed = DateTime.Now.Millisecond;
Rand.SetSyncedSeed(seed); Rand.SetSyncedSeed(seed);
Game1.GameSession = new GameSession(selectedMap, "", Game1.NetLobbyScreen.SelectedMode); GameMain.GameSession = new GameSession(selectedMap, "", GameMain.NetLobbyScreen.SelectedMode);
Game1.GameSession.StartShift(Game1.NetLobbyScreen.GameDuration, Game1.NetLobbyScreen.LevelSeed); GameMain.GameSession.StartShift(GameMain.NetLobbyScreen.GameDuration, GameMain.NetLobbyScreen.LevelSeed);
//EventManager.SelectEvent(Game1.netLobbyScreen.SelectedEvent); //EventManager.SelectEvent(Game1.netLobbyScreen.SelectedEvent);
List<CharacterInfo> characterInfos = new List<CharacterInfo>(); List<CharacterInfo> characterInfos = new List<CharacterInfo>();
@@ -573,7 +573,7 @@ namespace Subsurface.Networking
if (characterInfo != null) if (characterInfo != null)
{ {
characterInfo.Job = new Job(Game1.NetLobbyScreen.JobPreferences[0]); characterInfo.Job = new Job(GameMain.NetLobbyScreen.JobPreferences[0]);
characterInfos.Add(characterInfo); characterInfos.Add(characterInfo);
} }
@@ -604,12 +604,12 @@ namespace Subsurface.Networking
msg.Write(seed); msg.Write(seed);
msg.Write(Game1.NetLobbyScreen.LevelSeed); msg.Write(GameMain.NetLobbyScreen.LevelSeed);
msg.Write(Game1.NetLobbyScreen.SelectedMap.Name); msg.Write(GameMain.NetLobbyScreen.SelectedMap.Name);
msg.Write(Game1.NetLobbyScreen.SelectedMap.MD5Hash.Hash); 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); msg.Write((myCharacter == null) ? connectedClients.Count : connectedClients.Count+1);
foreach (Client client in connectedClients) foreach (Client client in connectedClients)
@@ -628,9 +628,9 @@ namespace Subsurface.Networking
gameStarted = true; gameStarted = true;
Game1.GameScreen.Cam.TargetPos = Vector2.Zero; GameMain.GameScreen.Cam.TargetPos = Vector2.Zero;
Game1.GameScreen.Select(); GameMain.GameScreen.Select();
CreateCrewFrame(crew); CreateCrewFrame(crew);
@@ -639,7 +639,7 @@ namespace Subsurface.Networking
private bool EndButtonHit(GUIButton button, object obj) 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; return true;
} }
@@ -651,8 +651,8 @@ namespace Subsurface.Networking
Character.Controlled = null; Character.Controlled = null;
Game1.GameScreen.Cam.TargetPos = Vector2.Zero; GameMain.GameScreen.Cam.TargetPos = Vector2.Zero;
Game1.LightManager.LosEnabled = false; GameMain.LightManager.LosEnabled = false;
gameStarted = false; gameStarted = false;
@@ -688,7 +688,7 @@ namespace Subsurface.Networking
(float)Math.Cos(camAngle) * (Submarine.Borders.Width / 2.0f), (float)Math.Cos(camAngle) * (Submarine.Borders.Width / 2.0f),
(float)Math.Sin(camAngle) * (Submarine.Borders.Height / 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); //Game1.GameScreen.Cam.MoveCamera((float)deltaTime);
messageBox.Text = endMessage + "\nReturning to lobby in " + (int)secondsLeft + " s"; messageBox.Text = endMessage + "\nReturning to lobby in " + (int)secondsLeft + " s";
@@ -698,7 +698,7 @@ namespace Subsurface.Networking
Submarine.Unload(); Submarine.Unload();
Game1.NetLobbyScreen.Select(); GameMain.NetLobbyScreen.Select();
yield return CoroutineStatus.Success; yield return CoroutineStatus.Success;
@@ -731,7 +731,7 @@ namespace Subsurface.Networking
outmsg.Write(client.ID); outmsg.Write(client.ID);
outmsg.Write(msg); outmsg.Write(msg);
Game1.NetLobbyScreen.RemovePlayer(client); GameMain.NetLobbyScreen.RemovePlayer(client);
if (server.Connections.Count > 0) if (server.Connections.Count > 0)
{ {
@@ -775,10 +775,10 @@ namespace Subsurface.Networking
{ {
base.Draw(spriteBatch); base.Draw(spriteBatch);
if (!Game1.DebugDraw) return; if (!GameMain.DebugDraw) return;
int width = 200, height = 300; 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); 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); 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(); NetOutgoingMessage msg = server.CreateMessage();
msg.Write((byte)PacketTypes.UpdateNetLobby); msg.Write((byte)PacketTypes.UpdateNetLobby);
Game1.NetLobbyScreen.WriteData(msg); GameMain.NetLobbyScreen.WriteData(msg);
if (server.Connections.Count > 0) if (server.Connections.Count > 0)
{ {
@@ -912,7 +912,7 @@ namespace Subsurface.Networking
if (characterInfo!=null) 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 //if any of the players has chosen a job that is Always Allowed, give them that job
+1 -1
View File
@@ -12,7 +12,7 @@ namespace Subsurface.Networking
//UpdateEntity networkevents aren't sent to clients if they're further than this from the entity //UpdateEntity networkevents aren't sent to clients if they're further than this from the entity
public const float UpdateEntityDistance = 2500.0f; 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 //if a ragdoll is further than this from the correct position, teleport it there
//(in sim units) //(in sim units)
+2 -2
View File
@@ -59,11 +59,11 @@ namespace Subsurface.Networking
{ {
if (isClient) if (isClient)
{ {
if (Game1.Server != null && Game1.Server.Character == null) return; if (GameMain.Server != null && GameMain.Server.Character == null) return;
} }
else else
{ {
if (Game1.Server == null) return; if (GameMain.Server == null) return;
} }
eventType = type; eventType = type;
@@ -93,8 +93,8 @@ namespace Subsurface.Networking
int width = 350, height = 100; int width = 350, height = 100;
chatBox = new GUIListBox(new Rectangle( chatBox = new GUIListBox(new Rectangle(
Game1.GraphicsWidth - 20 - width, GameMain.GraphicsWidth - 20 - width,
Game1.GraphicsHeight - 40 - 25 - height, GameMain.GraphicsHeight - 40 - 25 - height,
width, height), width, height),
Color.White * 0.5f, GUI.Style, inGameHUD); Color.White * 0.5f, GUI.Style, inGameHUD);
@@ -112,7 +112,7 @@ namespace Subsurface.Networking
{ {
int width = 500, height = 400; 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); 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); 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); null, frame);
textBlock.Padding = new Vector4(5.0f, 0.0f, 5.0f, 0.0f); 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); 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; if (string.IsNullOrWhiteSpace(message)) return false;
SendChatMessage(Game1.NetworkMember.Name + ": " + message); SendChatMessage(GameMain.NetworkMember.Name + ": " + message);
textBox.Deselect(); textBox.Deselect();
@@ -180,7 +180,7 @@ namespace Subsurface.Networking
public void AddChatMessage(string message, ChatMessageType messageType) 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) while (chatBox.CountChildren > 20)
{ {
@@ -21,7 +21,7 @@ namespace Subsurface.Particles
{ {
Name = element.Name.ToString(); 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) if (element.Attribute("startrotation") == null)
{ {
@@ -58,7 +58,7 @@ namespace Subsurface.Particles
float angle = Rand.Range(AngleMin, AngleMax); float angle = Rand.Range(AngleMin, AngleMax);
Vector2 velocity = new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle)) * Rand.Range(VelocityMin, VelocityMax); 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);
} }
} }
} }
+4 -4
View File
@@ -197,17 +197,17 @@ namespace Subsurface
if (width != 0.0f && height != 0.0f) 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; bodyShape = Shape.Rectangle;
} }
else if (radius != 0.0f && height != 0.0f) 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; bodyShape = Shape.Capsule;
} }
else if (radius != 0.0f) else if (radius != 0.0f)
{ {
body = BodyFactory.CreateCircle(Game1.World, radius, density); body = BodyFactory.CreateCircle(GameMain.World, radius, density);
bodyShape = Shape.Circle; bodyShape = Shape.Circle;
} }
else else
@@ -346,7 +346,7 @@ namespace Subsurface
public void Remove() public void Remove()
{ {
list.Remove(this); list.Remove(this);
Game1.World.RemoveBody(body); GameMain.World.RemoveBody(body);
} }
+8 -8
View File
@@ -26,7 +26,7 @@ namespace Subsurface
[STAThread] [STAThread]
static void Main() static void Main()
{ {
using (var game = new Game1()) using (var game = new GameMain())
{ {
#if !DEBUG #if !DEBUG
try 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); StreamWriter sw = new StreamWriter(filePath);
@@ -54,19 +54,19 @@ namespace Subsurface
sb.AppendLine("Subsurface seems to have crashed. Sorry for the inconvenience! "); 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("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("\n");
sb.AppendLine("Subsurface version " + Game1.Version); sb.AppendLine("Subsurface version " + GameMain.Version);
sb.AppendLine("Selected content package: "+Game1.SelectedPackage.Name); sb.AppendLine("Selected content package: " + GameMain.SelectedPackage.Name);
sb.AppendLine("Level seed: "+ ((Level.Loaded == null) ? "no level loaded" : Level.Loaded.Seed)); 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("Loaded submarine: " + ((Submarine.Loaded == null) ? "none" : Submarine.Loaded.Name +" ("+Submarine.Loaded.MD5Hash+")"));
sb.AppendLine("Selected screen: " + Screen.Selected.ToString()); 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"); sb.AppendLine("\n");
@@ -39,11 +39,11 @@ namespace Subsurface
{ {
base.Select(); base.Select();
Game1.DebugDraw = true; GameMain.DebugDraw = true;
cam = new Camera(); 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); 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); 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]); if (editingCharacter != Character.CharacterList[0]) UpdateLimbLists(Character.CharacterList[0]);
editingCharacter = 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 = ConvertUnits.ToDisplayUnits(camPos);
camPos.Y = -camPos.Y; camPos.Y = -camPos.Y;
cam.TargetPos = camPos; cam.TargetPos = camPos;
@@ -83,7 +83,7 @@ namespace Subsurface
textures = new List<Texture2D>(); textures = new List<Texture2D>();
texturePaths = new List<string>(); texturePaths = new List<string>();
foreach (Limb limb in editingCharacter.AnimController.limbs) foreach (Limb limb in editingCharacter.AnimController.Limbs)
{ {
if (texturePaths.Contains(limb.sprite.FilePath)) continue; if (texturePaths.Contains(limb.sprite.FilePath)) continue;
textures.Add(limb.sprite.Texture); textures.Add(limb.sprite.Texture);
@@ -112,7 +112,7 @@ namespace Subsurface
Ragdoll.UpdateAll((float)Physics.step); Ragdoll.UpdateAll((float)Physics.step);
Game1.World.Step((float)Physics.step); GameMain.World.Step((float)Physics.step);
Physics.accumulator -= Physics.step; Physics.accumulator -= Physics.step;
} }
@@ -169,10 +169,10 @@ namespace Subsurface
int x = 0, y = 0; int x = 0, y = 0;
for (int i = 0; i < textures.Count; i++ ) 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); 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; if (limb.sprite.FilePath != texturePaths[i]) continue;
Rectangle rect = limb.sprite.SourceRect; Rectangle rect = limb.sprite.SourceRect;
@@ -219,7 +219,7 @@ namespace Subsurface
private void UpdateLimbLists(Character character) private void UpdateLimbLists(Character character)
{ {
limbList.ClearChildren(); limbList.ClearChildren();
foreach (Limb limb in character.AnimController.limbs) foreach (Limb limb in character.AnimController.Limbs)
{ {
GUITextBlock textBlock = new GUITextBlock( GUITextBlock textBlock = new GUITextBlock(
new Rectangle(0,0,0,25), new Rectangle(0,0,0,25),
+7 -7
View File
@@ -41,7 +41,7 @@ namespace Subsurface
private string GetPhysicsBodyCount() 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; 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); 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); //GUIListBox constructionList = new GUIListBox(new Rectangle(0, 0, 0, 300), Color.White * 0.7f, GUIpanel);
//constructionList.OnSelected = MapEntityPrefab.SelectPrefab; //constructionList.OnSelected = MapEntityPrefab.SelectPrefab;
@@ -84,13 +84,13 @@ namespace Subsurface
GUItabs = new GUIComponent[2]; GUItabs = new GUIComponent[2];
int width = 400, height = 400; 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); 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]); GUIListBox itemList = new GUIListBox(new Rectangle(0, 0, 0, 0), Color.White * 0.7f, GUI.Style, GUItabs[0]);
itemList.OnSelected = SelectPrefab; itemList.OnSelected = SelectPrefab;
itemList.CheckSelected = MapEntityPrefab.GetSelected; 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); 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]); GUIListBox structureList = new GUIListBox(new Rectangle(0, 0, 0, 300), Color.White * 0.7f, GUI.Style, GUItabs[1]);
structureList.OnSelected = SelectPrefab; structureList.OnSelected = SelectPrefab;
@@ -143,7 +143,7 @@ namespace Subsurface
{ {
dummyCharacter.Remove(); dummyCharacter.Remove();
dummyCharacter = null; dummyCharacter = null;
Game1.World.ProcessChanges(); GameMain.World.ProcessChanges();
} }
} }
@@ -153,7 +153,7 @@ namespace Subsurface
dummyCharacter = new Character(Character.HumanConfigFile, Vector2.Zero); dummyCharacter = new Character(Character.HumanConfigFile, Vector2.Zero);
Character.Controlled = dummyCharacter; Character.Controlled = dummyCharacter;
Game1.World.ProcessChanges(); GameMain.World.ProcessChanges();
} }
private bool SelectTab(GUIButton button, object obj) private bool SelectTab(GUIButton button, object obj)
@@ -218,7 +218,7 @@ namespace Subsurface
if (dummyCharacter.SelectedConstruction==null) if (dummyCharacter.SelectedConstruction==null)
{ {
Vector2 mouseSimPos = FarseerPhysics.ConvertUnits.ToSimUnits(cam.ScreenToWorld(PlayerInput.MousePosition)); 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); limb.body.SetTransform(mouseSimPos, 0.0f);
} }
+23 -23
View File
@@ -28,9 +28,9 @@ namespace Subsurface
cam = new Camera(); cam = new Camera();
cam.Translate(new Vector2(-10.0f, 50.0f)); cam.Translate(new Vector2(-10.0f, 50.0f));
renderTarget = new RenderTarget2D(graphics, Game1.GraphicsWidth, Game1.GraphicsHeight); renderTarget = new RenderTarget2D(graphics, GameMain.GraphicsWidth, GameMain.GraphicsHeight);
renderTargetWater = new RenderTarget2D(graphics, Game1.GraphicsWidth, Game1.GraphicsHeight); renderTargetWater = new RenderTarget2D(graphics, GameMain.GraphicsWidth, GameMain.GraphicsHeight);
renderTargetAir = new RenderTarget2D(graphics, Game1.GraphicsWidth, Game1.GraphicsHeight); renderTargetAir = new RenderTarget2D(graphics, GameMain.GraphicsWidth, GameMain.GraphicsHeight);
background = new Sprite("Content/Map/background.png", Vector2.Zero); background = new Sprite("Content/Map/background.png", Vector2.Zero);
backgroundTop = new Sprite("Content/Map/background2.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); // 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); //EventManager.Update(gameTime);
Character.UpdateAll(cam, (float)deltaTime); Character.UpdateAll(cam, (float)deltaTime);
BackgroundSpriteManager.Update((float)deltaTime); BackgroundSpriteManager.Update((float)deltaTime);
Game1.ParticleManager.Update((float)deltaTime); GameMain.ParticleManager.Update((float)deltaTime);
StatusEffect.UpdateAll((float)deltaTime); StatusEffect.UpdateAll((float)deltaTime);
@@ -98,9 +98,9 @@ namespace Subsurface
Ragdoll.UpdateAll((float)Physics.step); 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(); 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); GUI.Draw((float)deltaTime, spriteBatch, cam);
@@ -143,7 +143,7 @@ namespace Subsurface
public void DrawMap(GraphicsDevice graphics, SpriteBatch spriteBatch) 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 //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.SourceRect = new Rectangle((int)backgroundPos.X, (int)Math.Max(backgroundPos.Y, 0), 1024, 1024);
background.DrawTiled(spriteBatch, background.DrawTiled(spriteBatch,
(backgroundPos.Y < 0) ? new Vector2(0.0f, -backgroundPos.Y) : Vector2.Zero, (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); Vector2.Zero, Color.White);
} }
if (backgroundPos.Y < 0) if (backgroundPos.Y < 0)
{ {
backgroundTop.SourceRect = new Rectangle((int)backgroundPos.X, (int)backgroundPos.Y, 1024, (int)Math.Min(-backgroundPos.Y, 1024)); 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); Vector2.Zero, Color.White);
} }
} }
@@ -208,7 +208,7 @@ namespace Subsurface
spriteBatch.Begin(SpriteSortMode.Immediate, spriteBatch.Begin(SpriteSortMode.Immediate,
BlendState.AlphaBlend); 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(); spriteBatch.End();
BlendState blend = new BlendState(); BlendState blend = new BlendState();
@@ -219,7 +219,7 @@ namespace Subsurface
BlendState.AlphaBlend, BlendState.AlphaBlend,
null, DepthStencilState.DepthRead, null, null, null, DepthStencilState.DepthRead, null, null,
cam.Transform); cam.Transform);
Game1.ParticleManager.Draw(spriteBatch, true); GameMain.ParticleManager.Draw(spriteBatch, true);
spriteBatch.End(); spriteBatch.End();
@@ -229,7 +229,7 @@ namespace Subsurface
graphics.SetRenderTarget(renderTargetAir); graphics.SetRenderTarget(renderTargetAir);
spriteBatch.Begin(SpriteSortMode.Immediate, spriteBatch.Begin(SpriteSortMode.Immediate,
BlendState.AlphaBlend); 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.End();
spriteBatch.Begin(SpriteSortMode.Immediate, spriteBatch.Begin(SpriteSortMode.Immediate,
@@ -237,7 +237,7 @@ namespace Subsurface
null, DepthStencilState.DepthRead, null, null, null, DepthStencilState.DepthRead, null, null,
cam.Transform); cam.Transform);
Game1.ParticleManager.Draw(spriteBatch, false); GameMain.ParticleManager.Draw(spriteBatch, false);
spriteBatch.End(); spriteBatch.End();
graphics.SetRenderTarget(null); graphics.SetRenderTarget(null);
@@ -257,17 +257,17 @@ namespace Subsurface
Hull.renderer.Render(graphics, cam, renderTargetAir, Cam.ShaderTransform); 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); GameMain.GameSession.Level.Render(graphics, cam);
Game1.GameSession.Level.SetObserverPosition(cam.WorldViewCenter); GameMain.GameSession.Level.SetObserverPosition(cam.WorldViewCenter);
} }
if (Game1.LightManager.LightingEnabled) if (GameMain.LightManager.LightingEnabled)
{ {
//multiply scene with lightmap //multiply scene with lightmap
spriteBatch.Begin(SpriteSortMode.Immediate, CustomBlendStates.Multiplicative); 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(); spriteBatch.End();
} }
@@ -284,15 +284,15 @@ namespace Subsurface
foreach (Character c in Character.CharacterList) c.DrawFront(spriteBatch); 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); //Game1.GameSession.Level.SetObserverPosition(cam.WorldViewCenter);
} }
spriteBatch.End(); spriteBatch.End();
Game1.LightManager.DrawLOS(graphics, cam, LightManager.ViewPos); GameMain.LightManager.DrawLOS(graphics, cam, LightManager.ViewPos);
} }
} }
+16 -16
View File
@@ -58,7 +58,7 @@ namespace Subsurface
Rectangle panelRect = new Rectangle( Rectangle panelRect = new Rectangle(
40, 40, 40, 40,
180, 180,
Game1.GraphicsHeight - 80); GameMain.GraphicsHeight - 80);
leftPanel = new GUIFrame(panelRect, GUI.Style); leftPanel = new GUIFrame(panelRect, GUI.Style);
//leftPanel.Padding = GUI.style.smallPadding; //leftPanel.Padding = GUI.style.smallPadding;
@@ -92,8 +92,8 @@ namespace Subsurface
panelRect = new Rectangle( panelRect = new Rectangle(
panelRect.X + panelRect.Width + 40, panelRect.X + panelRect.Width + 40,
40, 40,
Game1.GraphicsWidth - panelRect.Width - 120, GameMain.GraphicsWidth - panelRect.Width - 120,
Game1.GraphicsHeight - 80); GameMain.GraphicsHeight - 80);
rightPanel = new GUIFrame[4]; rightPanel = new GUIFrame[4];
@@ -147,7 +147,7 @@ namespace Subsurface
{ {
base.Select(); base.Select();
gameMode = Game1.GameSession.gameMode as SinglePlayerMode; gameMode = GameMain.GameSession.gameMode as SinglePlayerMode;
selectedRightPanel = (int)PanelTab.Crew; 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); 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); 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); graphics.Clear(Color.CornflowerBlue);
Game1.GameScreen.DrawMap(graphics, spriteBatch); GameMain.GameScreen.DrawMap(graphics, spriteBatch);
spriteBatch.Begin(); spriteBatch.Begin();
@@ -353,16 +353,16 @@ namespace Subsurface
if (selectedRightPanel == (int)PanelTab.Map) 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.X + 20,
rightPanel[selectedRightPanel].Rect.Y + 20, rightPanel[selectedRightPanel].Rect.Y + 20,
rightPanel[selectedRightPanel].Rect.Width - 280, rightPanel[selectedRightPanel].Rect.Width - 280,
rightPanel[selectedRightPanel].Rect.Height - 40), mapZoom); 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); GUI.Draw((float)deltaTime, spriteBatch, null);
@@ -380,7 +380,7 @@ namespace Subsurface
private string GetMoney() 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) private bool SelectCharacter(GUIComponent component, object selection)
@@ -416,9 +416,9 @@ namespace Subsurface
CharacterInfo characterInfo = selection as CharacterInfo; CharacterInfo characterInfo = selection as CharacterInfo;
if (characterInfo == null) return false; 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) private bool StartShift(GUIButton button, object selection)
{ {
Game1.GameSession.StartShift(TimeSpan.Zero, selectedLevel, false); GameMain.GameSession.StartShift(TimeSpan.Zero, selectedLevel, false);
Game1.GameScreen.Select(); GameMain.GameScreen.Select();
return true; return true;
} }
public bool QuitToMainMenu(GUIButton button, object selection) public bool QuitToMainMenu(GUIButton button, object selection)
{ {
Game1.MainMenuScreen.Select(); GameMain.MainMenuScreen.Select();
return true; return true;
} }
} }
+17 -17
View File
@@ -23,11 +23,11 @@ namespace Subsurface
private GUITextBox serverNameBox, portBox, passwordBox, maxPlayersBox; private GUITextBox serverNameBox, portBox, passwordBox, maxPlayersBox;
private GUITickBox isPublicBox, useUpnpBox; private GUITickBox isPublicBox, useUpnpBox;
private Game1 game; private GameMain game;
int selectedTab; int selectedTab;
public MainMenuScreen(Game1 game) public MainMenuScreen(GameMain game)
{ {
menuTabs = new GUIFrame[Enum.GetValues(typeof(Tabs)).Length+1]; menuTabs = new GUIFrame[Enum.GetValues(typeof(Tabs)).Length+1];
@@ -37,7 +37,7 @@ namespace Subsurface
//menuTabs[(int)Tabs.Main].Padding = GUI.style.smallPadding; //menuTabs[(int)Tabs.Main].Padding = GUI.style.smallPadding;
Rectangle panelRect = new Rectangle( Rectangle panelRect = new Rectangle(
Game1.GraphicsWidth / 2 - 250, GameMain.GraphicsWidth / 2 - 250,
buttonsTab.Rect.Y, buttonsTab.Rect.Y,
500, 360); 500, 360);
@@ -136,7 +136,7 @@ namespace Subsurface
minusPlayersBox.OnClicked = ChangeMaxPlayers; minusPlayersBox.OnClicked = ChangeMaxPlayers;
new GUITextBlock(new Rectangle(0, 150, 0, 30), "Password (optional):", GUI.Style, Alignment.TopLeft, Alignment.Left, menuTabs[(int)Tabs.HostServer]); 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 = 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"; 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) private bool JoinServerClicked(GUIButton button, object obj)
{ {
Game1.ServerListScreen.Select(); GameMain.ServerListScreen.Select();
return true; return true;
} }
@@ -223,9 +223,9 @@ namespace Subsurface
return false; 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(); //Game1.NetLobbyScreen.Select();
return true; return true;
} }
@@ -340,10 +340,10 @@ namespace Subsurface
buttonsTab.Update((float)deltaTime); buttonsTab.Update((float)deltaTime);
if (selectedTab>0) menuTabs[selectedTab].Update((float)deltaTime); if (selectedTab>0) menuTabs[selectedTab].Update((float)deltaTime);
Game1.TitleScreen.TitlePosition = GameMain.TitleScreen.TitlePosition =
Vector2.Lerp(Game1.TitleScreen.TitlePosition, new Vector2( Vector2.Lerp(GameMain.TitleScreen.TitlePosition, new Vector2(
Game1.TitleScreen.TitleSize.X / 2.0f * Game1.TitleScreen.Scale + 30.0f, GameMain.TitleScreen.TitleSize.X / 2.0f * GameMain.TitleScreen.Scale + 30.0f,
Game1.TitleScreen.TitleSize.Y / 2.0f * Game1.TitleScreen.Scale + 30.0f), GameMain.TitleScreen.TitleSize.Y / 2.0f * GameMain.TitleScreen.Scale + 30.0f),
0.1f); 0.1f);
} }
@@ -352,7 +352,7 @@ namespace Subsurface
{ {
graphics.Clear(Color.CornflowerBlue); 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); //Game1.GameScreen.DrawMap(graphics, spriteBatch);
@@ -363,7 +363,7 @@ namespace Subsurface
GUI.Draw((float)deltaTime, spriteBatch, null); 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(); spriteBatch.End();
} }
@@ -383,10 +383,10 @@ namespace Subsurface
Submarine selectedSub = mapList.SelectedData as Submarine; Submarine selectedSub = mapList.SelectedData as Submarine;
if (selectedSub == null) return false; if (selectedSub == null) return false;
Game1.GameSession = new GameSession(selectedSub, saveNameBox.Text, GameModePreset.list.Find(gm => gm.Name == "Single Player")); GameMain.GameSession = new GameSession(selectedSub, saveNameBox.Text, GameModePreset.list.Find(gm => gm.Name == "Single Player"));
(Game1.GameSession.gameMode as SinglePlayerMode).GenerateMap(seedBox.Text); (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; "+ 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 "+ "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; return true;
} }
+45 -45
View File
@@ -105,8 +105,8 @@ namespace Subsurface
public NetLobbyScreen() public NetLobbyScreen()
{ {
int width = Math.Min(Game1.GraphicsWidth - 80, 1500); int width = Math.Min(GameMain.GraphicsWidth - 80, 1500);
int height = Math.Min(Game1.GraphicsHeight - 80, 800); int height = Math.Min(GameMain.GraphicsHeight - 80, 800);
Rectangle panelRect = new Rectangle(0,0,width,height); 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); var serverName = new GUITextBox(new Rectangle(0, 0, 200, 20), null, null, Alignment.TopLeft, Alignment.TopLeft, GUI.Style, infoFrame);
serverName.TextGetter = GetServerName; serverName.TextGetter = GetServerName;
serverName.Enabled = Game1.Server != null; serverName.Enabled = GameMain.Server != null;
serverName.OnTextChanged = ChangeServerName; serverName.OnTextChanged = ChangeServerName;
serverMessage = new GUITextBox(new Rectangle(0, 30, 360, 70), null, null, Alignment.TopLeft, Alignment.TopLeft, GUI.Style, infoFrame); 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() public override void Select()
{ {
Game1.LightManager.LosEnabled = false; GameMain.LightManager.LosEnabled = false;
//infoFrame.ClearChildren(); //infoFrame.ClearChildren();
textBox.Select(); textBox.Select();
Character.Controlled = null; Character.Controlled = null;
Game1.GameScreen.Cam.TargetPos = Vector2.Zero; GameMain.GameScreen.Cam.TargetPos = Vector2.Zero;
subList.Enabled = Game1.Server != null; subList.Enabled = GameMain.Server != null;
modeList.Enabled = Game1.Server != null; modeList.Enabled = GameMain.Server != null;
durationBar.Enabled = Game1.Server != null; durationBar.Enabled = GameMain.Server != null;
seedBox.Enabled = Game1.Server != null; seedBox.Enabled = GameMain.Server != null;
serverMessage.Enabled = Game1.Server != null; serverMessage.Enabled = GameMain.Server != null;
ServerName = (Game1.Server==null) ? "Server" : Game1.Server.Name; ServerName = (GameMain.Server==null) ? "Server" : GameMain.Server.Name;
modeList.OnSelected += SelectMode; modeList.OnSelected += SelectMode;
infoFrame.RemoveChild(infoFrame.children.Find(c => c.UserData as string == "startButton")); 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); 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"; startButton.UserData = "startButton";
//mapList.OnSelected = new GUIListBox.OnSelectedHandler(Game1.server.UpdateNetLobby); //mapList.OnSelected = new GUIListBox.OnSelectedHandler(Game1.server.UpdateNetLobby);
modeList.OnSelected += Game1.Server.UpdateNetLobby; modeList.OnSelected += GameMain.Server.UpdateNetLobby;
durationBar.OnMoved = Game1.Server.UpdateNetLobby; durationBar.OnMoved = GameMain.Server.UpdateNetLobby;
if (subList.CountChildren > 0 && subList.Selected == null) subList.Select(-1); if (subList.CountChildren > 0 && subList.Selected == null) subList.Select(-1);
if (GameModePreset.list.Count > 0 && modeList.Selected == null) modeList.Select(-1); if (GameModePreset.list.Count > 0 && modeList.Selected == null) modeList.Select(-1);
if (infoFrame.children.Find(c => c.UserData as string == "playyourself") == null) 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); var playYourself = new GUITickBox(new Rectangle(-30, -30, 20, 20), "Play yourself", Alignment.TopLeft, playerFrame);
playYourself.Selected = Game1.Server.CharacterInfo != null; playYourself.Selected = GameMain.Server.CharacterInfo != null;
playYourself.OnSelected = TogglePlayYourself; playYourself.OnSelected = TogglePlayYourself;
playYourself.UserData = "playyourself"; playYourself.UserData = "playyourself";
} }
} }
else else
{ {
UpdatePlayerFrame(Game1.Client.CharacterInfo); UpdatePlayerFrame(GameMain.Client.CharacterInfo);
} }
base.Select(); base.Select();
@@ -303,10 +303,10 @@ namespace Subsurface
{ {
playerFrame.ClearChildren(); 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); 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.OnSelected = TogglePlayYourself;
playYourself.UserData = "playyourself"; playYourself.UserData = "playyourself";
} }
@@ -364,17 +364,17 @@ namespace Subsurface
GUITickBox tickBox = obj as GUITickBox; GUITickBox tickBox = obj as GUITickBox;
if (tickBox.Selected) if (tickBox.Selected)
{ {
Game1.Server.CharacterInfo = new CharacterInfo(Character.HumanConfigFile, Game1.Server.Name); GameMain.Server.CharacterInfo = new CharacterInfo(Character.HumanConfigFile, GameMain.Server.Name);
UpdatePlayerFrame(Game1.Server.CharacterInfo); UpdatePlayerFrame(GameMain.Server.CharacterInfo);
} }
else else
{ {
playerFrame.ClearChildren(); playerFrame.ClearChildren();
if (IsServer && Game1.Server != null) if (IsServer && GameMain.Server != null)
{ {
Game1.Server.CharacterInfo = null; GameMain.Server.CharacterInfo = null;
Game1.Server.Character = null; GameMain.Server.Character = null;
var playYourself = new GUITickBox(new Rectangle(0, -20, 20, 20), "Play yourself", Alignment.TopLeft, playerFrame); var playYourself = new GUITickBox(new Rectangle(0, -20, 20, 20), "Play yourself", Alignment.TopLeft, playerFrame);
playYourself.OnSelected = TogglePlayYourself; playYourself.OnSelected = TogglePlayYourself;
@@ -385,7 +385,7 @@ namespace Subsurface
private bool SelectMap(GUIComponent component, object obj) 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; Submarine sub = (Submarine)obj;
@@ -399,18 +399,18 @@ namespace Subsurface
public bool ChangeServerName(GUITextBox textBox, string text) public bool ChangeServerName(GUITextBox textBox, string text)
{ {
if (Game1.Server == null) return false; if (GameMain.Server == null) return false;
ServerName = text; ServerName = text;
Game1.Server.UpdateNetLobby(null, null); GameMain.Server.UpdateNetLobby(null, null);
return true; return true;
} }
public bool UpdateServerMessage(GUITextBox textBox, string text) public bool UpdateServerMessage(GUITextBox textBox, string text)
{ {
if (Game1.Server == null) return false; if (GameMain.Server == null) return false;
ServerMessage = text; ServerMessage = text;
Game1.Server.UpdateNetLobby(null, null); GameMain.Server.UpdateNetLobby(null, null);
return true; return true;
} }
@@ -456,8 +456,8 @@ namespace Subsurface
pos += offset * 0.8f; pos += offset * 0.8f;
Game1.GameScreen.Cam.TargetPos = pos; GameMain.GameScreen.Cam.TargetPos = pos;
Game1.GameScreen.Cam.MoveCamera((float)deltaTime); GameMain.GameScreen.Cam.MoveCamera((float)deltaTime);
menu.Update((float)deltaTime); menu.Update((float)deltaTime);
@@ -468,7 +468,7 @@ namespace Subsurface
{ {
graphics.Clear(Color.CornflowerBlue); graphics.Clear(Color.CornflowerBlue);
Game1.GameScreen.DrawMap(graphics, spriteBatch); GameMain.GameScreen.DrawMap(graphics, spriteBatch);
spriteBatch.Begin(); spriteBatch.Begin();
@@ -507,7 +507,7 @@ namespace Subsurface
public bool StartGame(object obj) public bool StartGame(object obj)
{ {
Game1.Server.StartGame(null, obj); GameMain.Server.StartGame(null, obj);
return true; return true;
} }
@@ -515,7 +515,7 @@ namespace Subsurface
{ {
if (String.IsNullOrEmpty(message)) return false; if (String.IsNullOrEmpty(message)) return false;
Game1.NetworkMember.SendChatMessage(Game1.NetworkMember.Name + ": " + message); GameMain.NetworkMember.SendChatMessage(GameMain.NetworkMember.Name + ": " + message);
return true; return true;
} }
@@ -534,14 +534,14 @@ namespace Subsurface
try try
{ {
Gender gender = (Gender)obj; Gender gender = (Gender)obj;
Game1.Client.CharacterInfo.Gender = gender; GameMain.Client.CharacterInfo.Gender = gender;
Game1.Client.SendCharacterData(); GameMain.Client.SendCharacterData();
//CreatePreviewCharacter(); //CreatePreviewCharacter();
} }
catch {} catch {}
UpdatePreviewPlayer(Game1.Client.CharacterInfo); UpdatePreviewPlayer(GameMain.Client.CharacterInfo);
return true; return true;
} }
@@ -570,7 +570,7 @@ namespace Subsurface
//textBox.Text = LevelSeed; //textBox.Text = LevelSeed;
//textBox.Selected = false; //textBox.Selected = false;
if (Game1.Server != null) Game1.Server.UpdateNetLobby(null); if (GameMain.Server != null) GameMain.Server.UpdateNetLobby(null);
return true; return true;
} }
@@ -579,13 +579,13 @@ namespace Subsurface
{ {
if (string.IsNullOrEmpty(newName)) return false; 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; GameMain.NetworkMember.CharacterInfo.Name = newName;
if (Game1.Client != null) if (GameMain.Client != null)
{ {
Game1.Client.Name = newName; GameMain.Client.Name = newName;
Game1.Client.SendCharacterData(); GameMain.Client.SendCharacterData();
} }
textBox.Text = newName; textBox.Text = newName;
@@ -628,7 +628,7 @@ namespace Subsurface
(listBox.children[i] as GUITextBlock).Text = (i+1) + ". " + (listBox.children[i].UserData as JobPrefab).Name; (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) public bool TrySelectMap(string mapName, string md5Hash)
@@ -36,8 +36,8 @@ namespace Subsurface
public ServerListScreen() public ServerListScreen()
{ {
int width = Math.Min(Game1.GraphicsWidth - 160, 1000); int width = Math.Min(GameMain.GraphicsWidth - 160, 1000);
int height = Math.Min(Game1.GraphicsHeight - 160, 700); int height = Math.Min(GameMain.GraphicsHeight - 160, 700);
Rectangle panelRect = new Rectangle(0, 0, width, height); 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); GUIButton button = new GUIButton(new Rectangle(-20, -20, 100, 30), "Back", Alignment.TopLeft, GUI.Style, menu);
button.UserData = 0; button.UserData = 0;
button.OnClicked = Game1.MainMenuScreen.SelectTab; button.OnClicked = GameMain.MainMenuScreen.SelectTab;
refreshDisableTimer = DateTime.Now; refreshDisableTimer = DateTime.Now;
@@ -302,8 +302,8 @@ namespace Subsurface
selectedPassword = passwordBox.Text; selectedPassword = passwordBox.Text;
} }
Game1.NetworkMember = new GameClient(clientNameBox.Text); GameMain.NetworkMember = new GameClient(clientNameBox.Text);
Game1.Client.ConnectToServer(ip, selectedPassword); GameMain.Client.ConnectToServer(ip, selectedPassword);
yield return CoroutineStatus.Success; yield return CoroutineStatus.Success;
} }
@@ -312,7 +312,7 @@ namespace Subsurface
{ {
graphics.Clear(Color.CornflowerBlue); graphics.Clear(Color.CornflowerBlue);
Game1.GameScreen.DrawMap(graphics, spriteBatch); GameMain.GameScreen.DrawMap(graphics, spriteBatch);
spriteBatch.Begin(); spriteBatch.Begin();
@@ -170,7 +170,7 @@ namespace Subsurface
if (animController.HeadInWater) if (animController.HeadInWater)
{ {
ambienceVolume = 0.5f; ambienceVolume = 0.5f;
ambienceVolume += animController.limbs[0].LinearVelocity.Length(); ambienceVolume += animController.Limbs[0].LinearVelocity.Length();
lowpassHFGain = 0.2f; lowpassHFGain = 0.2f;
} }
@@ -185,9 +185,9 @@ namespace Subsurface
if (musicClips == null) return; if (musicClips == null) return;
Task criticalTask = null; 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 (!task.IsStarted) continue;
if (criticalTask == null || task.Priority > criticalTask.Priority) if (criticalTask == null || task.Priority > criticalTask.Priority)
+3 -3
View File
@@ -38,7 +38,7 @@ namespace Subsurface
} }
else else
{ {
File.Copy(Game1.GameSession.Submarine.FilePath, tempPath + "\\map.gz"); File.Copy(GameMain.GameSession.Submarine.FilePath, tempPath + "\\map.gz");
} }
} }
catch (Exception e) catch (Exception e)
@@ -48,7 +48,7 @@ namespace Subsurface
try try
{ {
Game1.GameSession.Save(tempPath + "\\gamesession.xml"); GameMain.GameSession.Save(tempPath + "\\gamesession.xml");
} }
catch (Exception e) catch (Exception e)
@@ -76,7 +76,7 @@ namespace Subsurface
DecompressToDirectory(filePath, tempPath, null); DecompressToDirectory(filePath, tempPath, null);
Submarine selectedMap = Submarine.Load(tempPath +"\\map.gz"); 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); //Directory.Delete(tempPath, true);
} }
+26
View File
@@ -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;
}
}
}
} }
} }
+1
View File
@@ -57,6 +57,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Source\Camera.cs" /> <Compile Include="Source\Camera.cs" />
<Compile Include="Source\Characters\AICharacter.cs" />
<Compile Include="Source\Characters\AI\AIController.cs" /> <Compile Include="Source\Characters\AI\AIController.cs" />
<Compile Include="Source\Characters\AI\AITarget.cs" /> <Compile Include="Source\Characters\AI\AITarget.cs" />
<Compile Include="Source\Characters\AI\PathFinder.cs" /> <Compile Include="Source\Characters\AI\PathFinder.cs" />
+47
View File
@@ -17,6 +17,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lidgren.Network", "Lidgren.
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Launcher2", "Launcher2\Launcher2.csproj", "{251AAFE1-F24B-4837-9128-9D04FCBFD528}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Launcher2", "Launcher2\Launcher2.csproj", "{251AAFE1-F24B-4837-9128-9D04FCBFD528}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CrashReporter", "CrashReporter\CrashReporter.csproj", "{6BE950CD-9A34-49C9-939A-786AC89C287E}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Android|Any CPU = Android|Any CPU 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|Mixed Platforms.Build.0 = Release|x86
{251AAFE1-F24B-4837-9128-9D04FCBFD528}.Windows8|x86.ActiveCfg = Release|x86 {251AAFE1-F24B-4837-9128-9D04FCBFD528}.Windows8|x86.ActiveCfg = Release|x86
{251AAFE1-F24B-4837-9128-9D04FCBFD528}.Windows8|x86.Build.0 = 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 EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
Binary file not shown.