Пример #1
0
        public void SetAbility(Ability ability, bool shouldBePresent, AbilityViewState newState)
        {
            bool alreadyPresent = _abilityViewsByOrder[ability.Order] != null;

            if (alreadyPresent && !shouldBePresent)
            {
                AbilityView viewToRemove = _abilityViewsByOrder[ability.Order];
                _abilityViewsByOrder[ability.Order] = null;
                PoolingManager.Free(PoolingManager.AbilityView, viewToRemove.gameObject);
            }
            else if (!alreadyPresent && shouldBePresent)
            {
                AbilityView newView = PoolingManager.Fetch <AbilityView>(PoolingManager.AbilityView, Vector3.zero,
                                                                         Quaternion.identity, transform);
                _abilityViewsByOrder[ability.Order] = newView;
                newView.InitializeWith(ability, newState);

                AdjustViewOrder(ability, newView);
            }
            else if (alreadyPresent)
            {
                AbilityView viewToChange = _abilityViewsByOrder[ability.Order];
                viewToChange.UpdateForState(newState);
            }
        }
Пример #2
0
        public void InitializeWith(Ability ability, AbilityViewState initialState)
        {
            Ability = ability;

            string keyCodeAsString = Ability.KeyCode.ToString();
            string label           = keyCodeAsString.StartsWith("Alpha") ? keyCodeAsString.Substring(5) : keyCodeAsString;

            Label.text  = label;
            Frame.color = Ability.BackgroundColor;
            Icon.sprite = Ability.Sprite;

            UpdateForState(initialState);
        }
Пример #3
0
        public void UpdateForState(AbilityViewState newState)
        {
            if (newState == State)
            {
                return;
            }
            State = newState;

            if (newState == AbilityViewState.Unusable)
            {
                Frame.color *= Color.gray;
                Icon.color  *= Color.gray;
                Label.color *= Color.gray;
            }
            else if (newState == AbilityViewState.Usable)
            {
                Frame.color = Ability.BackgroundColor;
                Icon.color  = Color.white;
                Label.color = Color.white;
            }
        }