Beispiel #1
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="city">The <see cref="UnitPivot.City"/> value.</param>
 /// <param name="defensePoints">The <see cref="UnitPivot.DefensePoints"/> value.</param>
 /// <param name="offensePoints">The <see cref="UnitPivot.OffensePoints"/> value.</param>
 /// <param name="speed">The <see cref="UnitPivot.Speed"/> value.</param>
 /// <param name="productivityCost">The <see cref="BuildablePivot.ProductivityCost"/> value.</param>
 /// <param name="advancePrerequisite">The <see cref="BuildablePivot.AdvancePrerequisite"/> value.</param>
 /// <param name="advanceObsolescence">The <see cref="BuildablePivot.AdvanceObsolescence"/> value.</param>
 /// <param name="purchasePrice">The <see cref="BuildablePivot.PurchasePrice"/> value.</param>
 /// <param name="name">The <see cref="BuildablePivot.Name"/> value.</param>
 /// <param name="citizenCostToProduce">The <see cref="UnitPivot.CitizenCostToProduce"/> value.</param>
 /// <param name="location">The <see cref="UnitPivot.MapSquareLocation"/> value, if <paramref name="city"/> is <c>Null</c>.</param>
 /// <param name="player">The <see cref="UnitPivot.Player"/> value, if <paramref name="city"/> is <c>Null</c>.</param>
 /// <param name="ignoreControlZone">Optional; the <see cref="UnitPivot.IgnoreControlZone"/> value.</param>
 /// <param name="ignoreCityWalls">Optional; the <see cref="UnitPivot.IgnoreCityWalls"/> value.</param>
 /// <param name="maintenanceCost">Optional; the <see cref="UnitPivot.MaintenanceCost"/> value.</param>
 protected LandUnitPivot(CityPivot city, int offensePoints, int defensePoints, int speed, int productivityCost,
                         AdvancePivot advancePrerequisite, AdvancePivot advanceObsolescence, int purchasePrice, string name, int citizenCostToProduce,
                         MapSquarePivot location, PlayerPivot player, bool ignoreControlZone = false, bool ignoreCityWalls = false, int maintenanceCost = 1) :
     base(city, offensePoints, defensePoints, speed, productivityCost, advancePrerequisite, advanceObsolescence,
          purchasePrice, name, citizenCostToProduce, location, player, ignoreControlZone, ignoreCityWalls, 1, maintenanceCost)
 {
 }
Beispiel #2
0
        /// <summary>
        /// Takes any specialist citizen of the city and makes it a regular citizen.
        /// </summary>
        /// <param name="mapSquare">The location.</param>
        internal void ChangeAnySpecialistToRegular(MapSquarePivot mapSquare)
        {
            var citizenSource = _specialistCitizens.FirstOrDefault();

            if (citizenSource != null)
            {
                AddRegularCitizen(citizenSource, mapSquare);
            }
        }
Beispiel #3
0
        /// <summary>
        /// Creates a new instance from the current one.
        /// </summary>
        /// <param name="city">The <see cref="City"/> value.</param>
        /// <param name="location">The <see cref="MapSquareLocation"/> value; pertinent only if <paramref name="city"/> is <c>Null</c>.</param>
        /// <param name="player">The <see cref="Player"/> value; pertinent only if <paramref name="city"/> is <c>Null</c>.</param>
        /// <returns>A new <see cref="UnitPivot"/> from the current one.</returns>
        internal UnitPivot CreateInstance(CityPivot city, MapSquarePivot location, PlayerPivot player)
        {
            var method = GetType().GetMethod(
                "CreateAtLocation",
                BindingFlags.Static | BindingFlags.NonPublic,
                null,
                new[] { typeof(CityPivot), typeof(MapSquarePivot), typeof(PlayerPivot) },
                null);

            return((UnitPivot)method?.Invoke(null, new object[] { city, location, player }));
        }
Beispiel #4
0
 /// <summary>
 /// Creates an <see cref="HutPivot"/> with some gold inside.
 /// </summary>
 /// <param name="mapSquare">The <see cref="MapSquareLocation"/> value.</param>
 /// <returns>An instance of <see cref="HutPivot"/>.</returns>
 internal static HutPivot GoldHut(MapSquarePivot mapSquare)
 {
     return(new HutPivot
     {
         MapSquareLocation = mapSquare,
         IsAdvance = false,
         IsGold = true,
         IsFriendlyCavalryUnit = false,
         IsSettlerUnit = false,
         IsBarbarians = false
     });
 }
