diff --git a/DepthsBelow/DepthsBelow/Soldier.cs b/DepthsBelow/DepthsBelow/Soldier.cs index 38f1b32..8f0eb7a 100755 --- a/DepthsBelow/DepthsBelow/Soldier.cs +++ b/DepthsBelow/DepthsBelow/Soldier.cs @@ -1,202 +1,202 @@ -using System; -using System.Collections.Generic; -using DepthsBelow.Component; -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Content; -using Microsoft.Xna.Framework.Graphics; -using Microsoft.Xna.Framework.Input; - -namespace DepthsBelow -{ - public class Soldier : Entity - { - public static Texture2D Texture; - public Color Color; - public string Name; - private bool _selected; - - public List Squad; - - private PathFinder.Node nextNode; - private PathFinder.Node lastNode; - private PathFinder.Node lastLastNode; - - private bool hasFiredAlready = false; - - int fireTimer = 0; - int timeSpentFired = 1000; - - public bool Fired - { - get { return hasFiredAlready; } - set - { - hasFiredAlready = value; - } - } - - public int MaxActionPoints = 10; - int actionPointsLeft = 0; - - public int AP - { - get { return actionPointsLeft; } - set - { - actionPointsLeft = value; - GetComponent().GetStep = actionPointsLeft; - } - } - - public Soldier(EntityManager entityManager, ref List squad) - : base(entityManager) - { - if (Texture == null) - LoadContent(); - - this.Squad = squad; - - Transform.World.Origin = new Vector2(16, 16); - - this.Color = Color.White; - var rc = new SpriteRenderer(this) {Texture = Texture, Color = Color.White}; - AddComponent(rc); - - var cc = new Collision(this, 32, 32); - AddComponent(cc); - - var pfc = new PathFinder(this); - AddComponent(pfc); - - var flashlight = new Flashlight(this) - { - Intensity = 0.8f - }; - AddComponent(flashlight); - - var stat = new Component.Stat(this) - { - MaxHP = 100, - MaxPanic = 100, - //Life = 10, - Defence = 10, - Strength = 50, - GetAim = 40, - GetDodge = 20 - }; - AddComponent(stat); - } - - public override void Remove() - { - Squad.Remove(this); - - base.Remove(); - } - - public bool Selected - { - get { return _selected; } - set - { - _selected = value; - GetComponent().Color = (value) ? Color.Blue : this.Color; - } - } - - public static void LoadContent() - { - Texture = GameServices.GetService().Load("images/soldier5"); - } - - public override void Update(GameTime gameTime) - { - base.Update(gameTime); - - float elapsed = gameTime.ElapsedGameTime.Milliseconds / 1000.0f; - - if (nextNode == null) - nextNode = GetComponent().Next(); - - if (nextNode != null) - { - List soldierCollisions = new List(); - - // Collision with units at a standstill - //foreach (var soldier in Squad) - //{ - // if (soldier != this) - // { - // if (!soldier.GetComponent().IsMoving) - // { - // soldierCollisions.Add(soldier.Transform.Grid); - // } - // if (soldier.Transform.Grid == nextNode.Position) - // { - // GetComponent().RecreatePath(soldierCollisions); - // nextNode = GetComponent().Next(); - // break; - // } - // } - - //} - - // Collision with moving units - //foreach (var soldier in Squad) - //{ - // if (soldier != this) - // { - // var pathFinder = soldier.GetComponent(); - // var position = nextNode.Position; - // if (soldier.Transform.Grid == position) - // { - // soldierCollisions.Add(soldier.Transform.Grid); - // GetComponent().RecreatePath(soldierCollisions); - // nextNode = GetComponent().Next(); - // break; - // } - // } - //} - - if (nextNode != null) - { - var nodeWorldPos = Grid.GridToWorld(nextNode.Position); - // HACK: Make this work properly with other speeds... - float speed = 4f; - if (Transform.World.X < nodeWorldPos.X) - Transform.World.X += speed; - if (Transform.World.X > nodeWorldPos.X) - Transform.World.X -= speed; - if (Transform.World.Y < nodeWorldPos.Y) - Transform.World.Y += speed; - if (Transform.World.Y > nodeWorldPos.Y) - Transform.World.Y -= speed; - - if (Transform.World == nodeWorldPos) - { - //if (AP < NumberOfActionPoints) - //{ - //AP++; - lastLastNode = lastNode; - lastNode = nextNode; - nextNode = GetComponent().Next(); - //} - /*else - { - GetComponent().Stop(); - }*/ - } - } - } - if (Fired == true) - { - fireTimer += gameTime.ElapsedGameTime.Milliseconds; - if (fireTimer > timeSpentFired) - { - fireTimer = 0; - Fired = false; - } - } - } - } +using System; +using System.Collections.Generic; +using DepthsBelow.Component; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; + +namespace DepthsBelow +{ + public class Soldier : Entity + { + public static Texture2D Texture; + public Color Color; + public string Name; + private bool _selected; + + public List Squad; + + private PathFinder.Node nextNode; + private PathFinder.Node lastNode; + private PathFinder.Node lastLastNode; + + private bool hasFiredAlready = false; + + int fireTimer = 0; + int timeSpentFired = 1000; + + public bool Fired + { + get { return hasFiredAlready; } + set + { + hasFiredAlready = value; + } + } + + public int MaxActionPoints = 10; + int actionPointsLeft = 10; + + public int AP + { + get { return actionPointsLeft; } + set + { + actionPointsLeft = value; + GetComponent().GetStep = actionPointsLeft; + } + } + + public Soldier(EntityManager entityManager, ref List squad) + : base(entityManager) + { + if (Texture == null) + LoadContent(); + + this.Squad = squad; + + Transform.World.Origin = new Vector2(16, 16); + + this.Color = Color.White; + var rc = new SpriteRenderer(this) {Texture = Texture, Color = Color.White}; + AddComponent(rc); + + var cc = new Collision(this, 32, 32); + AddComponent(cc); + + var pfc = new PathFinder(this); + AddComponent(pfc); + + var flashlight = new Flashlight(this) + { + Intensity = 0.8f + }; + AddComponent(flashlight); + + var stat = new Component.Stat(this) + { + MaxHP = 100, + MaxPanic = 100, + //Life = 10, + Defence = 10, + Strength = 50, + GetAim = 40, + GetDodge = 20 + }; + AddComponent(stat); + } + + public override void Remove() + { + Squad.Remove(this); + + base.Remove(); + } + + public bool Selected + { + get { return _selected; } + set + { + _selected = value; + GetComponent().Color = (value) ? Color.Blue : this.Color; + } + } + + public static void LoadContent() + { + Texture = GameServices.GetService().Load("images/soldier5"); + } + + public override void Update(GameTime gameTime) + { + base.Update(gameTime); + + float elapsed = gameTime.ElapsedGameTime.Milliseconds / 1000.0f; + + if (nextNode == null) + nextNode = GetComponent().Next(); + + if (nextNode != null) + { + List soldierCollisions = new List(); + + // Collision with units at a standstill + //foreach (var soldier in Squad) + //{ + // if (soldier != this) + // { + // if (!soldier.GetComponent().IsMoving) + // { + // soldierCollisions.Add(soldier.Transform.Grid); + // } + // if (soldier.Transform.Grid == nextNode.Position) + // { + // GetComponent().RecreatePath(soldierCollisions); + // nextNode = GetComponent().Next(); + // break; + // } + // } + + //} + + // Collision with moving units + //foreach (var soldier in Squad) + //{ + // if (soldier != this) + // { + // var pathFinder = soldier.GetComponent(); + // var position = nextNode.Position; + // if (soldier.Transform.Grid == position) + // { + // soldierCollisions.Add(soldier.Transform.Grid); + // GetComponent().RecreatePath(soldierCollisions); + // nextNode = GetComponent().Next(); + // break; + // } + // } + //} + + if (nextNode != null) + { + var nodeWorldPos = Grid.GridToWorld(nextNode.Position); + // HACK: Make this work properly with other speeds... + float speed = 4f; + if (Transform.World.X < nodeWorldPos.X) + Transform.World.X += speed; + if (Transform.World.X > nodeWorldPos.X) + Transform.World.X -= speed; + if (Transform.World.Y < nodeWorldPos.Y) + Transform.World.Y += speed; + if (Transform.World.Y > nodeWorldPos.Y) + Transform.World.Y -= speed; + + if (Transform.World == nodeWorldPos) + { + //if (AP < NumberOfActionPoints) + //{ + //AP++; + lastLastNode = lastNode; + lastNode = nextNode; + nextNode = GetComponent().Next(); + //} + /*else + { + GetComponent().Stop(); + }*/ + } + } + } + if (Fired == true) + { + fireTimer += gameTime.ElapsedGameTime.Milliseconds; + if (fireTimer > timeSpentFired) + { + fireTimer = 0; + Fired = false; + } + } + } + } } \ No newline at end of file