From 004608acd8650579a3f5b3d5f3b6d899d04022e3 Mon Sep 17 00:00:00 2001 From: Regalis Date: Mon, 29 Jun 2015 02:00:27 +0300 Subject: [PATCH] Improved submarine movement (buoyancy & drag), engine and "navigation terminal", new map, optimized levels (less vertices and physics bodies) --- Subsurface/Characters/AI/SteeringManager.cs | 4 +- Subsurface/Characters/Character.cs | 4 +- Subsurface/Characters/FishAnimController.cs | 12 +- .../Characters/HumanoidAnimController.cs | 34 +- Subsurface/Characters/Limb.cs | 6 +- Subsurface/Characters/Ragdoll.cs | 3 +- Subsurface/Content/Items/Engine/engine.png | Bin 0 -> 47469 bytes Subsurface/Content/Items/Engine/engine.xml | 36 ++ .../Content/Items/Engine/fabricator.png | Bin 0 -> 2133 bytes Subsurface/Content/Items/Pump/pump.xml | 3 +- Subsurface/Events/MonsterEvent.cs | 4 +- Subsurface/FarseerPhysics MonoGame.dll | Bin 350720 -> 0 bytes Subsurface/GUI/GUI.cs | 2 +- Subsurface/GameSession/CrewManager.cs | 11 +- Subsurface/GameSession/GameMode.cs | 2 +- Subsurface/GameSession/GameSession.cs | 13 +- Subsurface/GameSession/SinglePlayerMode.cs | 2 +- Subsurface/Items/CharacterInventory.cs | 1 + Subsurface/Items/Components/Engine.cs | 108 +++++ Subsurface/Items/Components/Pump.cs | 28 +- Subsurface/Items/Components/Reactor.cs | 34 +- Subsurface/Items/Components/Rope.cs | 2 +- .../Items/Components/Signal/Connection.cs | 110 ++--- Subsurface/Items/Components/Signal/Wire.cs | 8 +- Subsurface/Items/Components/Steering.cs | 84 ++++ Subsurface/Items/Components/Turret.cs | 6 +- Subsurface/Map/Explosion.cs | 2 +- Subsurface/Map/Gap.cs | 12 +- Subsurface/Map/Hull.cs | 2 +- Subsurface/Map/Level.cs | 309 +++++++++----- Subsurface/Map/Structure.cs | 7 +- Subsurface/Map/Submarine.cs | 385 ++++++++++++++---- Subsurface/Map/VoronoiElements.cs | 4 +- Subsurface/MathUtils.cs | 187 +++++++++ Subsurface/Networking/GameClient.cs | 2 +- Subsurface/Particles/Particle.cs | 4 +- Subsurface/Physics/Physics.cs | 20 +- Subsurface/Physics/PhysicsBody.cs | 2 +- Subsurface/Screens/GameScreen.cs | 12 +- Subsurface/Subsurface.csproj | 20 +- Subsurface/ToolBox.cs | 194 +-------- Subsurface_Solution.sln | 47 +++ Subsurface_Solution.v12.suo | Bin 308224 -> 354304 bytes 43 files changed, 1199 insertions(+), 527 deletions(-) create mode 100644 Subsurface/Content/Items/Engine/engine.png create mode 100644 Subsurface/Content/Items/Engine/engine.xml create mode 100644 Subsurface/Content/Items/Engine/fabricator.png delete mode 100644 Subsurface/FarseerPhysics MonoGame.dll create mode 100644 Subsurface/Items/Components/Engine.cs create mode 100644 Subsurface/Items/Components/Steering.cs create mode 100644 Subsurface/MathUtils.cs diff --git a/Subsurface/Characters/AI/SteeringManager.cs b/Subsurface/Characters/AI/SteeringManager.cs index 7a371dcc2..e65798f6b 100644 --- a/Subsurface/Characters/AI/SteeringManager.cs +++ b/Subsurface/Characters/AI/SteeringManager.cs @@ -32,7 +32,7 @@ namespace Subsurface { this.host = host; - wanderAngle = ToolBox.RandomFloatLocal(0.0f, MathHelper.TwoPi); + wanderAngle = MathUtils.RandomFloatLocal(0.0f, MathHelper.TwoPi); } public void SteeringSeek(Vector2 target, float speed = 1.0f) @@ -90,7 +90,7 @@ namespace Subsurface float angleChange = 1.5f; - wanderAngle += ToolBox.RandomFloatLocal(0.0f, 1.0f) * angleChange - angleChange * 0.5f; + wanderAngle += MathUtils.RandomFloatLocal(0.0f, 1.0f) * angleChange - angleChange * 0.5f; Vector2 newSteering = circleCenter + displacement; float steeringSpeed = (newSteering + host.Steering).Length(); diff --git a/Subsurface/Characters/Character.cs b/Subsurface/Characters/Character.cs index a8470820f..04510c06b 100644 --- a/Subsurface/Characters/Character.cs +++ b/Subsurface/Characters/Character.cs @@ -769,13 +769,13 @@ namespace Subsurface for (int i = 0; i < 10; i++) { Particle p = Game1.particleManager.CreateParticle("waterblood", - torso.SimPosition + new Vector2(ToolBox.RandomFloatLocal(-0.5f, 0.5f), ToolBox.RandomFloatLocal(-0.5f, 0.5f)), + torso.SimPosition + new Vector2(MathUtils.RandomFloatLocal(-0.5f, 0.5f), MathUtils.RandomFloatLocal(-0.5f, 0.5f)), Vector2.Zero); if (p!=null) p.Size *= 2.0f; Game1.particleManager.CreateParticle("bubbles", torso.SimPosition, - new Vector2(ToolBox.RandomFloatLocal(-0.5f, 0.5f), ToolBox.RandomFloatLocal(-1.0f,0.5f))); + new Vector2(MathUtils.RandomFloatLocal(-0.5f, 0.5f), MathUtils.RandomFloatLocal(-1.0f,0.5f))); } foreach (var joint in animController.limbJoints) diff --git a/Subsurface/Characters/FishAnimController.cs b/Subsurface/Characters/FishAnimController.cs index 91838b854..1767554df 100644 --- a/Subsurface/Characters/FishAnimController.cs +++ b/Subsurface/Characters/FishAnimController.cs @@ -72,7 +72,7 @@ namespace Subsurface else { Limb head = GetLimb(LimbType.Head); - float rotation = ToolBox.WrapAngleTwoPi(head.Rotation); + float rotation = MathUtils.WrapAngleTwoPi(head.Rotation); rotation = MathHelper.ToDegrees(rotation); if (rotation < 0.0f) rotation += 360; @@ -98,12 +98,12 @@ namespace Subsurface void UpdateSineAnim(float deltaTime) { - movement = ToolBox.SmoothStep(movement, TargetMovement*swimSpeed, 1.0f); + movement = MathUtils.SmoothStep(movement, TargetMovement*swimSpeed, 1.0f); if (movement == Vector2.Zero) return; if (!inWater) movement.Y = Math.Min(0.0f, movement.Y); - float movementAngle = ToolBox.VectorToAngle(movement) - MathHelper.PiOver2; + float movementAngle = MathUtils.VectorToAngle(movement) - MathHelper.PiOver2; Limb tail = GetLimb(LimbType.Tail); if (tail != null && waveAmplitude>0.0f) @@ -112,7 +112,7 @@ namespace Subsurface float waveRotation = (float)Math.Sin(walkPos / waveLength)*waveAmplitude; - float angle = ToolBox.GetShortestAngle(tail.body.Rotation, movementAngle + waveRotation); + float angle = MathUtils.GetShortestAngle(tail.body.Rotation, movementAngle + waveRotation); //limbs[tailIndex].body.ApplyTorque((Math.Sign(angle) + Math.Max(Math.Min(angle * 10.0f, 10.0f), -10.0f)) * limbs[tailIndex].body.Mass); //limbs[tailIndex].body.ApplyTorque(-limbs[tailIndex].body.AngularVelocity * 0.5f * limbs[tailIndex].body.Mass); @@ -123,7 +123,7 @@ namespace Subsurface Limb head = GetLimb(LimbType.Head); if (head != null) { - float angle = ToolBox.GetShortestAngle(head.body.Rotation, movementAngle); + float angle = MathUtils.GetShortestAngle(head.body.Rotation, movementAngle); head.body.SmoothRotate(head.body.Rotation+angle, 25.0f); @@ -179,7 +179,7 @@ namespace Subsurface void UpdateWalkAnim(float deltaTime) { - movement = ToolBox.SmoothStep(movement, TargetMovement * walkSpeed, 0.2f); + movement = MathUtils.SmoothStep(movement, TargetMovement * walkSpeed, 0.2f); if (movement == Vector2.Zero) return; Limb colliderLimb; diff --git a/Subsurface/Characters/HumanoidAnimController.cs b/Subsurface/Characters/HumanoidAnimController.cs index 2b49680cd..2ca0847f3 100644 --- a/Subsurface/Characters/HumanoidAnimController.cs +++ b/Subsurface/Characters/HumanoidAnimController.cs @@ -174,7 +174,7 @@ namespace Subsurface float footMid = (leftFoot.SimPosition.X + rightFoot.SimPosition.X) / 2.0f; - movement = ToolBox.SmoothStep(movement, TargetMovement, 0.5f); + movement = MathUtils.SmoothStep(movement, TargetMovement, 0.5f); movement.Y = 0.0f; //place the anchors of the head and the torso to make the ragdoll stand @@ -201,12 +201,12 @@ namespace Subsurface { torso.pullJoint.Enabled = true; torso.pullJoint.WorldAnchorB = - ToolBox.SmoothStep(torso.SimPosition, + MathUtils.SmoothStep(torso.SimPosition, new Vector2(footMid + movement.X * 0.35f, colliderPos.Y + TorsoPosition - Math.Abs(walkPosX * 0.05f)), getUpSpeed); head.pullJoint.Enabled = true; head.pullJoint.WorldAnchorB = - ToolBox.SmoothStep(head.SimPosition, + MathUtils.SmoothStep(head.SimPosition, new Vector2(footMid + movement.X * 0.4f, colliderPos.Y + HeadPosition - Math.Abs(walkPosX * 0.05f)), getUpSpeed); } @@ -389,7 +389,7 @@ namespace Subsurface torso.body.ApplyTorque(torque); } - movement = ToolBox.SmoothStep(movement, TargetMovement, 0.3f); + movement = MathUtils.SmoothStep(movement, TargetMovement, 0.3f); //dont try to move upwards if head is already out of water if (surfaceLimiter > 1.0f) @@ -513,7 +513,7 @@ namespace Subsurface onGround = false; IgnorePlatforms = true; - movement = ToolBox.SmoothStep(movement, TargetMovement, 0.3f); + movement = MathUtils.SmoothStep(movement, TargetMovement, 0.3f); Vector2 footPos, handPos; @@ -543,12 +543,12 @@ namespace Subsurface MoveLimb(leftHand, new Vector2(handPos.X, - ToolBox.Round(handPos.Y - stepHeight, stepHeight * 2.0f) + stepHeight + ladderSimPos.Y), + MathUtils.Round(handPos.Y - stepHeight, stepHeight * 2.0f) + stepHeight + ladderSimPos.Y), 5.2f); MoveLimb(rightHand, new Vector2(handPos.X, - ToolBox.Round(handPos.Y, stepHeight * 2.0f) + ladderSimPos.Y), + MathUtils.Round(handPos.Y, stepHeight * 2.0f) + ladderSimPos.Y), 5.2f); leftHand.body.ApplyTorque(Dir * 2.0f); @@ -560,12 +560,12 @@ namespace Subsurface MoveLimb(leftFoot, new Vector2(footPos.X, - ToolBox.Round(footPos.Y + stepHeight, stepHeight * 2.0f) - stepHeight + ladderSimPos.Y), + MathUtils.Round(footPos.Y + stepHeight, stepHeight * 2.0f) - stepHeight + ladderSimPos.Y), 7.5f, true); MoveLimb(rightFoot, new Vector2(footPos.X, - ToolBox.Round(footPos.Y, stepHeight * 2.0f) + ladderSimPos.Y), + MathUtils.Round(footPos.Y, stepHeight * 2.0f) + ladderSimPos.Y), 7.5f, true); //apply torque to the legs to make the knees bend @@ -642,8 +642,8 @@ namespace Subsurface Vector2 diff = (mousePos - torso.SimPosition) * Dir; - holdAngle = ToolBox.VectorToAngle(new Vector2(diff.X, diff.Y * Dir)) - torso.body.Rotation * Dir; - holdAngle = MathHelper.Clamp(ToolBox.WrapAnglePi(holdAngle), -1.3f, 1.0f); + holdAngle = MathUtils.VectorToAngle(new Vector2(diff.X, diff.Y * Dir)) - torso.body.Rotation * Dir; + holdAngle = MathHelper.Clamp(MathUtils.WrapAnglePi(holdAngle), -1.3f, 1.0f); itemAngle = (torso.body.Rotation + holdAngle * Dir); @@ -701,7 +701,7 @@ namespace Subsurface Vector2 bodyVelocity = torso.body.LinearVelocity / 60.0f; item.body.ResetDynamics(); - item.body.SetTransform(ToolBox.SmoothStep(item.body.Position, transformedHoldPos + bodyVelocity, 0.5f), itemAngle); + item.body.SetTransform(MathUtils.SmoothStep(item.body.Position, transformedHoldPos + bodyVelocity, 0.5f), itemAngle); //item.body.SmoothRotate(itemAngle, 50.0f); @@ -723,10 +723,10 @@ namespace Subsurface float c = ConvertUnits.ToDisplayUnits(Vector2.Distance(transformedHoldPos + transformedHandlePos[i], shoulderPos)); c = MathHelper.Clamp(a + b - 1, b-a, c); - float ang2 = ToolBox.VectorToAngle((transformedHoldPos + transformedHandlePos[i]) - shoulderPos)+MathHelper.PiOver2; + float ang2 = MathUtils.VectorToAngle((transformedHoldPos + transformedHandlePos[i]) - shoulderPos)+MathHelper.PiOver2; - float armAngle = ToolBox.SolveTriangleSSS(a, b, c); - float handAngle = ToolBox.SolveTriangleSSS(b, a, c); + float armAngle = MathUtils.SolveTriangleSSS(a, b, c); + float handAngle = MathUtils.SolveTriangleSSS(b, a, c); arm.body.SmoothRotate((ang2 - armAngle * Dir), 20.0f); hand.body.SmoothRotate((ang2 + handAngle * Dir), 100.0f); @@ -755,7 +755,7 @@ namespace Subsurface character.SelectedItems[i].body.SetTransform( torso.SimPosition + Vector2.Transform(difference, -torsoTransform), - ToolBox.WrapAngleTwoPi(-character.SelectedItems[i].body.Rotation)); + MathUtils.WrapAngleTwoPi(-character.SelectedItems[i].body.Rotation)); } } @@ -775,7 +775,7 @@ namespace Subsurface break; default: if (!inWater) l.body.SetTransform(l.body.Position, - ToolBox.WrapAnglePi(l.body.Rotation * (l.DoesFlip ? -1.0f : 1.0f))); + MathUtils.WrapAnglePi(l.body.Rotation * (l.DoesFlip ? -1.0f : 1.0f))); break; } } diff --git a/Subsurface/Characters/Limb.cs b/Subsurface/Characters/Limb.cs index d62f04b3f..9f0ed97b3 100644 --- a/Subsurface/Characters/Limb.cs +++ b/Subsurface/Characters/Limb.cs @@ -275,7 +275,7 @@ namespace Subsurface float mid = (armorLimits.X + armorLimits.Y) / 2.0f; - float angleDiff = ToolBox.GetShortestAngle(ToolBox.VectorToAngle(position - SimPosition), mid); + float angleDiff = MathUtils.GetShortestAngle(MathUtils.VectorToAngle(position - SimPosition), mid); if (Math.Abs(angleDiff) < (armorSector.Y - armorSector.X) / 2.0f) { @@ -314,7 +314,7 @@ namespace Subsurface Game1.particleManager.CreateParticle("blood", SimPosition, - particleVel * ToolBox.RandomFloatLocal(1.0f, 3.0f)); + particleVel * MathUtils.RandomFloatLocal(1.0f, 3.0f)); } for (int i = 0; i < bloodAmount / 2; i++) @@ -370,7 +370,7 @@ namespace Subsurface soundTimer -= deltaTime; - //if (ToolBox.RandomFloat(0.0f, 1000.0f) < Bleeding) + //if (MathUtils.RandomFloat(0.0f, 1000.0f) < Bleeding) //{ // Game1.particleManager.CreateParticle( // !inWater ? "blood" : "waterblood", diff --git a/Subsurface/Characters/Ragdoll.cs b/Subsurface/Characters/Ragdoll.cs index 932776d19..dc18b26f7 100644 --- a/Subsurface/Characters/Ragdoll.cs +++ b/Subsurface/Characters/Ragdoll.cs @@ -290,8 +290,7 @@ namespace Subsurface { Vector2 normal = contact.Manifold.LocalNormal; float impact = Vector2.Dot(f1.Body.LinearVelocity, -normal); - - + Limb l = (Limb)f1.Body.UserData; if (impact > 1.0f && l.HitSound != null && l.soundTimer<=0.0f) l.HitSound.Play(Math.Min(impact / 5.0f, 1.0f), impact*100.0f, l.body.FarseerBody); diff --git a/Subsurface/Content/Items/Engine/engine.png b/Subsurface/Content/Items/Engine/engine.png new file mode 100644 index 0000000000000000000000000000000000000000..d8bf526cdcdd0910eb6176fedaa14b50f3d572da GIT binary patch literal 47469 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 N002ovPDHLkV1j669gzS4 literal 0 HcmV?d00001 diff --git a/Subsurface/Content/Items/Engine/engine.xml b/Subsurface/Content/Items/Engine/engine.xml new file mode 100644 index 000000000..4f804353d --- /dev/null +++ b/Subsurface/Content/Items/Engine/engine.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Subsurface/Content/Items/Engine/fabricator.png b/Subsurface/Content/Items/Engine/fabricator.png new file mode 100644 index 0000000000000000000000000000000000000000..e82943efb3a04add5766915f64b9d54fdf284c29 GIT binary patch literal 2133 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRdwrjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qt-4D7EwT^vIy;@(c(IBAYKU&~je?;d`!r4L>G zWGssd-q-oonQ+~nad)q5riaJTb$o0rbuY6Q=+y7FT3;V4d&%}d;$3E$Yd~r(vqyf{ zy{e91!XK6I@B8xpe*JGvp4_Rursik9GaTpnY^!Qnk_KpS1->YtW#+*)RJA=;W}^YvoLSq?td+s4T&I6R@V9>} zucycVDX9I-=jnIwhJIbcpP=3HKX&rl|MSwfY(1sOC6&1Mwq9R^1RGnfXzbbO2QhXv zl`o##{rRFjl?L+952V!n_#JHj{o(QWm#WJHFg=OI)$8jU?D{MWR?93}Ab4%}+eaO( zi3u0NE?(V}n)kGWc{8Rbo`sDnAI>2Yx0lVxAY=85tb0b=i;gr_KC6Dtkjo29zehKo zS*x>WPSU#natVuDrw5<;dcVHO%<9nro6mde8GaW&DX%+-nR5D-_kZSY17$wlVr_Ss z8KHcE7dY0(F-uBp2`w?rpBZflGT`oiCXh*MiaMIyBHn*{eB%9|riEzva`klwXg&fb z!SglW_c!z+(&Ar>PuBYr5Dt%gD!|(N;g#uxM#pH^@XynBPF3bRV|@Rwe!^lPL#tgQ zqvdO!eczvR`Vznr12v~(^~}So*$R+i1mctQedT-?t^s`PSyYAP z(U||X2i&;zm(O^;pZ!M0!>1y}f4?(G>!OAobIz6zMO{1pRX6mC#rYXtujk)zaX<|D ze~De;fn%yfMG;rpJI1&bJk0)n2haRf&zKL1WZVw@-x9wPqT2QV_teA(CpBm6{Lk`s zGXa17o&P}_s+zrGp%IUbC9CoG`3q_Z1;c;gx}^}+{&ESme~fO%i-QuD-IfFC5aTMp zGpzpGm-C~&`md?$g|MUHz({XpS3hHX;WqP{<(hH3B!Mw~XdAFhk8Z78_j5k;huLN6 z&cM_ms8g(cye)B_HZZ?JP61NmD literal 0 HcmV?d00001 diff --git a/Subsurface/Content/Items/Pump/pump.xml b/Subsurface/Content/Items/Pump/pump.xml index f4cd0ca95..edd6267a4 100644 --- a/Subsurface/Content/Items/Pump/pump.xml +++ b/Subsurface/Content/Items/Pump/pump.xml @@ -11,6 +11,7 @@ - + + diff --git a/Subsurface/Events/MonsterEvent.cs b/Subsurface/Events/MonsterEvent.cs index 7544fddc2..d060fa99a 100644 --- a/Subsurface/Events/MonsterEvent.cs +++ b/Subsurface/Events/MonsterEvent.cs @@ -32,8 +32,8 @@ namespace Subsurface for (int i = 0; i < amount; i++) { Vector2 position = (randomWayPoint == null) ? Vector2.Zero : randomWayPoint.SimPosition; - position.X += ToolBox.RandomFloatLocal(-0.5f,0.5f); - position.Y += ToolBox.RandomFloatLocal(-0.5f,0.5f); + position.X += MathUtils.RandomFloatLocal(-0.5f,0.5f); + position.Y += MathUtils.RandomFloatLocal(-0.5f,0.5f); monsters[i] = new Character(characterFile, position); } } diff --git a/Subsurface/FarseerPhysics MonoGame.dll b/Subsurface/FarseerPhysics MonoGame.dll deleted file mode 100644 index 66d295861a6f716a8dc4c334633c6e8c285eadd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 350720 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

NG!jBXX>zcT~g)UDs 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 y%*~hASX-9j*eY!=tsRDSl(%*vep !c.IsDead)==null) - { - Game1.GameSession.EndShift(null, null); - } + //if (characters.Find(c => !c.IsDead)==null) + //{ + // Game1.GameSession.EndShift(null, null); + //} } public void StartShift() { + listBox.ClearChildren(); + characters.Clear(); + foreach (CharacterInfo ci in characterInfos) { WayPoint randomWayPoint = WayPoint.GetRandom(WayPoint.SpawnType.Human); diff --git a/Subsurface/GameSession/GameMode.cs b/Subsurface/GameSession/GameMode.cs index 5be3b8bfa..bdd7acd68 100644 --- a/Subsurface/GameSession/GameMode.cs +++ b/Subsurface/GameSession/GameMode.cs @@ -137,7 +137,7 @@ namespace Subsurface if (endMessage != "" || this.endMessage == null) this.endMessage = endMessage; - Game1.GameSession.EndShift(null, null); + Game1.GameSession.EndShift(endMessage); } public static void Init() diff --git a/Subsurface/GameSession/GameSession.cs b/Subsurface/GameSession/GameSession.cs index e2dab348a..641c14183 100644 --- a/Subsurface/GameSession/GameSession.cs +++ b/Subsurface/GameSession/GameSession.cs @@ -113,8 +113,7 @@ namespace Subsurface public void StartShift(TimeSpan duration, Level level) { - - if (Submarine.Loaded != submarine) submarine.Load(); + submarine.Load(); level.Generate(submarine==null ? 100.0f : Math.Max(Submarine.Borders.Width, Submarine.Borders.Height)); @@ -133,19 +132,17 @@ namespace Subsurface if (level!=null) { - submarine.Move(level.StartPosition - submarine.Center, 1.0f); + submarine.SetPosition(level.StartPosition); } //crewManager.StartShift(); taskManager.StartShift(scriptedEventCount); } - public bool EndShift(GUIButton button, object obj) + public void EndShift(string endMessage) { if (Game1.Server!=null) - { - string endMessage = gameMode.EndMessage; - + { Game1.Server.EndGame(endMessage); } @@ -159,7 +156,7 @@ namespace Subsurface taskManager.EndShift(); //gameMode.End(); - return true; + //return true; } diff --git a/Subsurface/GameSession/SinglePlayerMode.cs b/Subsurface/GameSession/SinglePlayerMode.cs index d644d04ae..924f11b53 100644 --- a/Subsurface/GameSession/SinglePlayerMode.cs +++ b/Subsurface/GameSession/SinglePlayerMode.cs @@ -156,7 +156,7 @@ namespace Subsurface Character.characterList.RemoveAt(i); } - Game1.GameSession.EndShift(null, null); + Game1.GameSession.EndShift(""); return true; } diff --git a/Subsurface/Items/CharacterInventory.cs b/Subsurface/Items/CharacterInventory.cs index e61fce794..17611bd93 100644 --- a/Subsurface/Items/CharacterInventory.cs +++ b/Subsurface/Items/CharacterInventory.cs @@ -231,6 +231,7 @@ namespace Subsurface } else { + draggingItem.body.SetTransform(character.SimPosition, 0.0f); draggingItem.Drop(character); //draggingItem = null; } diff --git a/Subsurface/Items/Components/Engine.cs b/Subsurface/Items/Components/Engine.cs new file mode 100644 index 000000000..4db0fa5bc --- /dev/null +++ b/Subsurface/Items/Components/Engine.cs @@ -0,0 +1,108 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Xml.Linq; + +namespace Subsurface.Items.Components +{ + class Engine : Powered + { + + float force; + + float targetForce; + + float maxForce; + + float powerPerForce; + + [Editable, HasDefaultValue(1.0f, true)] + public float PowerPerForce + { + get { return powerPerForce; } + set + { + powerPerForce = Math.Max(0.0f, value); + } + } + + [Editable, HasDefaultValue(50000.0f, true)] + public float MaxForce + { + get { return maxForce; } + set + { + maxForce = Math.Max(0.0f, value); + } + } + + public float Force + { + get { return force;} + set { force = MathHelper.Clamp(value, -100.0f, 100.0f); } + } + + public Engine(Item item, XElement element) + : base(item, element) + { + isActive = true; + + } + + public override void Update(float deltaTime, Camera cam) + { + base.Update(deltaTime, cam); + + currPowerConsumption = Math.Abs(targetForce) * powerPerForce; + + Force = MathHelper.Lerp(force, (voltage < minVoltage) ? 0.0f : targetForce, 0.1f); + if (Force != 0.0f) + { + Submarine.Loaded.ApplyForce(new Vector2((force / 100.0f) * maxForce * (voltage / minVoltage), 0.0f)); + } + + voltage = 0.0f; + } + + public override void DrawHUD(SpriteBatch spriteBatch, Character character) + { + //isActive = true; + + int width = 300, height = 300; + int x = Game1.GraphicsWidth / 2 - width / 2; + int y = Game1.GraphicsHeight / 2 - height / 2 - 50; + + GUI.DrawRectangle(spriteBatch, new Rectangle(x, y, width, height), Color.Black, true); + + spriteBatch.DrawString(GUI.font, "Force: " + (int)targetForce+" %", new Vector2(x + 30, y + 30), Color.White); + + if (GUI.DrawButton(spriteBatch, new Rectangle(x + 280, y + 30, 40, 40), "+", true)) targetForce += 1.0f; + if (GUI.DrawButton(spriteBatch, new Rectangle(x + 280, y + 80, 40, 40), "-", true)) targetForce -= 1.0f; + + item.NewComponentEvent(this, true); + } + + public override void UpdateBroken(float deltaTime, Camera cam) + { + force = MathHelper.Lerp(force, 0.0f, 0.1f); + } + + public override void ReceiveSignal(string signal, Connection connection, Item sender) + { + base.ReceiveSignal(signal, connection, sender); + + if (connection.name == "set_force") + { + float tempForce; + if (float.TryParse(signal, NumberStyles.Float, CultureInfo.InvariantCulture, out tempForce)) + { + Force = tempForce; + } + } + } + } +} diff --git a/Subsurface/Items/Components/Pump.cs b/Subsurface/Items/Components/Pump.cs index 3b47a67c6..302a78c80 100644 --- a/Subsurface/Items/Components/Pump.cs +++ b/Subsurface/Items/Components/Pump.cs @@ -1,14 +1,16 @@ -using System.Collections.Specialized; +using Microsoft.Xna.Framework; +using System.Collections.Specialized; +using System.Globalization; using System.Xml.Linq; namespace Subsurface.Items.Components { class Pump : Powered { - float flow; + float flowPercentage; float maxFlow; - bool flowIn; + //bool flowIn; Hull hull1, hull2; @@ -37,9 +39,9 @@ namespace Subsurface.Items.Components if (hull2 == null && hull1 == null) return; float powerFactor = (currPowerConsumption==0.0f) ? 1.0f : voltage; - flow = maxFlow * powerFactor; + //flowPercentage = maxFlow * powerFactor; - float deltaVolume = flow * ((flowIn) ? 1.0f : -1.0f); + float deltaVolume = (flowPercentage/100.0f) * maxFlow * powerFactor; hull1.Volume += deltaVolume; if (hull2 != null) hull2.Volume -= deltaVolume; @@ -139,21 +141,31 @@ namespace Subsurface.Items.Components { isActive = !isActive; } - else if (connection.name == "set_state") + else if (connection.name == "set_active") { isActive = (signal != "0"); } + else if (connection.name == "set_speed") + { + float tempSpeed; + if (float.TryParse(signal, NumberStyles.Float, CultureInfo.InvariantCulture, out tempSpeed)) + { + flowPercentage = MathHelper.Clamp(flowPercentage, -100.0f, 100.0f); + } + } + + } public override void FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetOutgoingMessage message) { - message.Write(flowIn); + message.Write(flowPercentage); message.Write(isActive); } public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetIncomingMessage message) { - flowIn = message.ReadBoolean(); + flowPercentage = message.ReadFloat(); isActive = message.ReadBoolean(); } } diff --git a/Subsurface/Items/Components/Reactor.cs b/Subsurface/Items/Components/Reactor.cs index d47887699..433926992 100644 --- a/Subsurface/Items/Components/Reactor.cs +++ b/Subsurface/Items/Components/Reactor.cs @@ -141,16 +141,34 @@ namespace Subsurface.Items.Components } else if (autoTemp) { - float load = 0.0f; - foreach (MapEntity e in item.linkedTo) - { - Item it = e as Item; - if (it == null) continue; - PowerTransfer pt = it.GetComponent(); - if (pt != null) load += pt.PowerLoad; + float load = 0.0f; + + List connections = item.Connections; + if (connections!=null && connections.Count>0) + { + foreach (Connection connection in connections) + { + foreach (Connection recipient in connection.Recipients) + { + Item it = recipient.Item as Item; + if (it == null) continue; + + PowerTransfer pt = it.GetComponent(); + if (pt != null) load += pt.PowerLoad; + } + } } + //foreach (MapEntity e in item.linkedTo) + //{ + // Item it = e as Item; + // if (it == null) continue; + + // PowerTransfer pt = it.GetComponent(); + // if (pt != null) load += pt.PowerLoad; + //} + fissionRate = Math.Min(load / 200.0f, shutDownTemp); //float target = Math.Min(targetTemp, load); CoolingRate = coolingRate + (temperature - Math.Min(load, shutDownTemp) + deltaTemp)*0.1f; @@ -319,8 +337,6 @@ namespace Subsurface.Items.Components if (GUI.DrawButton(spriteBatch, new Rectangle(x + 450, y + 180, 40, 40), "-", true)) shutDownTemp -= 100.0f; item.NewComponentEvent(this, true); - - } static void UpdateGraph(IList graph, T newValue) diff --git a/Subsurface/Items/Components/Rope.cs b/Subsurface/Items/Components/Rope.cs index 0f541e78a..4edf38726 100644 --- a/Subsurface/Items/Components/Rope.cs +++ b/Subsurface/Items/Components/Rope.cs @@ -269,7 +269,7 @@ namespace Subsurface.Items.Components spriteBatch.Draw(sprite.Texture, ConvertUnits.ToDisplayUnits(start), null, Color.White, - ToolBox.VectorToAngle(end - start), + MathUtils.VectorToAngle(end - start), new Vector2(0.0f, sprite.size.Y / 2.0f), new Vector2((ConvertUnits.ToDisplayUnits(Vector2.Distance(start, end))) / sprite.Texture.Width, 1.0f), SpriteEffects.None, diff --git a/Subsurface/Items/Components/Signal/Connection.cs b/Subsurface/Items/Components/Signal/Connection.cs index bc07c0cae..e7b6ef802 100644 --- a/Subsurface/Items/Components/Signal/Connection.cs +++ b/Subsurface/Items/Components/Signal/Connection.cs @@ -175,9 +175,22 @@ namespace Subsurface.Items.Components bool mouseInRect = panelRect.Contains(PlayerInput.MousePosition); + Wire equippedWire = null; + //if the character using the panel has a wire item equipped + //and the wire hasn't been connected yet, draw it on the panel + for (int i = 0; i < character.SelectedItems.Length; i++) + { + Item selectedItem = character.SelectedItems[i]; + + if (selectedItem == null) continue; + + Wire wireComponent = selectedItem.GetComponent(); + if (wireComponent != null) equippedWire = wireComponent; + } + Vector2 rightPos = new Vector2(x + width - 110, y + 20); Vector2 leftPos = new Vector2(x + 110, y + 20); - + float wireInterval = 10.0f; float rightWireX = x+width / 2 + wireInterval; @@ -199,8 +212,9 @@ namespace Subsurface.Items.Components if (c.isOutput) { c.Draw(spriteBatch, panel.Item, rightPos, - new Vector2(rightPos.X + 20, rightPos.Y), - new Vector2(rightWireX, y + height), mouseInRect); + new Vector2(rightPos.X + 20, rightPos.Y), + new Vector2(rightWireX, y + height), + mouseInRect, equippedWire != null); rightPos.Y += 30; rightWireX += wireInterval; @@ -209,59 +223,41 @@ namespace Subsurface.Items.Components { c.Draw(spriteBatch, panel.Item, leftPos, new Vector2(leftPos.X - 100, leftPos.Y), - new Vector2(leftWireX, y + height), mouseInRect); + new Vector2(leftWireX, y + height), + mouseInRect, equippedWire != null); leftPos.Y += 30; leftWireX -= wireInterval; } } - - - //draw a wire for all the items that are linked to this item, but not to any of the signal connections - //foreach (MapEntity entity in panel.Item.linkedTo) - //{ - // Item linked = entity as Item; - // if (linked == null) continue; - - // //if the item is already connected, don't draw it again - // if (panel.connections.Find(c => c.linked.Contains()) != null) continue; - - // DrawWire(spriteBatch, false, linked, - // new Vector2(leftPos.X + (leftPos.Y - y), y + height- 50), - // new Vector2(leftPos.X + (leftPos.Y - y), y + height), mouseInRect); - - - - - - // leftPos.Y += 30.0f; - //} - + //if the character using the panel has a wire item equipped //and the wire hasn't been connected yet, draw it on the panel - - - for (int i = 0; i < character.SelectedItems.Length; i++ ) + if (equippedWire!=null) { - Item selectedItem = character.SelectedItems[i]; - - if (selectedItem == null) continue; - - Wire wireComponent = selectedItem.GetComponent(); - - if (wireComponent != null && - panel.connections.Find(c => c.wires.Contains(wireComponent)) == null) + if (panel.connections.Find(c => c.wires.Contains(equippedWire)) == null) { - DrawWire(spriteBatch, selectedItem, selectedItem, + DrawWire(spriteBatch, equippedWire.Item, equippedWire.Item, new Vector2(x + width / 2, y + height - 100), - new Vector2(x + width / 2, y + height), mouseInRect); + new Vector2(x + width / 2, y + height), mouseInRect, false); - if (draggingConnected == selectedItem) Inventory.draggingItem = selectedItem; + if (draggingConnected == equippedWire.Item) Inventory.draggingItem = equippedWire.Item; - break; + //break; } } + //for (int i = 0; i < character.SelectedItems.Length; i++ ) + //{ + // Item selectedItem = character.SelectedItems[i]; + + // if (selectedItem == null) continue; + + // Wire wireComponent = selectedItem.GetComponent(); + + + //} + //stop dragging a wire item if cursor is outside the panel if (mouseInRect) Inventory.draggingItem = null; @@ -275,7 +271,7 @@ namespace Subsurface.Items.Components } } - private void Draw(SpriteBatch spriteBatch, Item item, Vector2 position, Vector2 labelPos, Vector2 wirePosition, bool mouseIn) + private void Draw(SpriteBatch spriteBatch, Item item, Vector2 position, Vector2 labelPos, Vector2 wirePosition, bool mouseIn, bool wireEquipped) { spriteBatch.DrawString(GUI.font, name, new Vector2(labelPos.X, labelPos.Y-10), Color.White); @@ -289,7 +285,7 @@ namespace Subsurface.Items.Components Connection recipient = wires[i].OtherConnection(this); - DrawWire(spriteBatch, wires[i].Item, (recipient == null) ? wires[i].Item : recipient.item, position, wirePosition, mouseIn); + DrawWire(spriteBatch, wires[i].Item, (recipient == null) ? wires[i].Item : recipient.item, position, wirePosition, mouseIn, wireEquipped); wirePosition.X += (isOutput) ? -20 : 20; } @@ -318,6 +314,9 @@ namespace Subsurface.Items.Components if (index>-1) { wires[index].RemoveConnection(this); + wires[index].Item.SetTransform(item.SimPosition, 0.0f); + wires[index].Item.Drop(); + wires[index].Item.body.Enabled = true; wires[index] = null; } } @@ -326,7 +325,7 @@ namespace Subsurface.Items.Components } - private static void DrawWire(SpriteBatch spriteBatch, Item wireItem, Item item, Vector2 end, Vector2 start, bool mouseIn) + private static void DrawWire(SpriteBatch spriteBatch, Item wireItem, Item item, Vector2 end, Vector2 start, bool mouseIn, bool wireEquipped) { if (draggingConnected == wireItem) { @@ -339,27 +338,29 @@ namespace Subsurface.Items.Components int textX = (int)start.X; float connLength = 10.0f; + Color color = (wireEquipped) ? Color.Gray : Color.White; + if (Math.Abs(end.X-start.X) start.X) ? -1.0f : 1.0f; wireCorner.Draw(spriteBatch, - new Vector2(start.X, end.Y), 0.0f, 1.0f, + new Vector2(start.X, end.Y), color, 0.0f, 1.0f, (end.X > start.X) ? SpriteEffects.None : SpriteEffects.FlipHorizontally); float wireStartX = start.X - wireCorner.size.X / 2 * dir; @@ -368,14 +369,14 @@ namespace Subsurface.Items.Components pos = new Vector2(Math.Min(wireStartX,wireEndX), end.Y - wireVertical.size.Y / 2); size = new Vector2(Math.Abs(wireStartX - wireEndX), wireHorizontal.size.Y); - wireHorizontal.DrawTiled(spriteBatch, pos, size, Color.White); + wireHorizontal.DrawTiled(spriteBatch, pos, size, color); rect = new Rectangle((int)pos.X, (int)pos.Y, (int)size.X, (int)size.Y); - if (rect.Contains(PlayerInput.MousePosition)) mouseOn = true; + if (!wireEquipped && rect.Contains(PlayerInput.MousePosition)) mouseOn = true; - connector.Draw(spriteBatch, end, -MathHelper.PiOver2*dir); + connector.Draw(spriteBatch, end, color, -MathHelper.PiOver2*dir); } - if (draggingConnected == null) + if (draggingConnected == null && !wireEquipped) { if (mouseOn || Vector2.Distance(end, PlayerInput.MousePosition)<20.0f) { @@ -387,7 +388,7 @@ namespace Subsurface.Items.Components spriteBatch.DrawString(GUI.font, item.Name, new Vector2(textX, start.Y-30), - mouseOn ? Color.Gold : Color.White, + (mouseOn && !wireEquipped) ? Color.Gold : Color.White, MathHelper.PiOver2, GUI.font.MeasureString(item.Name)*0.5f, 1.0f, SpriteEffects.None, 0.0f); @@ -431,7 +432,6 @@ namespace Subsurface.Items.Components Item wireItem = MapEntity.FindEntityByID(wireId[i]) as Item; if (wireItem == null) continue; - wires[i] = wireItem.GetComponent(); if (wires[i]!=null) diff --git a/Subsurface/Items/Components/Signal/Wire.cs b/Subsurface/Items/Components/Signal/Wire.cs index f00bc8503..8c238b175 100644 --- a/Subsurface/Items/Components/Signal/Wire.cs +++ b/Subsurface/Items/Components/Signal/Wire.cs @@ -122,15 +122,15 @@ namespace Subsurface.Items.Components item.FindHull(); Vector2 position = item.Position; - position.X = ToolBox.Round(item.Position.X, nodeDistance); + position.X = MathUtils.Round(item.Position.X, nodeDistance); if (item.currentHull == null) { - position.Y = ToolBox.Round(item.Position.Y, nodeDistance); + position.Y = MathUtils.Round(item.Position.Y, nodeDistance); } else { position.Y -= item.currentHull.Rect.Y - item.currentHull.Rect.Height; - position.Y = Math.Max(ToolBox.Round(position.Y, nodeDistance), heightFromFloor); + position.Y = Math.Max(MathUtils.Round(position.Y, nodeDistance), heightFromFloor); position.Y += item.currentHull.Rect.Y - item.currentHull.Rect.Height; } @@ -258,7 +258,7 @@ namespace Subsurface.Items.Components spriteBatch.Draw(wireSprite.Texture, start, null, color, - ToolBox.VectorToAngle(end - start), + MathUtils.VectorToAngle(end - start), new Vector2(0.0f, wireSprite.size.Y / 2.0f), new Vector2((Vector2.Distance(start, end)) / wireSprite.Texture.Width, 0.3f), SpriteEffects.None, diff --git a/Subsurface/Items/Components/Steering.cs b/Subsurface/Items/Components/Steering.cs new file mode 100644 index 000000000..43367febe --- /dev/null +++ b/Subsurface/Items/Components/Steering.cs @@ -0,0 +1,84 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Xml.Linq; + +namespace Subsurface.Items.Components +{ + class Steering : ItemComponent + { + Vector2 currVelocity; + Vector2 targetVelocity; + + public Steering(Item item, XElement element) + : base(item, element) + { + isActive = true; + } + + public override void Update(float deltaTime, Camera cam) + { + base.Update(deltaTime, cam); + + item.SendSignal(targetVelocity.X.ToString(), "velocity_x_out", item); + item.SendSignal(targetVelocity.Y.ToString(), "velocity_y_out", item); + } + + public override void DrawHUD(SpriteBatch spriteBatch, Character character) + { + //isActive = true; + + int width = 300, height = 300; + int x = Game1.GraphicsWidth / 2 - width / 2; + int y = Game1.GraphicsHeight / 2 - height / 2 - 50; + + GUI.DrawRectangle(spriteBatch, new Rectangle(x, y, width, height), Color.Black, true); + + Rectangle velRect = new Rectangle(x+20, y+20, 100, 100); + GUI.DrawRectangle(spriteBatch, velRect, Color.White, false); + + GUI.DrawLine(spriteBatch, + new Vector2(velRect.Center.X,velRect.Center.Y), + new Vector2(velRect.Center.X + currVelocity.X, velRect.Center.Y - currVelocity.Y), + Color.Gray); + + Vector2 targetVelPos = new Vector2(velRect.Center.X + targetVelocity.X, velRect.Center.Y - targetVelocity.Y); + + GUI.DrawLine(spriteBatch, + new Vector2(velRect.Center.X, velRect.Center.Y), + targetVelPos, + Color.LightGray); + + GUI.DrawRectangle(spriteBatch, new Rectangle((int)targetVelPos.X - 5, (int)targetVelPos.Y - 5, 10, 10), Color.White); + + if (Vector2.Distance(PlayerInput.MousePosition, targetVelPos)<10.0f) + { + GUI.DrawRectangle(spriteBatch, new Rectangle((int)targetVelPos.X -10, (int)targetVelPos.Y - 10, 20, 20), Color.Red); + + if (PlayerInput.LeftButtonDown()) + { + targetVelocity = PlayerInput.MousePosition - new Vector2(velRect.Center.X, velRect.Center.Y); + targetVelocity.Y = -targetVelocity.Y; + } + } + + //spriteBatch.DrawString(GUI.font, "Force: " + (int)force + " %", new Vector2(x + 30, y + 30), Color.White); + + //if (GUI.DrawButton(spriteBatch, new Rectangle(x + 280, y + 30, 40, 40), "+", true)) targetForce += 1.0f; + //if (GUI.DrawButton(spriteBatch, new Rectangle(x + 280, y + 80, 40, 40), "-", true)) targetForce -= 1.0f; + + item.NewComponentEvent(this, true); + } + + public override void ReceiveSignal(string signal, Connection connection, Item sender) + { + if (connection.name == "velocity_in") + { + currVelocity = ToolBox.ParseToVector2(signal, false); + } + } + } +} diff --git a/Subsurface/Items/Components/Turret.cs b/Subsurface/Items/Components/Turret.cs index a5d5d3d31..079b06b9e 100644 --- a/Subsurface/Items/Components/Turret.cs +++ b/Subsurface/Items/Components/Turret.cs @@ -112,11 +112,11 @@ namespace Subsurface.Items.Components if (targetRotation < minRotation || targetRotation > maxRotation) { - float diff = ToolBox.WrapAngleTwoPi(targetRotation - (minRotation + maxRotation) / 2.0f); + float diff = MathUtils.WrapAngleTwoPi(targetRotation - (minRotation + maxRotation) / 2.0f); targetRotation = (diff > Math.PI) ? minRotation : maxRotation; } - rotation = ToolBox.CurveAngle(rotation, targetRotation, 0.05f); + rotation = MathUtils.CurveAngle(rotation, targetRotation, 0.05f); //if (!prefab.FocusOnSelected) return; @@ -131,7 +131,7 @@ namespace Subsurface.Items.Components Vector2 offset = character.CursorPosition - centerPos; offset.Y = -offset.Y; - targetRotation = ToolBox.WrapAngleTwoPi(ToolBox.VectorToAngle(offset)); + targetRotation = MathUtils.WrapAngleTwoPi(MathUtils.VectorToAngle(offset)); isActive = true; diff --git a/Subsurface/Map/Explosion.cs b/Subsurface/Map/Explosion.cs index 5974e38c2..55f2ad76e 100644 --- a/Subsurface/Map/Explosion.cs +++ b/Subsurface/Map/Explosion.cs @@ -48,7 +48,7 @@ namespace Subsurface for (int i = 0; i ToolBox.RandomFloatLocal(0.2f,10.0f)) + if (maxDelta > MathUtils.RandomFloatLocal(0.2f,10.0f)) { Game1.particleManager.CreateParticle("mist", ConvertUnits.ToSimUnits(new Vector2(rect.X + WaveWidth * i,surface + waveY[i])), diff --git a/Subsurface/Map/Level.cs b/Subsurface/Map/Level.cs index 9851ce1f0..fd655d3af 100644 --- a/Subsurface/Map/Level.cs +++ b/Subsurface/Map/Level.cs @@ -24,7 +24,7 @@ namespace Subsurface private int siteInterval; - const int gridCellWidth = 1000; + const int gridCellWidth = 2000; List[,] cellGrid; //List bodies; @@ -66,7 +66,7 @@ namespace Subsurface Game1.random = new Random(seed); - if (loaded != this && loaded != null) + if (loaded != null) { loaded.Unload(); } @@ -160,7 +160,7 @@ namespace Subsurface borders.Right - siteInterval * 2, borders.Y + borders.Height - siteInterval * 2); Vector2 start = pathCells[Game1.random.Next(1,pathCells.Count-2)].Center; - Vector2 end = new Vector2(ToolBox.RandomFloat(pathBorders.X, pathBorders.Right), ToolBox.RandomFloat(pathBorders.Y, pathBorders.Bottom)); + Vector2 end = new Vector2(MathUtils.RandomFloat(pathBorders.X, pathBorders.Right), MathUtils.RandomFloat(pathBorders.Y, pathBorders.Bottom)); pathCells.AddRange ( @@ -174,12 +174,16 @@ namespace Subsurface startPosition = pathCells[0].Center; endPosition = pathCells[pathCells.Count - 1].Center; + cells = CleanCells(pathCells); + foreach (VoronoiCell cell in pathCells) { cells.Remove(cell); } - GenerateLevel(cells); + //GenerateBodies(cells, pathCells); + + GeneratePolygons(cells, pathCells); Debug.WriteLine("Generatelevel: " + sw2.ElapsedMilliseconds + " ms"); sw2.Restart(); @@ -303,6 +307,25 @@ namespace Subsurface return tooCloseCells; } + ///

