Exemple #1
0
        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);
        }
Exemple #2
0
 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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
    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.");
            }
        }
    }