/// <summary> /// Interact with a moving object that enters this Base's cell. /// </summary> /// <param name="movingObject">Object that enters this Base's cell.</param> public override void InteractWithMovingObject(MovableObject movingObject) { movingObject.MovingDirection = this.PointDirection; }
/// <summary> /// Interact with a moving object that enters this Spawner's cell. /// </summary> /// <param name="movingObject">Object that enters this Spawner's cell.</param> public override void InteractWithMovingObject(MovableObject movingObject) { movingObject.Turn(); }
/// <summary> /// Spawn a new MovableObject on the board. /// </summary> private void Spawn() { // Determine movement direction of the new MovableObject Direction objectMovementDirection = this.SpawnDirection; if (objectMovementDirection == Direction.Random) { objectMovementDirection = DirectionUtils.GetRandomDirection(); } // Determine the turning direction of the new MovableObject Direction objectTurnDirection = GameSettings.TurnDirection; if (objectTurnDirection == Direction.Random) { objectTurnDirection = DirectionUtils.GetRandomHorizontalDirection(); } // Calculate the starting cell based on the movement direction int objectStartCol = this.CellCol; int objectStartRow = this.CellRow; switch (objectMovementDirection) { case Direction.Up: objectStartRow--; break; case Direction.Down: objectStartRow++; break; case Direction.Right: objectStartCol++; break; case Direction.Left: objectStartCol--; break; default: throw new Exception(String.Format("Spawner is using an unknown or invalid Direction value: {0}", objectMovementDirection)); } // Determine if this is a positive or negative object int objectScore = GameSettings.ObjectScore; if (GameSettings.RANDOM.NextDouble() <= GameSettings.ProbabilityOfNegativeSpawn) { objectScore = GameSettings.NegativeObjectScore; } MovableObject newObject = new MovableObject(objectStartCol, objectStartRow, objectMovementDirection, objectTurnDirection, objectScore, GameSettings.CellsPerMove); if (this.ObjectSpawnedHandler != null) { this.ObjectSpawnedHandler(newObject, null); } this.SpawnedObjects.Add(newObject); }
/// <summary> /// Interact with a moving object that enters this Base's cell. /// </summary> /// <param name="movingObject">Object that enters this Base's cell.</param> public override void InteractWithMovingObject(MovableObject movingObject) { this.Player.UpdateScore(movingObject.PointValue); }