public void ActInConflict(ICreature conflictedObject, IAliveCreature aliveConflictedObject, int mapWidth, int mapHeight) { if (conflictedObject is Box) { aliveConflictedObject.AddScore(10); } }
private void DrawAliveCreature(IAliveCreature creature, PaintEventArgs e) { foreach (var part in creature.GetBody()) { e.Graphics.FillRectangle(creatureColor[creature.GetName()], part.X * ElementSize, part.Y * ElementSize, ElementSize, ElementSize); } }
public void ActInConflict(IAliveCreature conflictedObject, int mapWidth, int mapHeight) { if (conflictedObject is Snake) { var dir = DirectionToPoint[conflictedObject.GetDirection()]; var x = (pos.X + dir.X + mapWidth) % mapWidth; var y = (pos.Y + dir.Y + mapHeight) % mapHeight; pos = new Point(x, y); } }
public void Destroy(object body = null) { QueueFree(); if (body != null) { IAliveCreature hit = body as IAliveCreature; Ball ball = body as Ball; if (hit != null) { hit.DealDamage(damage); } if (ball != null) { ball.SetSpeed(ball.speed * ballSpeedMultiplier); } } }
private void CheckSecondCollision(IAliveCreature snake, ICreature creature) { var cPos = creature.GetPosition(); var conflictedCreature = map[cPos.X, cPos.Y]; if (conflictedCreature != null) { if (conflictedCreature.DeadInConflict(creature)) { conflictedCreature.ActInConflict(creature, snake, MapWidth, MapHeight); creature.ActInConflict(conflictedCreature, snake, MapWidth, MapHeight); map[cPos.X, cPos.Y] = creature; if (conflictedCreature is Destiny) { Add("destiny"); } return; } isOver = true; finishReason += snake.GetName() + " dead,"; return; } map[cPos.X, cPos.Y] = creature; }
public bool DeadInConflict(IAliveCreature conflictedObject) => true;
public void ActInConflict(ICreature conflictedObject, IAliveCreature aliveConflictedObject, int mapWidth, int mapHeight) { }
public void ActInConflict(IAliveCreature conflictedObject, int mapWidth, int mapHeight) => conflictedObject.AddScore(1);