Пример #1
0
        public Unit(PlayerState owner, int id, UnitConfiguration configuration, Server server)
        {
            Owner                = owner;
            Id                   = id;
            Faction              = server.GetFaction(configuration.FactionId);
            Type                 = Faction.GetUnitType(configuration.UnitTypeId);
            Upgrades             = new List <UnitUpgrade>();
            _Points              = Type.Points;
            UpgradeSlotsOccupied = new HashSet <int>();
            foreach (var upgradeId in configuration.UpgradeIds)
            {
                AddUpgrade(GetUpgrade(upgradeId));
            }

            Hex      = null;
            Strength = GameConstants.FullUnitStrength;

            Entrenched = false;

            AttritionDuration = 0;

            UpdateStats();
            ResetUnitForNewTurn();

            // Only air units are automatically "deployed" since they don't need to be placed on the map
            Deployed = Stats.Flags.Contains(UnitFlag.Air);
        }
Пример #2
0
 public BaseArmy(Faction faction, List <Unit> units)
 {
     FactionId = faction.Id.Value;
     Units     = new List <UnitConfiguration>();
     foreach (var unit in units)
     {
         UnitConfiguration unitConfiguration = new UnitConfiguration(FactionId, unit.Type.Id.Value);
         foreach (var upgrade in unit.Upgrades)
         {
             unitConfiguration.UpgradeIds.Add(upgrade.Id.Value);
         }
         Units.Add(unitConfiguration);
     }
 }
Пример #3
0
        void OnPurchaseUnit(ClientToServerMessage message)
        {
            PurchaseUnitRequest request = message.PurchaseUnitRequest;

            if (request == null)
            {
                throw new ServerClientException("Invalid purchase request");
            }
            if (request.Unit.FactionId != PlayerState.Faction.Id)
            {
                throw new ServerClientException("Tried to purchase a unit from another faction");
            }
            Unit unit = new Unit(PlayerState, Game.GetUnitId(), request.Unit, Server);

            PlayerState.PurchaseUnit(unit);
            // Update the unit ID prior to broadcasting the purchase information
            UnitConfiguration unitConfiguration = request.Unit;

            unitConfiguration.UnitId = unit.Id;
            UnitPurchasedBroadcast unitPurchased = new UnitPurchasedBroadcast(new ReinforcementState(PlayerState), request.Unit);
            ServerToClientMessage  broadcast     = new ServerToClientMessage(unitPurchased);

            BroadcastMessage(broadcast);
        }
Пример #4
0
 public UnitPurchasedBroadcast(ReinforcementState reinforcementState, UnitConfiguration unit)
 {
     ReinforcementState = reinforcementState;
     Unit = unit;
 }
Пример #5
0
 public PurchaseUnitRequest(UnitConfiguration unit)
 {
     Unit = unit;
 }