//todo might move this out of here and just have in entity private Entity.AbilityDictionary BuildAbilityDictionary() { var abilities = new Entity.AbilityDictionary(); var freeAbility = AbilityStore.CreateAbility(_selectedFreeAbility, _player); if (freeAbility != null) { abilities.Add(freeAbility.Name, freeAbility); } var startingBodyPartAbilities = (from partAbilities in _playerTemplate.Parts.Select(AbilityStore.GetAbilitiesByBodyPart) where partAbilities != null from ability in partAbilities where ability.StartingAbility select ability).ToList(); foreach (var ability in startingBodyPartAbilities) { if (abilities.ContainsKey(ability.Name)) { continue; } abilities.Add(ability.Name, AbilityStore.CreateAbility(ability, _player)); } var startingBackgroundAbilities = AbilityStore.GetAbilitiesByBackground(_selectedBackground); foreach (var ability in startingBackgroundAbilities) { if (abilities.ContainsKey(ability.Name) || !ability.StartingAbility) { continue; } abilities.Add(ability.Name, AbilityStore.CreateAbility(ability, _player)); } var startingDamageTypeAbilities = AbilityStore.GetAllDamageTypeAbilities(); foreach (var damageType in startingDamageTypeAbilities.Keys) { foreach (var ability in startingDamageTypeAbilities[damageType]) { if (abilities.ContainsKey(ability.Name) || !ability.StartingAbility) { continue; } abilities.Add(ability.Name, AbilityStore.CreateAbility(ability, _player)); } } return(abilities); }
private void LoadAbilitiesForAbilitySelectScreen() { GlobalHelper.DestroyAllChildren(AbilityCategoryParent); var bodyPartAbilities = (from partAbilities in _playerTemplate.Parts.Select(AbilityStore.GetAbilitiesByBodyPart) where partAbilities != null from ability in partAbilities where !ability.StartingAbility select ability).ToList(); if (bodyPartAbilities.Count > 0) { PopulateAbilityCategory("Species", bodyPartAbilities); } var backgroundAbilities = AbilityStore.GetAbilitiesByBackground(_selectedBackground); foreach (var ability in backgroundAbilities.ToArray().Where(ability => ability.StartingAbility)) { backgroundAbilities.Remove(ability); } if (backgroundAbilities.Count > 0) { PopulateAbilityCategory(_selectedBackground.Name, backgroundAbilities); } var damageTypeAbilities = AbilityStore.GetAllDamageTypeAbilities(); if (damageTypeAbilities.Count < 1) { return; } foreach (var damageType in damageTypeAbilities) { var abilityList = new List <AbilityTemplate>(damageType.Value); foreach (var ability in abilityList.ToArray().Where(ability => ability.StartingAbility)) { abilityList.Remove(ability); } if (abilityList.Count < 1) { continue; } PopulateAbilityCategory(damageType.Key.ToString(), abilityList); } }
private void LoadStartingAbilitiesForBackground(CharacterBackground background) { GlobalHelper.DestroyAllChildren(BackgroundStartingAbilityParent); var backgroundAbilities = AbilityStore.GetAbilitiesByBackground(background); foreach (var ability in backgroundAbilities) { var instance = Instantiate(StartingAbilityPrefab, StartingAbilityPrefab.transform.position, Quaternion.identity); instance.transform.SetParent(BackgroundStartingAbilityParent); instance.transform.GetComponentsInChildren <TextMeshProUGUI>()[0].text = GlobalHelper.CapitalizeAllWords(ability.Name); instance.transform.GetComponentsInChildren <TextMeshProUGUI>()[1].text = ability.Description; } }