public void MoveCats() { List <Sprite> Baddies = Sprites.Where(x => x.Ai != null).ToList(); foreach (Sprite baddie in Baddies) { Direction directionToMoveBaddie = baddie.Ai.Move(baddie.X, baddie.Y); switch (directionToMoveBaddie) { case Direction.left: UpdateX_Event?.Invoke(this, new UpdateX_EventArgs(baddie, -1)); break; case Direction.right: UpdateX_Event?.Invoke(this, new UpdateX_EventArgs(baddie, 1)); break; case Direction.up: UpdateY_Event?.Invoke(this, new UpdateY_EventArgs(baddie, -1)); break; case Direction.down: UpdateY_Event?.Invoke(this, new UpdateY_EventArgs(baddie, 1)); break; case Direction.none: //cat died int _x = baddie.X; int _y = baddie.Y; RemoveSprite_Event?.Invoke(this, new RemoveSprite_EventArgs(baddie)); AddNewSprite_Event?.Invoke(this, new AddNewSprite_EventArgs(new Sprite() { X = _x, Y = _y })); break; } } }
public void MoveCats() { List <Sprite> Baddies = Sprites.Where(x => x.Ai != null).ToList(); foreach (Sprite baddie in Baddies) { Direction directionToMoveBaddie = baddie.Ai.Move(baddie.X, baddie.Y); switch (directionToMoveBaddie) { case Direction.left: UpdateX_Event?.Invoke(this, new UpdateX_EventArgs(baddie, -1)); if (KilledMouse(baddie)) { LoseLife_Event?.Invoke(this, new EventArgs()); } break; case Direction.right: UpdateX_Event?.Invoke(this, new UpdateX_EventArgs(baddie, 1)); if (KilledMouse(baddie)) { LoseLife_Event?.Invoke(this, new EventArgs()); } break; case Direction.up: UpdateY_Event?.Invoke(this, new UpdateY_EventArgs(baddie, -1)); if (KilledMouse(baddie)) { LoseLife_Event?.Invoke(this, new EventArgs()); } break; case Direction.down: UpdateY_Event?.Invoke(this, new UpdateY_EventArgs(baddie, 1)); if (KilledMouse(baddie)) { LoseLife_Event?.Invoke(this, new EventArgs()); } break; case Direction.none: //cat died if (baddie.Lives > 0) { baddie.Lives--; } if (!Baddies.Where(a => a.Lives > 0).ToList().Any()) { int _x = baddie.X; int _y = baddie.Y; RemoveSprite_Event?.Invoke(this, new RemoveSprite_EventArgs(baddie)); AddNewSprite_Event?.Invoke(this, new AddNewSprite_EventArgs(new Sprite() { X = _x, Y = _y })); } else { ChangeSprite_Event?.Invoke(this, new ChangeSprite_EventArgs(baddie)); } break; } } }
public bool MoveSprites(Direction direction) { bool canMove = false; if (CollisionDetection(characterSprite.X, characterSprite.Y, direction)) { List <Sprite> Sprites = GetAllSpritesInPath(characterSprite.X, characterSprite.Y, direction); switch (direction) { case Direction.down: if (CanMoveSprites(Sprites, Direction.down)) { canMove = true; } break; case Direction.up: if (CanMoveSprites(Sprites, Direction.up)) { canMove = true; } break; case Direction.left: if (CanMoveSprites(Sprites, Direction.left)) { canMove = true; } break; case Direction.right: if (CanMoveSprites(Sprites, Direction.right)) { canMove = true; } break; } if (canMove) { foreach (Sprite sprite in Sprites) { switch (direction) { case Direction.down: UpdateY_Event?.Invoke(this, new UpdateY_EventArgs(sprite, 1)); break; case Direction.up: UpdateY_Event?.Invoke(this, new UpdateY_EventArgs(sprite, -1)); break; case Direction.left: UpdateX_Event?.Invoke(this, new UpdateX_EventArgs(sprite, -1)); break; case Direction.right: UpdateX_Event?.Invoke(this, new UpdateX_EventArgs(sprite, 1)); break; } } } } else { canMove = true; } return(canMove); }