Beispiel #1
0
    // UPDATE BARRACKS NEEDS MORE DATA (HERO AND UNIT INFORMATION DATA)
    public void UpdateBarracks()
    {
        TroopResourceBehavior troopsBehavior = PlayerGameManager.GetInstance.troopBehavior;
        KingdomUnitStorage    unitStorage    = myController.unitStorage;

        if (cardIdx == 0) // TRAIN NEW SOLDIER
        {
            // Placeholders, need proper Unit Storage later on
            float hp  = unitStorage.GetUnitInformation("Recruit").maxHealth;
            float dmg = unitStorage.GetUnitInformation("Recruit").maxDamage;
            float spd = unitStorage.GetUnitInformation("Recruit").origSpeed;
            spd *= 10;

            if (PlayerGameManager.GetInstance != null)
            {
                hp  += PlayerGameManager.GetInstance.troopBehavior.techHealth;
                dmg += PlayerGameManager.GetInstance.troopBehavior.techDmg;
            }

            int recruitCount = 0;
            if (playerData.troopsList == null)
            {
                playerData.troopsList = new List <TroopsInformation>();
            }
            if (playerData.troopsList.Find(x => x.unitInformation.unitName == "Recruit") != null)
            {
                recruitCount = playerData.troopsList.Find(x => x.unitInformation.unitName == "Recruit").totalUnitCount;
            }
            List <float> tmp = new List <float>(); tmp.Add(recruitCount);; tmp.Add(hp); tmp.Add(spd); tmp.Add(dmg);
            currentPage.informationPanelList[0].SetMultiCounter(tmp, "Recruits"); // HP DAMAGE SPEED

            string secondDescription = "Max trained units the barracks can support [" + playerData.barracksCapacity + "]";
            currentPage.informationPanelList[1].SetSingleCounter(playerData.barracksCapacity, secondDescription, "Barracks Capacity"); // BARRACKS CAPACITY

            string thirdDescription = "Training cost to arm a person.";
            currentPage.informationPanelList[2].SetSingleCounter(troopsBehavior.GetRecruitCoins, thirdDescription, "Training Cost"); // TRAINING COST
        }
        else if (cardIdx == 2)                                                                                                       // HEROES
        {
            if (PlayerGameManager.GetInstance != null)
            {
                if (PlayerGameManager.GetInstance.playerData.myHeroes != null && PlayerGameManager.GetInstance.playerData.myHeroes.Count > 0)
                {
                    BaseHeroInformationData curHero = PlayerGameManager.GetInstance.playerData.myHeroes[selectedHeroIdx];
                    currentPage.informationPanelList[0].SetGrowthCounter((int)curHero.unitInformation.maxHealth, curHero.healthGrowthRate, "HEALTH", curHero.unitInformation.unitName);
                    currentPage.informationPanelList[1].SetGrowthCounter((int)curHero.unitInformation.maxDamage, curHero.damageGrowthRate, "DAMAGE");
                    currentPage.informationPanelList[2].SetGrowthCounter((int)curHero.unitInformation.origSpeed, curHero.speedGrowthRate, "SPEED");
                }
                else
                {
                    myController.ShowInfoBlocker("Recruit Hero in Tavern");
                }
            }
        }
        else if (cardIdx == 1) // TRAIN SOLDIERS
        {
            // Placeholders, need proper Unit Storage later on
            float Sprhp = unitStorage.GetUnitInformation("Spearman").maxHealth, Sprdmg = unitStorage.GetUnitInformation("Spearman").maxDamage, Sprspd = unitStorage.GetUnitInformation("Spearman").origSpeed;
            float Swdhp = unitStorage.GetUnitInformation("Swordsman").maxHealth, Swddmg = unitStorage.GetUnitInformation("Swordsman").maxDamage, Swdspd = unitStorage.GetUnitInformation("Swordsman").origSpeed;
            float Archp = unitStorage.GetUnitInformation("Archer").maxHealth, Arcdmg = unitStorage.GetUnitInformation("Archer").maxDamage, Arcspd = unitStorage.GetUnitInformation("Archer").origSpeed;
            Sprspd *= 10; Arcspd *= 10; Swdspd *= 10;

            if (PlayerGameManager.GetInstance != null)
            {
                Sprhp  += PlayerGameManager.GetInstance.troopBehavior.techHealth;
                Swdhp  += PlayerGameManager.GetInstance.troopBehavior.techHealth;
                Archp  += PlayerGameManager.GetInstance.troopBehavior.techHealth;
                Sprdmg += PlayerGameManager.GetInstance.troopBehavior.techDmg;
                Swddmg += PlayerGameManager.GetInstance.troopBehavior.techDmg;
                Arcdmg += PlayerGameManager.GetInstance.troopBehavior.techDmg;
            }


            List <float> tmp = new List <float>();
            for (int i = 0; i < currentPage.informationPanelList.Count; i++)
            {
                if (i == 0)
                {
                    int count = 0;
                    if (playerData.troopsList == null)
                    {
                        playerData.troopsList = new List <TroopsInformation>();
                    }
                    if (playerData.troopsList.Find(x => x.unitInformation.unitName == "Swordsman") != null)
                    {
                        count = playerData.troopsList.Find(x => x.unitInformation.unitName == "Swordsman").totalUnitCount;
                    }
                    tmp.Add(count);
                    tmp.Add(Swdhp); tmp.Add(Swdspd); tmp.Add(Swddmg);

                    currentPage.informationPanelList[i].SetMultiCounter(tmp, "Swordsman");
                    currentPage.informationPanelList[i].panelIcon.sprite = TransitionManager.GetInstance.unitStorage.GetUnitIcon("Swordsman");
                }
                else if (i == 1)
                {
                    int count = 0;
                    if (playerData.troopsList == null)
                    {
                        playerData.troopsList = new List <TroopsInformation>();
                    }
                    if (playerData.troopsList.Find(x => x.unitInformation.unitName == "Spearman") != null)
                    {
                        count = playerData.troopsList.Find(x => x.unitInformation.unitName == "Spearman").totalUnitCount;
                    }
                    tmp.Add(count);
                    tmp.Add(Sprhp); tmp.Add(Sprspd); tmp.Add(Sprdmg);

                    currentPage.informationPanelList[i].SetMultiCounter(tmp, "Spearman");
                    currentPage.informationPanelList[i].panelIcon.sprite = TransitionManager.GetInstance.unitStorage.GetUnitIcon("Spearman");
                }
                else if (i == 2)
                {
                    int count = 0;
                    if (playerData.troopsList == null)
                    {
                        playerData.troopsList = new List <TroopsInformation>();
                    }
                    if (playerData.troopsList.Find(x => x.unitInformation.unitName == "Archer") != null)
                    {
                        count = playerData.troopsList.Find(x => x.unitInformation.unitName == "Archer").totalUnitCount;
                    }
                    tmp.Add(count);
                    tmp.Add(Archp); tmp.Add(Arcspd); tmp.Add(Arcdmg);

                    currentPage.informationPanelList[i].SetMultiCounter(tmp, "Archer");
                    currentPage.informationPanelList[i].panelIcon.sprite = TransitionManager.GetInstance.unitStorage.GetUnitIcon("Archer");
                }
                tmp.Clear();
            }
        }
    }
        public void SpawnSkillUnits(string prefabPath, TeamType teamWith, int columnPoint)
        {
            GameObject tmp;

            tmp = (GameObject)Resources.Load(prefabPath);
            ScenePointBehavior spawnPoint  = null;
            ScenePointBehavior targetPoint = null;

            List <BattlefieldPathHandler> fieldPaths = BattlefieldPathManager.GetInstance.fieldPaths;

            switch (teamWith)
            {
            case TeamType.Neutral:     // MONSTERS SPAWNED, CAN be IMPROVED LATER ON
                int rand = UnityEngine.Random.Range(0, fieldPaths[columnPoint].scenePoints.Count);
                spawnPoint = fieldPaths[columnPoint].scenePoints[rand];
                if (rand < (fieldPaths[columnPoint].scenePoints.Count / 2))
                {
                    targetPoint = fieldPaths[columnPoint].attackerSpawnPoint;
                }
                else
                {
                    targetPoint = fieldPaths[columnPoint].defenderSpawnPoint;
                }

                break;

            case TeamType.Defender:
                spawnPoint  = fieldPaths[columnPoint].defenderSpawnPoint;
                targetPoint = fieldPaths[columnPoint].attackerSpawnPoint;
                break;

            case TeamType.Attacker:
                spawnPoint  = fieldPaths[columnPoint].attackerSpawnPoint;
                targetPoint = fieldPaths[columnPoint].defenderSpawnPoint;
                break;

            default:
                break;
            }

            tmp = GameObject.Instantiate(tmp, spawnPoint.transform.position, Quaternion.identity, null);
            BaseCharacter tmpCharacter = tmp.GetComponent <BaseCharacter>();


            tmpCharacter.SpawnInThisPosition(spawnPoint);
            tmpCharacter.SetupCharacter(unitStorage.GetUnitInformation(tmpCharacter.unitInformation.unitName));
            tmpCharacter.OrderMovement(targetPoint);
            tmpCharacter.isFighting = true;
            tmpCharacter.overheadHealthbar.gameObject.SetActive(true);
            tmpCharacter.overheadHealthbar.SetupHealthBar(tmpCharacter.unitInformation.curhealth, tmpCharacter.unitInformation.maxHealth);
            tmpCharacter.canReturnToCamp = false;
            tmpCharacter.teamType        = teamWith;

            switch (teamWith)
            {
            case TeamType.Defender:
                if (defendingCommander.spawnBuffsList != null && defendingCommander.spawnBuffsList.Count > 0)
                {
                    for (int i = 0; i < defendingCommander.spawnBuffsList.Count; i++)
                    {
                        tmpCharacter.AddBuff(defendingCommander.spawnBuffsList[i]);
                    }
                }
                defenderSpawnedUnits.Add(tmpCharacter);
                break;

            case TeamType.Attacker:
                if (attackingCommander.spawnBuffsList != null && attackingCommander.spawnBuffsList.Count > 0)
                {
                    for (int i = 0; i < attackingCommander.spawnBuffsList.Count; i++)
                    {
                        tmpCharacter.AddBuff(attackingCommander.spawnBuffsList[i]);
                    }
                }
                attackerSpawnedUnits.Add(tmpCharacter);
                break;

            default:
                break;
            }
        }