Beispiel #5
0
        private void AddRegularCitizen(CitizenPivot citizenSource, MapSquarePivot location, bool delayHappinessCheck = false)
        {
            var alreadyInArea = _areaMapSquares.SingleOrDefault(ams => ams.Citizen == citizenSource);

            if (alreadyInArea != null)
            {
                _areaMapSquares.Remove(alreadyInArea);
            }
            else
            {
                _specialistCitizens.Remove(citizenSource);
            }
            citizenSource.ToRegular();
            _areaMapSquares.Add(new CityAreaMapSquarePivot(this, location));

            if (!delayHappinessCheck)
            {
                CheckCitizensHappiness();
            }
        }
Beispiel #6
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="player">The <see cref="Player"/> value.</param>
        /// <param name="currentTurn">The <see cref="CreationTurn"/> value.</param>
        /// <param name="name">The <see cref="Name"/> value.</param>
        /// <param name="location">The <see cref="MapSquareLocation"/> value.</param>
        /// <param name="production">The <see cref="Production"/> value.</param>
        internal CityPivot(PlayerPivot player, int currentTurn, string name, MapSquarePivot location, BuildablePivot production)
        {
            Player            = player;
            Name              = name;
            MapSquareLocation = location;
            CreationTurn      = currentTurn;
            Production        = production;

            _improvements = new List <CityImprovementPivot>();
            _wonders      = new List <WonderPivot>();

            _specialistCitizens = new List <CitizenPivot>();
            _areaMapSquares     = new List <CityAreaMapSquarePivot>
            {
                new CityAreaMapSquarePivot(this, MapSquareLocation)
            };
            _areaMapSquares.Add(new CityAreaMapSquarePivot(this, BestVacantMapSquareLocation()));

            location.ApplyCityActions();
        }
Beispiel #7
0
        /// <summary>
        /// Moves the instance.
        /// </summary>
        /// <param name="direction">The <see cref="DirectionPivot"/>.</param>
        /// <param name="previousMapSquare">The previous <see cref="MapSquarePivot"/>.</param>
        /// <param name="currentMapSquare">The new <see cref="MapSquarePivot"/>.</param>
        internal void Move(DirectionPivot direction, MapSquarePivot previousMapSquare, MapSquarePivot currentMapSquare)
        {
            if (RemainingMoves == 0)
            {
                // Just in case !
                return;
            }

            if (!previousMapSquare.RailRoad || !currentMapSquare.RailRoad)
            {
                RemainingMoves -= currentMapSquare.Biome.SpeedCost *
                                  (previousMapSquare.Road && currentMapSquare.Road ? ROAD_SPEED_COST_RATIO : 1);
            }

            MapSquareLocation = currentMapSquare;

            if (RemainingMoves < 0)
            {
                RemainingMoves = 0;
            }
        }
Beispiel #8
0
 /// <summary>
 /// Constructor (for existing citizen).
 /// </summary>
 /// <param name="mapSquare">The <see cref="MapSquare"/> value.</param>
 /// <param name="citizen">The <see cref="Citizen"/> value.</param>
 internal CityAreaMapSquarePivot(MapSquarePivot mapSquare, CitizenPivot citizen)
 {
     City      = citizen.City;
     MapSquare = mapSquare;
     Citizen   = citizen;
 }
Beispiel #9
0
 /// <summary>
 /// Constructor (for new citizen).
 /// </summary>
 /// <param name="city">The <see cref="City"/> value.</param>
 /// <param name="mapSquare">The <see cref="MapSquare"/> value.</param>
 internal CityAreaMapSquarePivot(CityPivot city, MapSquarePivot mapSquare)
 {
     City      = city;
     MapSquare = mapSquare;
     Citizen   = city.MapSquareLocation == MapSquare ? null : new CitizenPivot(city);
 }
