Beispiel #1
0
        public override void Execute(params string[] commandParams)
        {
            string startingCityName = commandParams[0];
            string destinationName  = commandParams[1];

            ICity startingCity    = this.Engine.Continent.GetCityByName(startingCityName);
            ICity destinationCity = this.Engine.Continent.GetCityByName(destinationName);

            this.Engine.Continent.VerifyTroopMovement(startingCity, destinationCity);

            if (startingCity.ControllingHouse != destinationCity.ControllingHouse)
            {
                throw new InvalidOperationException("Cannot move troops between cities controlled by different Houses");
            }

            var canArmyMove = VerifyDestinationHousingSpaces(destinationCity, startingCity);

            if (!canArmyMove)
            {
                throw new InsufficientHousingSpacesException("Destination city has insufficient housing spaces");
            }

            startingCity.FoodStorage -= this.Engine.Continent.CityNeighborsAndDistances[startingCity][destinationCity];
            var unitsToMove = startingCity.RemoveUnits();

            destinationCity.AddUnits(unitsToMove);

            this.Engine.Render("Successfully moved all units from {0} to {1}", startingCity.Name, destinationCity.Name);
        }