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; } } }