public HeroUnit GenerateHero(UnitStats stats, int rarity, StatType primaryStat, int cost) { HeroUnit hero = Instantiate(heroPrefab); hero.name = StatHelper.MakeName(); hero.rarity = rarity; hero.SetStats(stats); hero.cost = cost; Ability[] abilites = { }; if (primaryStat == StatType.STR) { abilites = strAbilities; } else if (primaryStat == StatType.INT) { abilites = Random.Range(0.0f, 1.0f) > 0.5f ? intDmgAbilities : intSupAbilities; } else if (primaryStat == StatType.DEX) { abilites = dexAbilities; } UnitAbilityController abilityRoot = hero.GetAbilityController(); foreach (Ability abilityPrefab in abilites) { Ability ability = Instantiate(abilityPrefab); ability.transform.parent = abilityRoot.transform; ability.transform.localPosition = Vector3.zero; } abilityRoot.UpdateAbilityList(); abilityRoot.enabled = false; if (abilites == intSupAbilities) { hero.targettingAlignment = TargettingAlignment.Friendly; } UnitMovementController movementController; if (abilites == strAbilities) { movementController = hero.gameObject.AddComponent <MeleeUnitMovementController>(); } else { movementController = hero.gameObject.AddComponent <RangedUnitMovementController>(); } movementController.Disable(); int seatIndex = Random.Range(0, seats.Count); Transform seat = seats[seatIndex]; seats.RemoveAt(seatIndex); hero.transform.position = seat.position; heroList.AddHero(hero); return(hero); }
public void SetHero(HeroUnit hero) { this.hero = hero; nameText.text = hero.name; if (!InParty) { buttonText.text = "Hire (" + hero.cost + " Gold)"; } else { buttonText.text = "Remove from party"; } if (!InParty && hero.cost > PartyManager.it.GetGold()) { actionButton.interactable = false; } levelText.text = "Rarity " + hero.rarity; UnitStats stats = hero.GetStats(); strStatImage.transform.localScale = new Vector3(stats.strength / 25.0f, 1.0f, 1.0f); intStatImage.transform.localScale = new Vector3(stats.intelligence / 25.0f, 1.0f, 1.0f); dexStatImage.transform.localScale = new Vector3(stats.dexterity / 25.0f, 1.0f, 1.0f); switch (stats.GetPrimaryStat()) { case StatType.STR: GetComponent <Image>().sprite = strPanel; break; case StatType.INT: GetComponent <Image>().sprite = intPanel; break; case StatType.DEX: GetComponent <Image>().sprite = dexPanel; break; } Ability[] abilities = hero.GetAbilityController().GetAbilities(); foreach (Ability ability in abilities) { GameObject o = new GameObject(); Text text = o.AddComponent <Text>(); text.text = ability.name; text.resizeTextForBestFit = true; text.font = font; text.alignment = TextAnchor.MiddleCenter; o.transform.SetParent(abilitiesList, false); } }