// 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; } }
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); }