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); }
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); } }
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); }
public UnitPurchasedBroadcast(ReinforcementState reinforcementState, UnitConfiguration unit) { ReinforcementState = reinforcementState; Unit = unit; }
public PurchaseUnitRequest(UnitConfiguration unit) { Unit = unit; }