public bool createUnit(string faction, string army, string unit, string region) { Region objRegion = mapManager.searchRegionByName(region); int armyIndex = armyManager.getArmyIndex(army); Faction aFaction = factionManager.factionByName(faction); if (armyIndex != -1) { if (objRegion.type == "Fort" || objRegion.type == "Urban" || objRegion.type == "Capital" || objRegion.type == "SpecialCapital" && objRegion.owner == faction) { Unit aUnit = armyManager.getUnitByName(unit); if (aUnit.goldCost < aFaction.gold && aUnit.woodCost < aFaction.wood && aUnit.foodCost < aFaction.food) { UnitArmy cUnit = armyManager.createUnit(aUnit, faction, army); if (cUnit != null) { factionManager.updateFactionResources(faction, -aUnit.goldCost, -aUnit.maxManpower, -aUnit.woodCost, -aUnit.foodCost); updateMaintenance(army); updateMaintenanceFaction(faction); return(true); } } } } return(false); }
private void OnDisable() { costsText.gameObject.SetActive(false); reinforceButton.gameObject.SetActive(false); unit = null; army = ""; image = null; costsText.text = ""; infoText.text = ""; }
public UnitArmy createUnit(Unit unit, string faction, string armyName) { int toAddArmyIndex = getArmyIndex(armyName); if (armies[toAddArmyIndex].general.faction == faction && armies[toAddArmyIndex].unitCount <= 15 && armies[toAddArmyIndex].combatLock == false) { UnitArmy unitArmy = new UnitArmy(unit, createUnitID(armyName, unit.name, armies[toAddArmyIndex].totalUnitCount)); Console.WriteLine(unitArmy.unit.name + "; " + unitArmy.id); armies[toAddArmyIndex].units.Add(unitArmy); armies[toAddArmyIndex].unitCount++; armies[toAddArmyIndex].totalUnitCount++; armiesMaintenance[toAddArmyIndex].foodMaintenance += unitArmy.unit.foodMaintenance; armiesMaintenance[toAddArmyIndex].goldMaintenance += unitArmy.unit.goldMaintenance; return(unitArmy); } return(null); }
public void ConfirmSelection() { if (selectedUnit != null) { Toast toastManager = toastObj.GetComponent <Toast>(); //retirar aos recursos Faction myFaction = Utils.GetMyFaction(); if (myFaction.food >= selectedUnit.foodCost && myFaction.gold >= selectedUnit.goldCost && myFaction.wood >= selectedUnit.woodCost) { UnitArmy unitArmy = new UnitArmy(); unitArmy.unit = selectedUnit; unitArmy.availableManPower = selectedUnit.maxManpower; unitArmy.reinforcementCosts = 0; checkArmy.GetComponent <CheckArmy>().army.units.Add(unitArmy); checkArmy.GetComponent <CheckArmy>().army.unitCount += 1; checkArmy.GetComponent <CheckArmy>().army.totalUnitCount += 1; myFaction.food -= selectedUnit.foodCost; myFaction.gold -= selectedUnit.goldCost; myFaction.wood -= selectedUnit.woodCost; GetRegion().GetComponent <RegionHandler>().isCreating = true; //createUnit and send request ServerResponse response = new ServerResponse(); response.EventType = "CreateUnit"; response.data.Add(InfoManager.Instance.factionsManager.myFaction); response.data.Add(checkArmy.GetComponent <CheckArmy>().army.name); response.data.Add(selectedUnit.name); response.data.Add(InfoManager.Instance.selectedRegion); GameCommunication.Instance.connection.SendMessage(JsonConvert.SerializeObject(response)); parentT3Panel.SetActive(false); } else { toastManager.toasts.Enqueue("Don't have enough resources"); } } }
private double unitPowerCalculator(UnitArmy unitA, General general, bool attacking, List <TerrainBonus> bonus) { double total = 0; for (int i = 0; i < 3; i++) { double unitTerrainBonus = regionBonus(unitA.id, bonus); if (attacking == true) { if (i == 0) { total += (unitA.unit.attackEarly * general.bonus * unitTerrainBonus); } if (i == 1) { total += (unitA.unit.attackMid * general.bonus * unitTerrainBonus); } if (i == 2) { total += (unitA.unit.attackLate * general.bonus * unitTerrainBonus); } } else { if (i == 0) { total += (unitA.unit.defenceEarly * general.bonus * unitTerrainBonus); } if (i == 1) { total += (unitA.unit.defenceMid * general.bonus * unitTerrainBonus); } if (i == 2) { total += (unitA.unit.defenceLate * general.bonus * unitTerrainBonus); } } } total = (unitA.availableManPower * total); return(total); }
public bool createArmy(string faction, string general, string name, string region, string unit) { Console.WriteLine(1); Region objRegion = mapManager.searchRegionByName(region); if (objRegion.type == "Fort" || objRegion.type == "Urban" || objRegion.type == "Capital" || objRegion.type == "SpecialCapital" || factionManager.factionByName(faction).armyCount == 5) { General aGeneral = armyManager.getGeneralByName(general); Faction aFaction = factionManager.factionByName(faction); Console.WriteLine(2); if (aFaction.gold > aGeneral.goldCost) { Console.WriteLine(3); Army army = armyManager.createArmy(faction, name, aGeneral, region); if (army != null) { Console.WriteLine(4); Unit aUnit = armyManager.getUnitByName(unit); if (aUnit.goldCost < aFaction.gold && aUnit.woodCost < aFaction.wood && aUnit.foodCost < aFaction.food) { Console.WriteLine(5); UnitArmy cUnit = armyManager.createUnit(aUnit, faction, name); factionManager.factionByName(faction).armyCount++; if (cUnit != null) { Console.WriteLine(6); factionManager.updateFactionResources(faction, -aUnit.goldCost, -aUnit.maxManpower, -aUnit.woodCost, -aUnit.foodCost); updateMaintenance(name); updateMaintenanceFaction(faction); return(true); } } } } } return(false); }
public void CreateArmyRequest() { string textValue = input.text; unit = unitPrefab.GetComponent <SelectPrefab>().unit; general = generalPrefab.GetComponent <SelectPrefab>().general; region = InfoManager.Instance.selectedRegion; string factionName = InfoManager.Instance.factionsManager.myFaction; Toast toastManager = toastObj.GetComponent <Toast>(); if (unit != null && general.name != null && !string.IsNullOrWhiteSpace(textValue)) { bool validName = true; foreach (Faction fac in InfoManager.Instance.factionsManager.factions.ToList()) { foreach (Army ar in fac.armies) { if (ar.name == textValue) { validName = false; } } } if (validName) { Faction faction = Utils.GetMyFaction(); if (goldCostsInt < faction.gold && foodCostsInt < faction.food && woodCostsInt < faction.wood) { ServerResponse response = new ServerResponse(); response.EventType = "CreateArmy"; response.data.Add(factionName); response.data.Add(general.name); response.data.Add(textValue); response.data.Add(region); response.data.Add(unit.name); faction.gold -= goldCostsInt; faction.food -= foodCostsInt; faction.wood -= woodCostsInt; Army army = new Army(); army.name = textValue; army.general = general; foreach (General gen in InfoManager.Instance.armyCollections.getGeneral()) { if (gen.name == general.name) { gen.available = false; } } UnitArmy unitArmy = new UnitArmy(); unitArmy.unit = unit; unitArmy.availableManPower = unit.maxManpower; unitArmy.reinforcementCosts = 0; army.units.Add(unitArmy); army.region = region; army.unitCount = 1; army.totalUnitCount = 1; Utils.GetMyFaction().armies.Add(army); GameObject regionHandler = GetCurrentRegion(); regionHandler.GetComponent <RegionHandler>().canCreateArmy = false; regionHandler.GetComponent <RegionHandler>().canMoveArmy = false; regionHandler.GetComponent <RegionHandler>().isMoving = true; regionHandler.GetComponent <RegionHandler>().createdThisRound = true; regionHandler.GetComponent <RegionHandler>().armyImage.SetActive(true); GameCommunication.Instance.connection.SendMessage(JsonConvert.SerializeObject(response)); ResetValues(); this.gameObject.SetActive(false); this.transform.parent.gameObject.SetActive(false); } else { toastManager.toasts.Enqueue("Don't have enough resources"); Debug.Log("Dont have enough resources"); } } else { toastManager.toasts.Enqueue("Choose other name"); Debug.Log("Choose other name."); } } }