Beispiel #3
0
    public void UpdateTavern()
    {
        if (cardIdx == 0) // RECRUIT HEROES
        {
            if (playerData.tavernHeroes == null || playerData.tavernHeroes.Count <= 0)
            {
                myController.ShowInfoBlocker("No Heroes has Arrived");
            }
            else
            {
                for (int i = 0; i < currentPage.informationPanelList.Count; i++)
                {
                    if (playerData.tavernHeroes[i] == null)
                    {
                        break;
                    }
                    List <int> health = new List <int>();
                    health.Add((int)playerData.tavernHeroes[i].unitInformation.maxHealth);
                    health.Add((int)playerData.tavernHeroes[i].healthGrowthRate);
                    List <int> speed = new List <int>();
                    speed.Add((int)playerData.tavernHeroes[i].unitInformation.origSpeed);
                    speed.Add((int)playerData.tavernHeroes[i].speedGrowthRate);
                    List <int> damage = new List <int>();
                    damage.Add((int)playerData.tavernHeroes[i].unitInformation.minDamage);
                    damage.Add((int)playerData.tavernHeroes[i].unitInformation.maxDamage);
                    damage.Add((int)playerData.tavernHeroes[i].damageGrowthRate);

                    currentPage.informationPanelList[i].SetHeroCounter(health, damage, speed, playerData.tavernHeroes[i].unitInformation.attackType,
                                                                       playerData.tavernHeroes[i].unitInformation.unitName);
                }
            }
        }
        else if (cardIdx == 1) // GIVE DRINKS
        {
            List <float> tmp = new List <float>();
            tmp.Add(playerData.potentialCommonHero); tmp.Add(playerData.potentialRareHero); tmp.Add(playerData.potentialLegHero);
            currentPage.informationPanelList[0].SetMultiCounter(tmp, "Total Hero Chances");

            List <float> tmp1 = new List <float>();
            tmp1.Add(playerData.potentialGoodsMerchant); tmp1.Add(playerData.potentialEquipsMerchant); tmp1.Add(playerData.potentialExoticMerchant);
            currentPage.informationPanelList[1].SetMultiCounter(tmp1, "Total Merchant Chances");

            List <float> tmp2 = new List <float>();
            tmp2.Add(playerData.potentialCommonHero); tmp2.Add(playerData.potentialRareHero); tmp2.Add(playerData.potentialLegHero);
            currentPage.informationPanelList[2].SetMultiCounter(tmp, "Total Mercenary Chances");
        }
        else if (cardIdx == 2) // HIRE MERCENARIES
        {
            KingdomUnitStorage unitStorage = myController.unitStorage;

            float Sprhp = unitStorage.GetUnitInformation("Spearman").maxHealth, Sprdmg = unitStorage.GetUnitInformation("Spearman").maxDamage, Sprspd = unitStorage.GetUnitInformation("Spearman").origSpeed;
            float Swdhp = unitStorage.GetUnitInformation("Swordsman").maxHealth, Swddmg = unitStorage.GetUnitInformation("Swordsman").maxDamage, Swdspd = unitStorage.GetUnitInformation("Swordsman").origSpeed;
            float Archp = unitStorage.GetUnitInformation("Archer").maxHealth, Arcdmg = unitStorage.GetUnitInformation("Archer").maxDamage, Arcspd = unitStorage.GetUnitInformation("Archer").origSpeed;
            Sprspd *= 10; Arcspd *= 10; Swdspd *= 10;
            if (PlayerGameManager.GetInstance != null)
            {
                Sprhp  += PlayerGameManager.GetInstance.troopBehavior.techHealth;
                Swdhp  += PlayerGameManager.GetInstance.troopBehavior.techHealth;
                Archp  += PlayerGameManager.GetInstance.troopBehavior.techHealth;
                Sprdmg += PlayerGameManager.GetInstance.troopBehavior.techDmg;
                Swddmg += PlayerGameManager.GetInstance.troopBehavior.techDmg;
                Arcdmg += PlayerGameManager.GetInstance.troopBehavior.techDmg;
            }

            List <float> tmp = new List <float>();
            tmp.Add(playerData.ObtainMercenaryInformation("Swordsman").totalUnitCount); tmp.Add(Swdhp); tmp.Add(Swddmg); tmp.Add(Swdspd);
            currentPage.informationPanelList[0].SetMultiCounter(tmp, "Swordsman Available");

            List <float> tmp1 = new List <float>();
            tmp1.Add(playerData.ObtainMercenaryInformation("Spearman").totalUnitCount); tmp1.Add(Sprhp); tmp1.Add(Sprdmg); tmp1.Add(Sprspd);
            currentPage.informationPanelList[1].SetMultiCounter(tmp1, "Spearman Available");

            List <float> tmp2 = new List <float>();
            tmp2.Add(playerData.ObtainMercenaryInformation("Archer").totalUnitCount); tmp2.Add(Archp); tmp2.Add(Arcdmg); tmp2.Add(Arcspd);
            currentPage.informationPanelList[2].SetMultiCounter(tmp2, "Archer Available");
        }
    }
        public BaseTravellerData GenerateRandomWarbandTraveller(int unitCount, float newRelationship)
        {
            BaseTravellerData tmp = new BaseTravellerData();

            tmp.weekSpawned   = ObtainPlayerWeeklyCount();
            tmp.troopsCarried = new List <TroopsInformation>();

            if (newRelationship < 0)
            {
                tmp.affiliatedTeam = Maps.TerritoryOwners.FurKhan;
            }
            else
            {
                tmp.affiliatedTeam = Maps.TerritoryOwners.Neutral;
            }

            int randLdrIdx = UnityEngine.Random.Range(0, unitStorage.heroStorage.Count);

            tmp.leaderUnit = new List <BaseHeroInformationData>();
            BaseHeroInformationData newLeader = new BaseHeroInformationData();

            newLeader = TransitionManager.GetInstance.unitStorage.ObtainHeroBaseInformation(WieldedWeapon.Bow);

            // TODO : CHANGE ON NEW HERO PREFABS
            newLeader.unitInformation.prefabDataPath = "Assets/Resources/Prefabs/Unit and Items/Player.prefab";
            tmp.leaderUnit.Add(newLeader);
            tmp.UpdateRelationship(newRelationship);

            // TroopTypes
            List <int> troopTypes = new List <int>();

            troopTypes.Add(0);
            troopTypes.Add(0);
            troopTypes.Add(0);
            troopTypes.Add(0);

            for (int i = 0; i < unitCount; i++)
            {
                int rand = UnityEngine.Random.Range(0, troopTypes.Count);
                troopTypes[rand] += 1;
            }


            TroopsInformation recruit   = TroopsInformation.ConvertToTroopsInformation(unitStorage.GetUnitInformation("Recruit"), troopTypes[0]);
            TroopsInformation swordsman = TroopsInformation.ConvertToTroopsInformation(unitStorage.GetUnitInformation("Swordsman"), troopTypes[1]);
            TroopsInformation spearman  = TroopsInformation.ConvertToTroopsInformation(unitStorage.GetUnitInformation("Spearman"), troopTypes[2]);
            TroopsInformation archer    = TroopsInformation.ConvertToTroopsInformation(unitStorage.GetUnitInformation("Archer"), troopTypes[3]);

            tmp.troopsCarried.Add(recruit);
            tmp.troopsCarried.Add(swordsman);
            tmp.troopsCarried.Add(spearman);
            tmp.troopsCarried.Add(archer);

            TravellerFlavourPhrase flavourTmp = new TravellerFlavourPhrase();

            flavourTmp.relationshipGauge = -50;
            flavourTmp.flavourText       = "100 coins is not enough, we know you're hiding more there!";

            TravellerFlavourPhrase flavourTmp1 = new TravellerFlavourPhrase();

            flavourTmp1.relationshipGauge = -30;
            flavourTmp1.flavourText       = "100 coins, you should give more!";

            TravellerFlavourPhrase flavourTmp2 = new TravellerFlavourPhrase();

            flavourTmp2.relationshipGauge = 0;
            flavourTmp2.flavourText       = "100 coins might make us stay a week or two..";

            tmp.flavourTexts = new List <TravellerFlavourPhrase>();
            tmp.flavourTexts.Add(flavourTmp);
            tmp.flavourTexts.Add(flavourTmp1);
            tmp.flavourTexts.Add(flavourTmp2);
            return(tmp);
        }