+ /// remove all cells except those that are adjacent to the empty cells + /// + private List CleanCells(List emptyCells) + { + List newCells = new List(); + + foreach (VoronoiCell cell in emptyCells) + { + foreach (GraphEdge edge in cell.edges) + { + VoronoiCell adjacent = edge.AdjacentCell(cell); + if (!newCells.Contains(adjacent)) newCells.Add(adjacent); + } + } + + return newCells; + } + /// /// check whether line from a to b is intersecting with line from c to b /// @@ -319,6 +342,18 @@ namespace Subsurface return (r >= 0 && r <= 1) && (s >= 0 && s <= 1); } + + //public Microsoft.Xna.Framework.Point GridCell(Vector2 position) + //{ + // Microsoft.Xna.Framework.Point point = new Microsoft.Xna.Framework.Point( + // (int)Math.Floor(position.X / gridCellWidth), + // (int)Math.Floor(position.Y / gridCellWidth)); + + // point.X = MathHelper.Clamp(point.X, 0, cellGrid.GetLength(0) - 1); + // point.Y = MathHelper.Clamp(point.X, 0, cellGrid.GetLength(1) - 1); + + // return point; + //} /// /// find the index of the cell which the point is inside @@ -354,25 +389,71 @@ namespace Subsurface return cells.IndexOf(closestCell); } - private void GenerateLevel(List cells) + private void GenerateBodies(List cells, List emptyCells) + { + foreach (VoronoiCell cell in cells) + { + List points = new List(); + foreach (GraphEdge edge in cell.edges) + { + VoronoiCell adjacentCell = edge.AdjacentCell(cell); + if (!emptyCells.Contains(adjacentCell)) continue; + + if (!points.Contains(edge.point1)) points.Add(edge.point1); + if (!points.Contains(edge.point2)) points.Add(edge.point2); + + + } + + if (points.Count == 0) continue; + + for (int i = 0 ; i cells, List emptyCells) { List verticeList = new List(); //bodies = new List(); - List tempVertices = new List(); + List bodyPoints = new List(); int n = 0; foreach (VoronoiCell cell in cells) { n = (n + 30) % 255; + bodyPoints.Clear(); tempVertices.Clear(); foreach (GraphEdge ge in cell.edges) { if (ge.point1 == ge.point2) continue; if (!tempVertices.Contains(ge.point1)) tempVertices.Add(ge.point1); if (!tempVertices.Contains(ge.point2)) tempVertices.Add(ge.point2); + + VoronoiCell adjacentCell = ge.AdjacentCell(cell); + if (!emptyCells.Contains(adjacentCell)) continue; + + if (!bodyPoints.Contains(ge.point1)) bodyPoints.Add(ge.point1); + if (!bodyPoints.Contains(ge.point2)) bodyPoints.Add(ge.point2); } if (tempVertices.Count < 3) continue; @@ -404,10 +485,28 @@ namespace Subsurface if (isSame) continue; - CreateBody(cell, triangleVertices); + //CreateBody(cell, triangleVertices); } + if (bodyPoints.Count < 2) continue; + bodyPoints.Sort(new CompareCCW(cell.Center)); + + for (int i = 0; i < bodyPoints.Count; i++) + { + bodyPoints[i] = ConvertUnits.ToSimUnits(bodyPoints[i]); + } + + Vertices bodyVertices = new Vertices(bodyPoints); + + Body edgeBody = BodyFactory.CreateChainShape( + Game1.world, bodyVertices, cell); + edgeBody.UserData = cell; + + edgeBody.BodyType = BodyType.Static; + edgeBody.CollisionCategories = Physics.CollisionWall | Physics.CollisionLevel; + + cell.body = edgeBody; } vertices = verticeList.ToArray(); @@ -415,77 +514,96 @@ namespace Subsurface //return bodies; } - private void CreateBody(VoronoiCell cell, List bodyVertices) + //private void CreateBody(VoronoiCell cell, List bodyVertices) + //{ + // for (int i = 0; i < bodyVertices.Count; i++) + // { + // bodyVertices[i] = ConvertUnits.ToSimUnits(bodyVertices[i]); + // } + // //get farseer 'vertices' from vectors + // Vertices _shapevertices = new Vertices(bodyVertices); + // //_shapevertices.Sort(new CompareCCW(cell.Center)); + + // //feed vertices array to BodyFactory.CreatePolygon to get a new farseer polygonal body + // Body _newBody = BodyFactory.CreatePolygon(Game1.world, _shapevertices, 15); + // _newBody.BodyType = BodyType.Static; + // _newBody.CollisionCategories = Physics.CollisionWall | Physics.CollisionLevel; + // _newBody.UserData = cell; + + // cell.body = _newBody; + //} + + + public Vector2 position; + + public void SetPosition(Vector2 pos) { - for (int i = 0; i < bodyVertices.Count; i++) + Vector2 amount = ConvertUnits.ToSimUnits(pos - position); + foreach (VoronoiCell cell in cells) { - bodyVertices[i] = ConvertUnits.ToSimUnits(bodyVertices[i]); + if (cell.body == null) continue; + //foreach (Body b in cell.bodies) + //{ + cell.body.SetTransform(cell.body.Position + amount, cell.body.Rotation); + //} } - //get farseer 'vertices' from vectors - Vertices _shapevertices = new Vertices(bodyVertices); - //_shapevertices.Sort(new CompareCCW(cell.Center)); - //feed vertices array to BodyFactory.CreatePolygon to get a new farseer polygonal body - Body _newBody = BodyFactory.CreatePolygon(Game1.world, _shapevertices, 15); - _newBody.BodyType = BodyType.Static; - _newBody.CollisionCategories = Physics.CollisionWall; - - cell.bodies.Add(_newBody); + position = pos; } - - Vector2 position; - public void Move(Vector2 amount, float deltaTime) + public void Move(Vector2 amount) { - amount = amount * deltaTime; position += amount; amount = ConvertUnits.ToSimUnits(amount); foreach (VoronoiCell cell in cells) { - foreach (Body b in cell.bodies) - { - b.SetTransform(b.Position+amount, b.Rotation); - } + if (cell.body == null) continue; + //foreach (Body b in cell.bodies) + //{ + // b.SetTransform(b.Position+amount, b.Rotation); + //} + cell.body.SetTransform(cell.body.Position + amount, cell.body.Rotation); } - - } - - - public void SetObserverPosition(Vector2 position) - { - position = position - this.position; - int gridPosX = (int)Math.Floor(position.X / gridCellWidth); - int gridPosY = (int)Math.Floor(position.Y / gridCellWidth); - int searchOffset = 1; - - for (int x = 0; x < cellGrid.GetLength(0); x++) + foreach (Character character in Character.characterList) { - for (int y = 0; y = startX && x <= endX && y >= startY && y <= endY); + //} } } } @@ -494,7 +612,37 @@ namespace Subsurface public void RenderLines(SpriteBatch spriteBatch) { - GUI.DrawRectangle(spriteBatch, new Rectangle(borders.X, borders.Y-borders.Height, borders.Width, borders.Height), Color.Cyan); + //GUI.DrawRectangle(spriteBatch, new Rectangle(borders.X, borders.Y-borders.Height, borders.Width, borders.Height), Color.Cyan); + + //for (int x = 0; x < cellGrid.GetLength(0); x++) + //{ + // for (int y = 0; y < cellGrid.GetLength(1); y++) + // { + // GUI.DrawRectangle(spriteBatch, + // new Rectangle(x * gridCellWidth + (int)position.X, borders.Y - borders.Height + y * gridCellWidth - (int)position.Y, gridCellWidth, gridCellWidth), + // Color.Cyan); + // } + //} + + int gridPosX = (int)Math.Floor(-observerPosition.X / gridCellWidth); + int gridPosY = (int)Math.Floor(-observerPosition.Y / gridCellWidth); + int searchOffset = 2; + + int startX = Math.Max(gridPosX - searchOffset, 0); + int endX = Math.Min(gridPosX + searchOffset, cellGrid.GetLength(0) - 1); + + int startY = Math.Max(gridPosY - searchOffset, 0); + int endY = Math.Min(gridPosY + searchOffset, cellGrid.GetLength(1) - 1); + + for (int x = startX; x < endX; x++) + { + for (int y = startY; y < endY; y++) + { + GUI.DrawRectangle(spriteBatch, + new Rectangle(x * gridCellWidth + (int)position.X, borders.Y - borders.Height + y * gridCellWidth - (int)position.Y, gridCellWidth, gridCellWidth), + Color.Cyan); + } + } foreach (VoronoiCell cell in cells) { @@ -505,8 +653,8 @@ namespace Subsurface Vector2 end = cell.edges[i].point2+position; end.Y = -end.Y; - - GUI.DrawLine(spriteBatch, start, end, Color.Red); + + GUI.DrawLine(spriteBatch, start, end, (cell.body!=null && cell.body.Enabled) ? Color.Green : Color.Red); } } } @@ -528,13 +676,15 @@ namespace Subsurface private void Unload() { - foreach (VoronoiCell cell in cells) - { - foreach (Body b in cell.bodies) - { - Game1.world.RemoveBody(b); - } - } + position = Vector2.Zero; + + //foreach (VoronoiCell cell in cells) + //{ + // //foreach (Body b in cell.bodies) + // //{ + // Game1.world.RemoveBody(cell.body); + // //} + //} //bodies = null; @@ -547,36 +697,5 @@ namespace Subsurface vertexBuffer = null; } } - - class CompareCCW : IComparer - { - private Vector2 center; - - public CompareCCW(Vector2 center) - { - this.center = center; - } - public int Compare(Vector2 a, Vector2 b) - { - if (a.X - center.X >= 0 && b.X - center.X < 0) return -1; - if (a.X - center.X < 0 && b.X - center.X >= 0) return 1; - if (a.X - center.X == 0 && b.X - center.X == 0) - { - if (a.Y - center.Y >= 0 || b.Y - center.Y >= 0) return Math.Sign(b.Y-a.Y); - return Math.Sign(a.Y-b.Y); - } - - // compute the cross product of vectors (center -> a) x (center -> b) - float det = (a.X - center.X) * (b.Y - center.Y) - (b.X - center.X) * (a.Y - center.Y); - if (det < 0) return -1; - if (det > 0) return 1; - - // points a and b are on the same line from the center - // check which point is closer to the center - float d1 = (a.X - center.X) * (a.X - center.X) + (a.Y - center.Y) * (a.Y - center.Y); - float d2 = (b.X - center.X) * (b.X - center.X) + (b.Y - center.Y) * (b.Y - center.Y); - return Math.Sign(d2-d1); - } - } - + } diff --git a/Subsurface/Map/Structure.cs b/Subsurface/Map/Structure.cs index f3ce6dc14..a8e47a75c 100644 --- a/Subsurface/Map/Structure.cs +++ b/Subsurface/Map/Structure.cs @@ -418,7 +418,12 @@ namespace Subsurface { if (sections[sectionIndex].gap == null) { - sections[sectionIndex].gap = new Gap(sections[sectionIndex].rect, !isHorizontal); + Rectangle gapRect = sections[sectionIndex].rect; + gapRect.X -= 10; + gapRect.Y += 10; + gapRect.Width += 20; + gapRect.Height += 20; + sections[sectionIndex].gap = new Gap(gapRect, !isHorizontal); } } diff --git a/Subsurface/Map/Submarine.cs b/Subsurface/Map/Submarine.cs index 5b6722236..f10201689 100644 --- a/Subsurface/Map/Submarine.cs +++ b/Subsurface/Map/Submarine.cs @@ -1,6 +1,10 @@ using FarseerPhysics; using FarseerPhysics.Collision; +using FarseerPhysics.Common; +using FarseerPhysics.Common.Decomposition; using FarseerPhysics.Dynamics; +using FarseerPhysics.Dynamics.Contacts; +using FarseerPhysics.Factories; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using System; @@ -9,6 +13,7 @@ using System.IO; using System.Linq; using System.Reflection; using System.Xml.Linq; +using Voronoi2; namespace Subsurface { @@ -19,30 +24,29 @@ namespace Subsurface class Submarine { - static string SaveFolder; - Md5Hash hash; - public static List SavedSubmarines = new List(); - + private static Submarine loaded; - //public static Map Loaded - //{ - // get { return loaded; } - // set { loaded = value; } - //} - - public static readonly Vector2 gridSize = new Vector2(16.0f, 16.0f); private static Vector2 lastPickedPosition; private static float lastPickedFraction; + static string SaveFolder; + Md5Hash hash; + + Vector2 speed; + private Rectangle borders; + private Body hullBody; + private string filePath; private string name; + //properties ---------------------------------------------------- + public string Name { get { return name; } @@ -94,6 +98,104 @@ namespace Subsurface get { return filePath; } } + //constructors & generation ---------------------------------------------------- + + public Submarine(string filePath, string hash = "") + { + this.filePath = filePath; + try + { + name = System.IO.Path.GetFileNameWithoutExtension(filePath); + } + catch (Exception e) + { + DebugConsole.ThrowError("Error loading map " + filePath + "!", e); + } + + if (hash != "") + { + this.hash = new Md5Hash(hash); + } + else + { + //XDocument doc = OpenDoc(filePath); + + //string md5Hash = ToolBox.GetAttributeString(doc.Root, "md5hash", ""); + //if (md5Hash == "" || md5Hash.Length < 16) + //{ + // DebugConsole.ThrowError("Couldn't find a valid MD5 hash in the map file"); + //} + + //this.mapHash = new MapHash(md5Hash); + } + + } + + private List GenerateConvexHull() + { + List points = new List(); + + Vector2 leftMost = Vector2.Zero; + + foreach (Structure wall in Structure.wallList) + { + for (int x = -1; x <= 1; x += 2) + { + for (int y = -1; y <= 1; y += 2) + { + Vector2 corner = new Vector2(wall.Rect.X + wall.Rect.Width / 2.0f, wall.Rect.Y - wall.Rect.Height / 2.0f); + corner.X += x * wall.Rect.Width / 2.0f; + corner.Y += y * wall.Rect.Height / 2.0f; + + if (points.Contains(corner)) continue; + + points.Add(corner); + if (leftMost == Vector2.Zero || corner.X < leftMost.X) leftMost = corner; + } + } + } + + List hullPoints = new List(); + + Vector2 currPoint = leftMost; + Vector2 endPoint; + do + { + hullPoints.Add(currPoint); + endPoint = points[0]; + + for (int i = 1; i < points.Count; i++) + { + if ((currPoint == endPoint) + || (Orientation(currPoint, endPoint, points[i]) == -1)) + { + endPoint = points[i]; + } + } + + currPoint = endPoint; + + } + while (endPoint != hullPoints[0]); + + return hullPoints; + } + + private static int Orientation(Vector2 p1, Vector2 p2, Vector2 p) + { + // Determinant + float Orin = (p2.X - p1.X) * (p.Y - p1.Y) - (p.X - p1.X) * (p2.Y - p1.Y); + + if (Orin > 0) + return -1; // (* Orientation is to the left-hand side *) + if (Orin < 0) + return 1; // (* Orientation is to the right-hand side *) + + return 0; // (* Orientation is neutral aka collinear *) + } + + //drawing ---------------------------------------------------- + public static void Draw(SpriteBatch spriteBatch, bool editing = false) { for (int i = 0; i < MapEntity.mapEntityList.Count(); i++ ) @@ -109,6 +211,19 @@ namespace Subsurface if (MapEntity.mapEntityList[i].sprite == null || MapEntity.mapEntityList[i].sprite.Depth < 0.5f) MapEntity.mapEntityList[i].Draw(spriteBatch, editing); } + + if (loaded == null) return; + + //foreach (HullBody hb in loaded.hullBodies) + //{ + // spriteBatch.Draw( + // hb.shapeTexture, + // ConvertUnits.ToDisplayUnits(new Vector2(hb.body.Position.X, -hb.body.Position.Y)), + // null, + // Color.White, + // -hb.body.Rotation, + // new Vector2(hb.shapeTexture.Width / 2, hb.shapeTexture.Height / 2), 1.0f, SpriteEffects.None, 0.0f); + //} } public static void DrawBack(SpriteBatch spriteBatch, bool editing = false) @@ -120,6 +235,8 @@ namespace Subsurface } } + //math/physics stuff ---------------------------------------------------- + public static Vector2 MouseToWorldGrid(Camera cam) { Vector2 position = new Vector2(PlayerInput.GetMouseState.X, PlayerInput.GetMouseState.Y); @@ -135,8 +252,7 @@ namespace Subsurface return position; } - - + public static Rectangle AbsRect(Vector2 pos, Vector2 size) { if (size.X < 0.0f) @@ -173,28 +289,6 @@ namespace Subsurface } } - public void Move(Vector2 amount, float deltaTime) - { - if (amount == Vector2.Zero) return; - - Level.Loaded.Move(-amount, deltaTime); - - //foreach (MapEntity e in Structure.mapEntityList) - //{ - // e.Move(amount); - //} - - //amount = ConvertUnits.ToSimUnits(amount*deltaTime); - //foreach (Character c in Character.characterList) - //{ - // if (c.animController.CurrentHull != null) continue; - // foreach (Limb l in c.animController.limbs) - // { - // l.body.SetTransform(l.body.Position - amount, l.body.Rotation); - // } - //} - } - public static Body PickBody(Vector2 rayStart, Vector2 rayEnd, List ignoredBodies = null) { float closestFraction = 1.0f; @@ -220,8 +314,7 @@ namespace Subsurface lastPickedFraction = closestFraction; return closestBody; } - - + public static Body CheckVisibility(Vector2 rayStart, Vector2 rayEnd) { Body closestBody = null; @@ -286,7 +379,134 @@ namespace Subsurface return true; } + + //movement ---------------------------------------------------- + float collisionRigidness = 1.0f; + + public void Update(float deltaTime) + { + Translate(ConvertUnits.ToDisplayUnits(hullBody.Position) * collisionRigidness + speed * deltaTime); + + + CalculateBuoyancy(); + + float dragCoefficient = 0.00001f; + + float speedLength = speed.Length(); + float drag = speedLength * speedLength * dragCoefficient * mass; + System.Diagnostics.Debug.WriteLine("speed: "+speed); + if (speed!=Vector2.Zero) + { + ApplyForce(-Vector2.Normalize(speed)*drag); + } + //hullBodies[0].body.LinearVelocity = -hullBodies[0].body.Position; + + + + hullBody.SetTransform(Vector2.Zero , 0.0f); + + if (collidingCell == null) + { + collisionRigidness = MathHelper.Lerp(collisionRigidness, 1.0f, 0.1f); + return; + } + + foreach (GraphEdge ge in collidingCell.edges) + { + Body body = PickBody( + ConvertUnits.ToSimUnits(ge.point1+ Game1.GameSession.Level.position), + ConvertUnits.ToSimUnits(ge.point2 + Game1.GameSession.Level.position), new List(){collidingCell.body}); + if (body == null || body.UserData == null) continue; + + Structure structure = body.UserData as Structure; + if (structure == null) continue; + structure.AddDamage(lastPickedPosition, DamageType.Blunt, 50.0f, 0.0f, 0.0f, true); + } + + //hullBodies[0].body.SetTransform(Vector2.Zero, 0.0f); + + //position = hullBodies[0].body.Position; + + //Level.Loaded.Move(-ConvertUnits.ToDisplayUnits(position - prevPosition)); + + //prevPosition = hullBodies[0].body.Position; + + } + + private void CalculateBuoyancy() + { + float waterVolume = 0.0f; + float volume = 0.0f; + foreach (Hull hull in Hull.hullList) + { + waterVolume += hull.Volume; + volume += hull.FullVolume; + } + + float waterPercentage = waterVolume / volume; + + float neutralPercentage = 0.1f; + + float buoyancy = neutralPercentage-waterPercentage; + buoyancy *= mass * 10.0f; + + ApplyForce(new Vector2(0.0f, buoyancy)); + } + + public void SetPosition(Vector2 position) + { + //hullBodies[0].body.SetTransform(position, 0.0f); + Translate(position); + //prevPosition = position; + } + + private void Translate(Vector2 amount) + { + if (amount == Vector2.Zero) return; + + Level.Loaded.Move(-amount); + } + + float mass = 10000.0f; + public void ApplyForce(Vector2 force) + { + speed += force/mass; + } + + //public void Move(Vector2 amount) + //{ + // speed = Vector2.Lerp(speed, amount, 0.05f); + //} + + VoronoiCell collidingCell; + public bool OnCollision(Fixture f1, Fixture f2, Contact contact) + { + System.Diagnostics.Debug.WriteLine("colliding"); + VoronoiCell cell = f2.Body.UserData as VoronoiCell; + if (cell==null) return true; + + Vector2 normal = contact.Manifold.LocalNormal; + float impact = Vector2.Dot(ConvertUnits.ToSimUnits(speed), normal); + + System.Diagnostics.Debug.WriteLine("IMPACT:"+impact); + if (impact < 5.0f) return true; + + + collisionRigidness = 0.8f; + + collidingCell = cell; + + return true; + } + + public void OnSeparation(Fixture f1, Fixture f2) + { + collidingCell = null; + } + + + //saving/loading ---------------------------------------------------- public void Save() { @@ -375,38 +595,6 @@ namespace Subsurface } } - public Submarine(string filePath, string hash="") - { - this.filePath = filePath; - try - { - name = Path.GetFileNameWithoutExtension(filePath); - } - catch (Exception e) - { - DebugConsole.ThrowError("Error loading map " + filePath + "!", e); - } - - - if (hash != "") - { - this.hash = new Md5Hash(hash); - } - else - { - //XDocument doc = OpenDoc(filePath); - - //string md5Hash = ToolBox.GetAttributeString(doc.Root, "md5hash", ""); - //if (md5Hash == "" || md5Hash.Length < 16) - //{ - // DebugConsole.ThrowError("Couldn't find a valid MD5 hash in the map file"); - //} - - //this.mapHash = new MapHash(md5Hash); - } - - } - private XDocument OpenDoc(string file) { XDocument doc = null; @@ -414,7 +602,7 @@ namespace Subsurface try { - extension = Path.GetExtension(file); + extension = System.IO.Path.GetExtension(file); } catch { @@ -469,6 +657,7 @@ namespace Subsurface public void Load() { + Unload(); //string file = filePath; XDocument doc = OpenDoc(filePath); @@ -507,16 +696,50 @@ namespace Subsurface } - borders = new Rectangle(0, 0, 1, 1); - foreach (Hull hull in Hull.hullList) + List convexHull = GenerateConvexHull(); + for (int i = 0; i < convexHull.Count; i++) { - if (hull.Rect.X < borders.X || borders.X == 0) borders.X = hull.Rect.X; - if (hull.Rect.Y > borders.Y || borders.Y == 0) borders.Y = hull.Rect.Y; - - if (hull.Rect.X + hull.Rect.Width > borders.X + borders.Width) borders.Width = hull.Rect.X + hull.Rect.Width - borders.X; - if (hull.Rect.Y - hull.Rect.Height < borders.Y - borders.Height) borders.Height = borders.Y - (hull.Rect.Y - hull.Rect.Height); + convexHull[i] = ConvertUnits.ToSimUnits(convexHull[i]); } + convexHull.Reverse(); + + //get farseer 'vertices' from vectors + Vertices _shapevertices = new Vertices(convexHull); + + AABB hullAABB = _shapevertices.GetAABB(); + + borders = new Rectangle( + (int)ConvertUnits.ToDisplayUnits(hullAABB.LowerBound.X), + (int)ConvertUnits.ToDisplayUnits(hullAABB.UpperBound.Y), + (int)ConvertUnits.ToDisplayUnits(hullAABB.Extents.X * 2.0f), + (int)ConvertUnits.ToDisplayUnits(hullAABB.Extents.Y * 2.0f)); + + + var triangulatedVertices = Triangulate.ConvexPartition(_shapevertices, TriangulationAlgorithm.Bayazit); + + Body hullBody = BodyFactory.CreateCompoundPolygon(Game1.world, triangulatedVertices, 5.0f); + hullBody.BodyType = BodyType.Dynamic; + + hullBody.CollisionCategories = Physics.CollisionMisc; + hullBody.CollidesWith = Physics.CollisionLevel; + hullBody.FixedRotation = true; + hullBody.Awake = true; + hullBody.SleepingAllowed = false; + hullBody.GravityScale = 0.0f; + hullBody.OnCollision += OnCollision; + hullBody.OnSeparation += OnSeparation; + //body.IsSensor = true; + + //body.SetTransform(); + + //HullBody hullBody = new HullBody(); + //hullBody.body = body; + ////hullBody.shapeTexture = GUI.CreateRectangle(borders.Width, borders.Height); + + //hullBodies = new List(); + //hullBodies.Add(hullBody); + MapEntity.LinkAll(); foreach (Item item in Item.itemList) { @@ -554,11 +777,17 @@ namespace Subsurface Entity.RemoveAll(); PhysicsBody.list.Clear(); - + Ragdoll.list.Clear(); Game1.world.Clear(); } } + + //class HullBody + //{ + // public Body body; + // //public Texture2D shapeTexture; + //} } diff --git a/Subsurface/Map/VoronoiElements.cs b/Subsurface/Map/VoronoiElements.cs index 7b5aa49a6..e850c4053 100644 --- a/Subsurface/Map/VoronoiElements.cs +++ b/Subsurface/Map/VoronoiElements.cs @@ -121,7 +121,7 @@ namespace Voronoi2 public List edges; public Site site; - public List bodies; + public Body body; public Vector2 Center { @@ -132,7 +132,7 @@ namespace Voronoi2 { edges = new List(); - bodies = new List(); + //bodies = new List(); this.site = site; } } diff --git a/Subsurface/MathUtils.cs b/Subsurface/MathUtils.cs new file mode 100644 index 000000000..85d84ab1c --- /dev/null +++ b/Subsurface/MathUtils.cs @@ -0,0 +1,187 @@ +using Microsoft.Xna.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Subsurface +{ + static class MathUtils + { + public static Vector2 SmoothStep(Vector2 v1, Vector2 v2, float amount) + { + return new Vector2( + MathHelper.SmoothStep(v1.X, v2.X, amount), + MathHelper.SmoothStep(v1.Y, v2.Y, amount)); + } + + public static float Round(float value, float div) + { + return (float)Math.Floor(value / div) * div; + } + + public static float RandomFloat(int minimum, int maximum) + { + return RandomFloat((float)minimum, (float)maximum); + } + + public static float RandomFloat(float minimum, float maximum) + { + return (float)Game1.random.NextDouble() * (maximum - minimum) + minimum; + } + + public static int RandomInt(int minimum, int maximum) + { + return Game1.random.Next(maximum - minimum) + minimum; + } + + public static float RandomFloatLocal(float minimum, float maximum) + { + return (float)Game1.localRandom.NextDouble() * (maximum - minimum) + minimum; + } + + public static int RandomIntLocal(int minimum, int maximum) + { + return Game1.localRandom.Next(maximum - minimum) + minimum; + } + + public static float VectorToAngle(Vector2 vector) + { + return (float)Math.Atan2(vector.Y, vector.X); + } + + public static float CurveAngle(float from, float to, float step) + { + // Ensure that 0 <= angle < 2pi for both "from" and "to" + while (from < 0) + from += MathHelper.TwoPi; + while (from >= MathHelper.TwoPi) + from -= MathHelper.TwoPi; + + while (to < 0) + to += MathHelper.TwoPi; + while (to >= MathHelper.TwoPi) + to -= MathHelper.TwoPi; + + if (Math.Abs(from - to) < MathHelper.Pi) + { + // The simple case - a straight lerp will do. + return MathHelper.Lerp(from, to, step); + } + + // If we get here we have the more complex case. + // First, increment the lesser value to be greater. + if (from < to) + from += MathHelper.TwoPi; + else + to += MathHelper.TwoPi; + + float retVal = MathHelper.Lerp(from, to, step); + + // Now ensure the return value is between 0 and 2pi + if (retVal >= MathHelper.TwoPi) + retVal -= MathHelper.TwoPi; + return retVal; + } + + public static float WrapAngleTwoPi(float angle) + { + // Ensure that 0 <= angle < 2pi for both "from" and "to" + while (angle < 0) + angle += MathHelper.TwoPi; + while (angle >= MathHelper.TwoPi) + angle -= MathHelper.TwoPi; + + return angle; + } + + public static float WrapAnglePi(float angle) + { + // Ensure that -pi <= angle < pi for both "from" and "to" + while (angle < -MathHelper.Pi) + angle += MathHelper.TwoPi; + while (angle >= MathHelper.Pi) + angle -= MathHelper.TwoPi; + + return angle; + } + + public static float GetShortestAngle(float from, float to) + { + // Ensure that 0 <= angle < 2pi for both "from" and "to" + from = WrapAngleTwoPi(from); + to = WrapAngleTwoPi(to); + + if (Math.Abs(from - to) < MathHelper.Pi) + { + return to - from; + } + + // If we get here we have the more complex case. + // First, increment the lesser value to be greater. + if (from < to) + from += MathHelper.TwoPi; + else + to += MathHelper.TwoPi; + + return to - from; + } + + /// + /// solves the angle opposite to side a (parameters: lengths of each side) + /// + public static float SolveTriangleSSS(float a, float b, float c) + { + float A = (float)Math.Acos((b * b + c * c - a * a) / (2 * b * c)); + + if (float.IsNaN(A)) A = 1.0f; + + return A; + } + + public static byte AngleToByte(float angle) + { + angle = WrapAngleTwoPi(angle); + angle = angle * (255.0f / MathHelper.TwoPi); + return Convert.ToByte(angle); + } + + public static float ByteToAngle(byte b) + { + float angle = (float)b; + angle = angle * (MathHelper.TwoPi / 255.0f); + return angle; + } + } + + class CompareCCW : IComparer + { + private Vector2 center; + + public CompareCCW(Vector2 center) + { + this.center = center; + } + public int Compare(Vector2 a, Vector2 b) + { + if (a.X - center.X >= 0 && b.X - center.X < 0) return -1; + if (a.X - center.X < 0 && b.X - center.X >= 0) return 1; + if (a.X - center.X == 0 && b.X - center.X == 0) + { + if (a.Y - center.Y >= 0 || b.Y - center.Y >= 0) return Math.Sign(b.Y - a.Y); + return Math.Sign(a.Y - b.Y); + } + + // compute the cross product of vectors (center -> a) x (center -> b) + float det = (a.X - center.X) * (b.Y - center.Y) - (b.X - center.X) * (a.Y - center.Y); + if (det < 0) return -1; + if (det > 0) return 1; + + // points a and b are on the same line from the center + // check which point is closer to the center + float d1 = (a.X - center.X) * (a.X - center.X) + (a.Y - center.Y) * (a.Y - center.Y); + float d2 = (b.X - center.X) * (b.X - center.X) + (b.Y - center.Y) * (b.Y - center.Y); + return Math.Sign(d2 - d1); + } + } +} diff --git a/Subsurface/Networking/GameClient.cs b/Subsurface/Networking/GameClient.cs index 4ec335a25..0e328bb25 100644 --- a/Subsurface/Networking/GameClient.cs +++ b/Subsurface/Networking/GameClient.cs @@ -327,7 +327,7 @@ namespace Subsurface.Networking Game1.NetLobbyScreen.Select(); - if (Game1.GameSession!=null) Game1.GameSession.EndShift(null, null); + if (Game1.GameSession!=null) Game1.GameSession.EndShift(""); DebugConsole.ThrowError(endMessage); diff --git a/Subsurface/Particles/Particle.cs b/Subsurface/Particles/Particle.cs index 17fea5eb3..2eca53f32 100644 --- a/Subsurface/Particles/Particle.cs +++ b/Subsurface/Particles/Particle.cs @@ -66,7 +66,7 @@ namespace Subsurface.Particles velocity = speed; - this.rotation = rotation + ToolBox.RandomFloatLocal(prefab.startRotationMin, prefab.startRotationMax); + this.rotation = rotation + MathUtils.RandomFloatLocal(prefab.startRotationMin, prefab.startRotationMax); prevRotation = rotation; float rand = (float)Game1.localRandom.NextDouble(); @@ -96,7 +96,7 @@ namespace Subsurface.Particles if (prefab.rotateToDirection) { - rotation = ToolBox.VectorToAngle(velocity); + rotation = MathUtils.VectorToAngle(velocity); } else { diff --git a/Subsurface/Physics/Physics.cs b/Subsurface/Physics/Physics.cs index b2d220450..472f80e5f 100644 --- a/Subsurface/Physics/Physics.cs +++ b/Subsurface/Physics/Physics.cs @@ -8,21 +8,19 @@ namespace Subsurface { private static double alpha; - public const Category CollisionNone = Category.None; - public const Category CollisionAll = Category.All; - public const Category CollisionWall = Category.Cat1; - public const Category CollisionCharacter = Category.Cat2; - public const Category CollisionPlatform = Category.Cat3; - public const Category CollisionStairs = Category.Cat4; - public const Category CollisionMisc = Category.Cat5; - public const Category CollisionProjectile = Category.Cat6; + public const Category CollisionNone = Category.None; + public const Category CollisionAll = Category.All; + public const Category CollisionWall = Category.Cat1; + public const Category CollisionCharacter = Category.Cat2; + public const Category CollisionPlatform = Category.Cat3; + public const Category CollisionStairs = Category.Cat4; + public const Category CollisionMisc = Category.Cat5; + public const Category CollisionProjectile = Category.Cat6; + public const Category CollisionLevel = Category.Cat7; public static double accumulator; public static double step = 1.0f/60.0f; - public static bool updated; - - public const float DisplayToSimRation = 100.0f; public static double Alpha diff --git a/Subsurface/Physics/PhysicsBody.cs b/Subsurface/Physics/PhysicsBody.cs index 02513d8dd..fbbb6b60e 100644 --- a/Subsurface/Physics/PhysicsBody.cs +++ b/Subsurface/Physics/PhysicsBody.cs @@ -297,7 +297,7 @@ namespace Subsurface { float nextAngle = body.Rotation + body.AngularVelocity * (float)Physics.step; - float angle = ToolBox.GetShortestAngle(nextAngle, targetRotation); + float angle = MathUtils.GetShortestAngle(nextAngle, targetRotation); float torque = body.Mass * angle * 60.0f * (force/100.0f); diff --git a/Subsurface/Screens/GameScreen.cs b/Subsurface/Screens/GameScreen.cs index 51b09b751..ccb62723a 100644 --- a/Subsurface/Screens/GameScreen.cs +++ b/Subsurface/Screens/GameScreen.cs @@ -57,7 +57,7 @@ namespace Subsurface AmbientSoundManager.Update(); - if (Game1.GameSession.Level!=null) + if (Game1.GameSession!=null && Game1.GameSession.Level != null) { Vector2 targetMovement = Vector2.Zero; if (PlayerInput.KeyDown(Keys.I)) targetMovement.Y += 1.0f; @@ -65,7 +65,7 @@ namespace Subsurface if (PlayerInput.KeyDown(Keys.J)) targetMovement.X -= 1.0f; if (PlayerInput.KeyDown(Keys.L)) targetMovement.X += 1.0f; - Game1.GameSession.Submarine.Move(targetMovement*1000.0f, (float)deltaTime); + Game1.GameSession.Submarine.ApplyForce(targetMovement*100000.0f); } if (Game1.GameSession!=null) Game1.GameSession.Update((float)deltaTime); @@ -94,6 +94,8 @@ namespace Subsurface Ragdoll.UpdateAll((float)Physics.step); + if (Game1.GameSession != null && Game1.GameSession.Level != null) Game1.GameSession.Submarine.Update((float)Physics.step); + Game1.world.Step((float)Physics.step); Physics.accumulator -= Physics.step; @@ -256,6 +258,12 @@ namespace Subsurface cam.Transform); Submarine.DrawFront(spriteBatch); + + if (Game1.GameSession != null && Game1.GameSession.Level != null) + { + Game1.GameSession.Level.RenderLines(spriteBatch); + //Game1.GameSession.Level.SetObserverPosition(cam.WorldViewCenter); + } spriteBatch.End(); diff --git a/Subsurface/Subsurface.csproj b/Subsurface/Subsurface.csproj index 34f6dd413..c66b513c0 100644 --- a/Subsurface/Subsurface.csproj +++ b/Subsurface/Subsurface.csproj @@ -80,6 +80,7 @@ + @@ -88,6 +89,7 @@ + @@ -132,6 +134,7 @@ + @@ -191,10 +194,6 @@ - - False - .\FarseerPhysics MonoGame.dll - False .\Lidgren.Network.dll @@ -309,6 +308,15 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + PreserveNewest @@ -701,6 +709,10 @@ + + {0aad36e3-51a5-4a07-ab60-5c8a66bd38b7} + Farseer Physics MonoGame + {1e6bf44d-6e31-40cc-8321-3d5958c983e7} Subsurface_content diff --git a/Subsurface/ToolBox.cs b/Subsurface/ToolBox.cs index e2d183aa4..b7a3e93d9 100644 --- a/Subsurface/ToolBox.cs +++ b/Subsurface/ToolBox.cs @@ -11,178 +11,6 @@ namespace Subsurface { static class ToolBox { - public static Vector2 SmoothStep(Vector2 v1, Vector2 v2, float amount) - { - return new Vector2( - MathHelper.SmoothStep(v1.X, v2.X, amount), - MathHelper.SmoothStep(v1.Y, v2.Y, amount)); - } - - public static float Round(float value, float div) - { - return (float)Math.Floor(value / div) * div; - } - - public static float RandomFloat(float minimum, float maximum) - { - return (float)Game1.random.NextDouble() * (maximum - minimum) + minimum; - } - - public static int RandomInt(int minimum, int maximum) - { - return Game1.random.Next(maximum - minimum) + minimum; - } - - public static float RandomFloatLocal(float minimum, float maximum) - { - return (float)Game1.localRandom.NextDouble() * (maximum - minimum) + minimum; - } - - public static int RandomIntLocal(int minimum, int maximum) - { - return Game1.localRandom.Next(maximum - minimum) + minimum; - } - - public static float VectorToAngle(Vector2 vector) - { - return (float)Math.Atan2(vector.Y, vector.X); - } - - public static float CurveAngle(float from, float to, float step) - { - // Ensure that 0 <= angle < 2pi for both "from" and "to" - while (from < 0) - from += MathHelper.TwoPi; - while (from >= MathHelper.TwoPi) - from -= MathHelper.TwoPi; - - while (to < 0) - to += MathHelper.TwoPi; - while (to >= MathHelper.TwoPi) - to -= MathHelper.TwoPi; - - if (Math.Abs(from - to) < MathHelper.Pi) - { - // The simple case - a straight lerp will do. - return MathHelper.Lerp(from, to, step); - } - - // If we get here we have the more complex case. - // First, increment the lesser value to be greater. - if (from < to) - from += MathHelper.TwoPi; - else - to += MathHelper.TwoPi; - - float retVal = MathHelper.Lerp(from, to, step); - - // Now ensure the return value is between 0 and 2pi - if (retVal >= MathHelper.TwoPi) - retVal -= MathHelper.TwoPi; - return retVal; - } - - public static float WrapAngleTwoPi(float angle) - { - // Ensure that 0 <= angle < 2pi for both "from" and "to" - while (angle < 0) - angle += MathHelper.TwoPi; - while (angle >= MathHelper.TwoPi) - angle -= MathHelper.TwoPi; - - return angle; - } - - public static float WrapAnglePi(float angle) - { - // Ensure that -pi <= angle < pi for both "from" and "to" - while (angle < -MathHelper.Pi) - angle += MathHelper.TwoPi; - while (angle >= MathHelper.Pi) - angle -= MathHelper.TwoPi; - - return angle; - } - - public static float GetShortestAngle(float from, float to) - { - // Ensure that 0 <= angle < 2pi for both "from" and "to" - from = WrapAngleTwoPi(from); - to = WrapAngleTwoPi(to); - - if (Math.Abs(from - to) < MathHelper.Pi) - { - return to - from; - } - - // If we get here we have the more complex case. - // First, increment the lesser value to be greater. - if (from < to) - from += MathHelper.TwoPi; - else - to += MathHelper.TwoPi; - - return to - from; - } - - /// - /// solves the angle opposite to side a (parameters: lengths of each side) - /// - public static float SolveTriangleSSS(float a, float b, float c) - { - float A = (float)Math.Acos((b*b + c*c - a*a) / (2*b*c)); - - if (float.IsNaN(A)) A = 1.0f; - - return A; - } - - - //public static void CompressStringToFile(string fileName, string value) - //{ - // // A. - // // Write string to temporary file. - // string temp = Path.GetTempFileName(); - // File.WriteAllText(temp, value); - - // // B. - // // Read file into byte array buffer. - // byte[] b; - // using (FileStream f = new FileStream(temp, FileMode.Open)) - // { - // b = new byte[f.Length]; - // f.Read(b, 0, (int)f.Length); - // } - - // // C. - // // Use GZipStream to write compressed bytes to target file. - // using (FileStream f2 = new FileStream(fileName, FileMode.Create)) - // using (GZipStream gz = new GZipStream(f2, CompressionMode.Compress, false)) - // { - // gz.Write(b, 0, b.Length); - // } - //} - - //public static Stream DecompressFiletoStream(string fileName) - //{ - // if (!File.Exists(fileName)) - // { - // DebugConsole.ThrowError("File ''"+fileName+" doesn't exist!"); - // return null; - // } - - // using (FileStream originalFileStream = new FileStream(fileName, FileMode.Open)) - // { - // MemoryStream decompressedFileStream = new MemoryStream(); - - // using (GZipStream decompressionStream = new GZipStream(originalFileStream, CompressionMode.Decompress)) - // { - // decompressionStream.CopyTo(decompressedFileStream); - // return decompressedFileStream; - // } - // } - //} - public static XDocument TryLoadXml(string filePath) { XDocument doc; @@ -352,7 +180,7 @@ namespace Subsurface return ParseToVector4(val); } - public static Vector2 ParseToVector2(string stringVector2) + public static Vector2 ParseToVector2(string stringVector2, bool errorMessages = true) { string[] components = stringVector2.Split(','); @@ -360,6 +188,7 @@ namespace Subsurface if (components.Length!=2) { + if (!errorMessages) return vector; DebugConsole.ThrowError("Failed to parse the string "+stringVector2+" to Vector2"); return vector; } @@ -375,8 +204,6 @@ namespace Subsurface return vector.X.ToString("G", CultureInfo.InvariantCulture) + "," + vector.Y.ToString("G", CultureInfo.InvariantCulture); } - - public static Vector4 ParseToVector4(string stringVector4) { string[] components = stringVector4.Split(','); @@ -489,22 +316,5 @@ namespace Subsurface return ""; } } - - - - public static byte AngleToByte(float angle) - { - angle = WrapAngleTwoPi(angle); - angle = angle * (255.0f / MathHelper.TwoPi); - return Convert.ToByte(angle); - } - - public static float ByteToAngle(byte b) - { - float angle = (float)b; - angle = angle * (MathHelper.TwoPi / 255.0f); - return angle; - } - } } diff --git a/Subsurface_Solution.sln b/Subsurface_Solution.sln index a9464db71..71e54b9b9 100644 --- a/Subsurface_Solution.sln +++ b/Subsurface_Solution.sln @@ -14,6 +14,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Performance1.psess = Performance1.psess EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Farseer Physics MonoGame", "..\Lataukset\Selain-lataukset\Farseer Physics Engine 3.5\Farseer Physics Engine 3.5\Farseer Physics MonoGame.csproj", "{0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Android|Any CPU = Android|Any CPU @@ -162,6 +164,51 @@ Global {1E6BF44D-6E31-40CC-8321-3D5958C983E7}.Windows8|Mixed Platforms.ActiveCfg = Windows8|Any CPU {1E6BF44D-6E31-40CC-8321-3D5958C983E7}.Windows8|Mixed Platforms.Build.0 = Windows8|Any CPU {1E6BF44D-6E31-40CC-8321-3D5958C983E7}.Windows8|x86.ActiveCfg = Windows8|Any CPU + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Android|Any CPU.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Android|Mixed Platforms.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Android|Mixed Platforms.Build.0 = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Android|x86.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Android|x86.Build.0 = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Debug|Any CPU.ActiveCfg = Debug|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Debug|x86.ActiveCfg = Debug|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Debug|x86.Build.0 = Debug|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.iOS|Any CPU.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.iOS|Mixed Platforms.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.iOS|Mixed Platforms.Build.0 = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.iOS|x86.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.iOS|x86.Build.0 = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Linux|Any CPU.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Linux|Mixed Platforms.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Linux|Mixed Platforms.Build.0 = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Linux|x86.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Linux|x86.Build.0 = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.OSX|Any CPU.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.OSX|Mixed Platforms.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.OSX|Mixed Platforms.Build.0 = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.OSX|x86.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.OSX|x86.Build.0 = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.PSM|Any CPU.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.PSM|Mixed Platforms.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.PSM|Mixed Platforms.Build.0 = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.PSM|x86.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.PSM|x86.Build.0 = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Release|Any CPU.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Release|Mixed Platforms.Build.0 = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Release|x86.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Release|x86.Build.0 = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Windows|Any CPU.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Windows|Mixed Platforms.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Windows|Mixed Platforms.Build.0 = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Windows|x86.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Windows|x86.Build.0 = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Windows8|Any CPU.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Windows8|Mixed Platforms.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Windows8|Mixed Platforms.Build.0 = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Windows8|x86.ActiveCfg = Release|x86 + {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Windows8|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Subsurface_Solution.v12.suo b/Subsurface_Solution.v12.suo index ccbf38e728604c587abbad881141ddad11c3e2f7..fb34813705aa0d928a92cd62fff19188e0b4afc4 100644 GIT binary patch delta 50555 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