/// <summary> /// /// </summary> /// <param name="gameTime"></param> /// <returns>true if completely done moving (no more queued up moves either)</returns> private bool checkIfDoneMoving(GameTime gameTime) { long startTimeForNextMove = gameTime.TotalMsLong(); if (moving && gameTime.TotalMsLong() - begunMovingAt >= totalTimeMsToFinishCurrentMove) { this.ParentMap().WorldMatrix.endMoveModel(this, Position + moveOffset); moving = false; startTimeForNextMove = begunMovingAt + totalTimeMsToFinishCurrentMove; } if (!moving && PathCheckpoints != null && PathCheckpoints.Count > 0) { MoveOffsetIfNotAlreadyMoving(PathCheckpoints.First.Value, startTimeForNextMove); PathCheckpoints.RemoveFirst(); return false; } else { return true; } }
public void Update(GameTime gameTime) { long startTime = gameTime.TotalMsLong(); if (Engine.Input.Keyboard.IsKeyDown(Keys.D8)) MoveOffsetIfNotAlreadyMoving(Position.N, startTime); else if (Engine.Input.Keyboard.IsKeyDown(Keys.D9)) MoveOffsetIfNotAlreadyMoving(Position.NE, startTime); else if (Engine.Input.Keyboard.IsKeyDown(Keys.O)) MoveOffsetIfNotAlreadyMoving(Position.E, startTime); else if (Engine.Input.Keyboard.IsKeyDown(Keys.L)) MoveOffsetIfNotAlreadyMoving(Position.SE, startTime); else if (Engine.Input.Keyboard.IsKeyDown(Keys.K)) MoveOffsetIfNotAlreadyMoving(Position.S, startTime); else if (Engine.Input.Keyboard.IsKeyDown(Keys.J)) MoveOffsetIfNotAlreadyMoving(Position.SW, startTime); else if (Engine.Input.Keyboard.IsKeyDown(Keys.U)) MoveOffsetIfNotAlreadyMoving(Position.W, startTime); else if (Engine.Input.Keyboard.IsKeyDown(Keys.D7)) MoveOffsetIfNotAlreadyMoving(Position.NW, startTime); else if (Engine.Input.Keyboard.IsKeyDown(Keys.F)) MoveOffsetIfNotAlreadyMoving(Position.W * 3, startTime); checkIfDoneMoving(gameTime); }