Beispiel #10
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="city">The <see cref="City"/> value.</param>
 /// <param name="defensePoints">The <see cref="DefensePoints"/> value.</param>
 /// <param name="offensePoints">The <see cref="OffensePoints"/> value.</param>
 /// <param name="speed">The <see cref="Speed"/> value.</param>
 /// <param name="productivityCost">The <see cref="BuildablePivot.ProductivityCost"/> value.</param>
 /// <param name="advancePrerequisite">The <see cref="BuildablePivot.AdvancePrerequisite"/> value.</param>
 /// <param name="advanceObsolescence">The <see cref="BuildablePivot.AdvanceObsolescence"/> value.</param>
 /// <param name="purchasePrice">The <see cref="BuildablePivot.PurchasePrice"/> value.</param>
 /// <param name="name">The <see cref="BuildablePivot.Name"/> value.</param>
 /// <param name="citizenCostToProduce">The <see cref="CitizenCostToProduce"/> value.</param>
 /// <param name="location">The <see cref="MapSquareLocation"/> value, if <paramref name="city"/> is <c>Null</c>.</param>
 /// <param name="player">The <see cref="Player"/> value, if <paramref name="city"/> is <c>Null</c>.</param>
 /// <param name="ignoreControlZone">The <see cref="IgnoreControlZone"/> value.</param>
 /// <param name="ignoreCityWalls">The <see cref="IgnoreCityWalls"/> value.</param>
 /// <param name="squareSight">The <see cref="SquareSight"/> value.</param>
 /// <param name="maintenanceCost">The <see cref="MaintenanceCost"/> value.</param>
 protected UnitPivot(CityPivot city, int offensePoints, int defensePoints, int speed, int productivityCost, AdvancePivot advancePrerequisite,
                     AdvancePivot advanceObsolescence, int purchasePrice, string name, int citizenCostToProduce, MapSquarePivot location, PlayerPivot player,
                     bool ignoreControlZone, bool ignoreCityWalls, int squareSight, int maintenanceCost) :
     base(productivityCost, advancePrerequisite, advanceObsolescence, purchasePrice, name, false)
 {
     Player               = city?.Player ?? player;
     City                 = city;
     MapSquareLocation    = city?.MapSquareLocation ?? location;
     DefensePoints        = defensePoints;
     OffensePoints        = offensePoints;
     Speed                = speed;
     RemainingMoves       = ComputeRealSpeed();
     CitizenCostToProduce = citizenCostToProduce;
     IgnoreControlZone    = ignoreControlZone;
     IgnoreCityWalls      = ignoreCityWalls;
     SquareSight          = squareSight;
     MaintenanceCost      = maintenanceCost;
 }
Beispiel #11
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="city">The <see cref="UnitPivot.City"/> value.</param>
 /// <param name="defensePoints">The <see cref="UnitPivot.DefensePoints"/> value.</param>
 /// <param name="offensePoints">The <see cref="UnitPivot.OffensePoints"/> value.</param>
 /// <param name="speed">The <see cref="UnitPivot.Speed"/> value.</param>
 /// <param name="productivityCost">The <see cref="BuildablePivot.ProductivityCost"/> value.</param>
 /// <param name="advancePrerequisite">The <see cref="BuildablePivot.AdvancePrerequisite"/> value.</param>
 /// <param name="advanceObsolescence">The <see cref="BuildablePivot.AdvanceObsolescence"/> value.</param>
 /// <param name="purchasePrice">The <see cref="BuildablePivot.PurchasePrice"/> value.</param>
 /// <param name="name">The <see cref="BuildablePivot.Name"/> value.</param>
 /// <param name="location">The <see cref="UnitPivot.MapSquareLocation"/> value, if <paramref name="city"/> is <c>Null</c>.</param>
 /// <param name="player">The <see cref="UnitPivot.Player"/> value, if <paramref name="city"/> is <c>Null</c>.</param>
 /// <param name="ignoreControlZone">Optional; the <see cref="UnitPivot.IgnoreControlZone"/> value.</param>
 /// <param name="ignoreCityWalls">Optional; the <see cref="UnitPivot.IgnoreCityWalls"/> value.</param>
 /// <param name="squareSight">Optional; the <see cref="UnitPivot.SquareSight"/> value.</param>
 /// <param name="transportCapacity">Optional; the <see cref="TransportCapacity"/> value.</param>
 /// <param name="canAttackCoastUnit">Optional; the <see cref="CanAttackCoastUnit"/> value.</param>
 /// <param name="maintenanceCost">The <see cref="UnitPivot.MaintenanceCost"/> value.</param>
 protected SeaUnitPivot(CityPivot city, int offensePoints, int defensePoints, int speed, int productivityCost,
                        AdvancePivot advancePrerequisite, AdvancePivot advanceObsolescence, int purchasePrice, string name, MapSquarePivot location,
                        PlayerPivot player, bool ignoreControlZone, bool ignoreCityWalls, int squareSight, int transportCapacity, bool canAttackCoastUnit, int maintenanceCost) :
     base(city, offensePoints, defensePoints, speed, productivityCost, advancePrerequisite, advanceObsolescence, purchasePrice, name, 0,
          location, player, ignoreControlZone, ignoreCityWalls, squareSight, maintenanceCost)
 {
     TransportCapacity  = transportCapacity;
     CanAttackCoastUnit = canAttackCoastUnit;
 }