예제 #1
0
    //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);
    }
예제 #2
0
    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);
        }
    }
예제 #3
0
    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;
        }
    }