示例#1
0
        private void AssignNewDirection(IDirection direction, IUnit player, IMazeViewData mazeView)
        {
            player.CurrentMovementDirection = direction;
            ILocation futureLocation = player.CurrentLocation.GetCopy().Add(mazeView.MovementCube[direction.Value]);

            player.AssignLocation(futureLocation);
        }
示例#2
0
        private void AssignReverseDirection(IDirection direction, IUnit player, IMazeViewData mazeView)
        {
            IDirection reverseDirection = player.CurrentMovementDirection.ReverseDirection;

            player.CurrentMovementDirection = reverseDirection;
            player.FutureMovementDirection  = reverseDirection;

            ILocation reverseLocation = player.CurrentLocation
                                        .GetCopy()
                                        .Add(mazeView.MovementCube[reverseDirection.Value]);

            player.AssignLocation(reverseLocation);
        }
示例#3
0
        private void SpawnUnitAtLocation(UnitType unitType, Location location)
        {
            IUnit spawn = _unitFactory.CreateUnit(unitType);

            if (spawn == null)
            {
                return;
            }

            if (Validator.IsLocationOccupied(location, UnitList))
            {
                return;
            }

            if (unitType == UnitType.Player && Validator.IsPlayerMaximumReached(UnitList))
            {
                return;
            }

            spawn.AssignLocation(location);
            UnitList.Add(spawn);
        }