public static string GetRandomName(RaceStat raceStats) { string[] possibleNames = raceStats.unitNames; int randomNameIndex = Random.Range(0, possibleNames.Length); return(possibleNames[randomNameIndex]); }
public UnitDescription ToDescription() { Enum.TryParse(unitRace, out Race race); RaceStat raceStatFound = null; foreach (RaceStat raceStat in UnitGenerator.GetAllRaces()) { if (raceStat.race == race) { raceStatFound = raceStat; } } Enum.TryParse(unitClass, out Class @class); ClassStat classStatFound = null; foreach (ClassStat classStat in UnitGenerator.GetAllClasses()) { if (classStat.clas == @class) { classStatFound = classStat; } } return(new UnitDescription(name, raceStatFound, classStatFound, abilityName, Unit.allyTag, id, experience, level, gems)); }
public static UnitDescription GenerateUnit(string unitTag) { RaceStat unitRace = GetRandomRace(unitTag); ClassStat unitClass = GetRandomClass(unitRace.race); string name = GetRandomName(unitRace); string abilityName = GetRandomAbilityName(unitClass); return(new UnitDescription(name, unitRace, unitClass, abilityName, unitTag)); }
private void Comp_Stat_Click(object sender, RoutedEventArgs e) { if (raceStatsWindow == null) { raceStatsWindow = new RaceStat(); raceStatsWindow.Show(); } raceStatsWindow.Activate(); }
public UnitDescription(Unit unit) { sprite = unit.GetSprite(); unitRace = unit.raceStats; unitClass = unit.classStat; abilityName = unit.GetAbilityName(); unitName = unit.GetName(); id = unit.id; level = unit.Level; gems = unit.GetGems(); }
/// <summary> /// Creates a new UnitDescription and attached a new id to it /// </summary> /// <param name="name"></param> /// <param name="unitRace"></param> /// <param name="unitClass"></param> /// <param name="abilityName"></param> public UnitDescription(string name, RaceStat unitRace, ClassStat unitClass, string abilityName, string unitTag, uint?id = null, uint experience = 0, uint level = 1, string[] gems = null) { unitName = name; this.unitRace = unitRace; this.unitClass = unitClass; this.abilityName = abilityName; sprite = unitRace.getSprite(unitClass.clas); if (id == null) { this.id = GetNewId(); } else { this.id = (uint)id; } this.experience = experience; this.gems = gems; this.level = level; }
public void UpdateDescription() { if (actualSlot == null) { UnitName.text = ""; UnitStats.text = ""; UnitExperience.text = ""; return; } currentDescription = actualSlot.GetCurrentUnitDescription(); SetUnitName(currentDescription.GetUnitName()); SetUnitExperience(currentDescription.GetExperience()); SetUnitLevel(currentDescription.GetLevel()); ClassStat classe = currentDescription.GetClass(); RaceStat race = currentDescription.GetRace(); //destroy previously displayed slots foreach (GameObject slot in gemSlots) { Destroy(slot); } string[] gems = currentDescription.GetGems(); gemSlots = new List <GameObject>(); currentGems = new List <Gem>(); if (ResetGemsButton) { if (GameManager.instance.gamestate == GameManager.GameState.Placement || (GameManager.instance.gamestate == GameManager.GameState.Shopping || GameManager.instance.gamestate == GameManager.GameState.Resolution) && actualSlot.GetSlotType() == InventorySlot.SlotType.Inventory) { GenerateSlots(gems); ResetGemsButton.gameObject.SetActive(true); } else { ResetGemsButton.gameObject.SetActive(false); } } uint level = currentDescription.GetLevel(); float damage = classe.damage + race.damage + 1 * (level - 1); float maxLife = classe.maxLife + race.maxLife + 10 * (int)(level - 1); float attackSpeed = classe.attackSpeed + race.attackSpeed + 0.05f * (level - 1); float moveSpeed = classe.moveSpeed + race.moveSpeed; float armor = classe.armor + race.armor + 0.05f * (level - 1); float power = 1 + 0.05f * (level - 1); int range = classe.range; float incrementStamina = classe.incrementStamina; if (currentGems.Count > 0) { foreach (Gem gem in currentGems) { if (gem.GetStatModified() == Gem.StatModified.None) { gem.InitializeStatModified(); } switch (gem.GetStatModified()) { case Gem.StatModified.Damage: damage = gem.InitGemEffect(damage); break; case Gem.StatModified.Health: maxLife = gem.InitGemEffect(maxLife); break; case Gem.StatModified.AttackSpeed: attackSpeed = gem.InitGemEffect(attackSpeed); break; case Gem.StatModified.Armor: armor = gem.InitGemEffect(armor); break; case Gem.StatModified.MovementSpeed: moveSpeed = gem.InitGemEffect(moveSpeed); break; case Gem.StatModified.Power: power = gem.InitGemEffect(power); break; } } } //get ability name and add space before every capital letter string abilityName = currentDescription.GetAbilityName(); StringBuilder abilityNameWithSpaces = new StringBuilder(abilityName.Length * 2); abilityNameWithSpaces.Append(abilityName[0]); for (int i = 1; i < abilityName.Length; i++) { if (char.IsUpper(abilityName[i]) && abilityName[i - 1] != ' ') { abilityNameWithSpaces.Append(' '); } abilityNameWithSpaces.Append(abilityName[i]); } string stats = "Classe : " + classe.name + "\n" + "Race : " + race.name + "\n" + "Capacité : " + abilityNameWithSpaces + "\n" + "Stamina générée : " + incrementStamina + "\n" + "PV Max : " + maxLife + "\n" + "Dégâts : " + Mathf.Round(damage * 100f) / 100f + "\n" + "Vitesse d'attaque : " + Mathf.Round(attackSpeed * 100f) / 100f + "\n" + "Vitesse de déplacement : " + Mathf.Round(moveSpeed * 100f) / 100f + "\n" + "Armor : " + Mathf.Round(armor * 100f) / 100f + "\n" + "Puissance : " + Mathf.Round(power * 100f) / 100f + "\n" + "Portée : " + range + "\n"; SetUnitStats(stats); }