|
|
@ -10,7 +10,7 @@ namespace SemiColinGames { |
|
|
|
timeInState = 0; |
|
|
|
} |
|
|
|
|
|
|
|
public string? Update(NPC npc, float modelTime, AABB[] collisionTargets) { |
|
|
|
public string? Update(NPC npc, float modelTime, World world) { |
|
|
|
timeInState += modelTime; |
|
|
|
if (timeInState > 1.0f) { |
|
|
|
npc.Facing *= -1; |
|
|
@ -23,14 +23,14 @@ namespace SemiColinGames { |
|
|
|
class RunState : IState<NPC> { |
|
|
|
public void Enter() {} |
|
|
|
|
|
|
|
public string? Update(NPC npc, float modelTime, AABB[] collisionTargets) { |
|
|
|
public string? Update(NPC npc, float modelTime, World world) { |
|
|
|
int moveSpeed = 120; |
|
|
|
int desiredX = npc.Position.X + (int) (moveSpeed * npc.Facing * modelTime); |
|
|
|
// TODO: define the box modularly & correctly.
|
|
|
|
AABB npcBox = new AABB(new Vector2(desiredX, npc.Position.Y), new Vector2(1, 33)); |
|
|
|
Debug.AddRect(npcBox, Color.Cyan); |
|
|
|
bool foundBox = false; |
|
|
|
foreach (AABB box in collisionTargets) { |
|
|
|
foreach (AABB box in world.CollisionTargets) { |
|
|
|
if (box.Intersect(npcBox) != null) { |
|
|
|
foundBox = true; |
|
|
|
break; |
|
|
@ -63,8 +63,8 @@ namespace SemiColinGames { |
|
|
|
public int Facing = 1; |
|
|
|
public Point Position; |
|
|
|
|
|
|
|
public void Update(float modelTime, AABB[] collisionTargets) { |
|
|
|
fsm.Update(this, modelTime, collisionTargets); |
|
|
|
public void Update(float modelTime, World world) { |
|
|
|
fsm.Update(this, modelTime, world); |
|
|
|
} |
|
|
|
|
|
|
|
public void Draw(SpriteBatch spriteBatch) { |
|
|
|