private bool MoveSouth(LinkedList<Entity> e, CollisionMap c) { // Move south. DeltaY += Velocity; //Check for any interactions. if (Interactions(e, Direction.S)) return true; //Move if we have the velocity to. while (DeltaY >= DeltaScale) { for (int i = 0; i != Size; i++) { if (c.Collide(X + i, Y + Size)) { DeltaY = DeltaScale - 1; return false; } } DeltaY = DeltaY - DeltaScale; Y++; if (Interactions(e, Direction.S)) { DeltaY = DeltaScale / 2; DeltaX = DeltaScale / 2; return true; } } return false; }
private bool MoveWest(LinkedList<Entity> e, CollisionMap c) { // Move south. DeltaX -= Velocity; //Check for any interactions. if (Interactions(e, Direction.W)) return true; //Move if we have the velocity to. while (DeltaX < 0) { for (int i = 0; i != Size; i++) { if (c.Collide(X - 1, Y + i)) { DeltaX = 0; return false; } } DeltaX = DeltaX + DeltaScale; X--; //halt movement. if (Interactions(e, Direction.W)) { DeltaY = DeltaScale / 2; DeltaX = DeltaScale / 2; return true; } } return false; }
private bool MoveNorth(LinkedList<Entity> e, CollisionMap c) { // Move. DeltaY -= Velocity; //Check for any interactions. if (Interactions(e,Direction.N)) return true; //Move if we have the velocity to. while (DeltaY < 0) { for (int i = 0; i != Size; i++) { if (c.Collide(X + i, Y - 1)) { DeltaY = 0; return false; } } DeltaY = DeltaY + DeltaScale; Y--; if (Interactions(e, Direction.N)) { DeltaY = DeltaScale / 2; DeltaX = DeltaScale / 2; return true; } } return false; }