public void SetSlot(AbilityBase ability, IAbilitySource source, int level)
 {
     this.ability = ability;
     this.source  = source;
     abilityLevel = level;
     UpdateSlot();
 }
Beispiel #2
0
        public void MouseUp()
        {
            if (_abilitySource == null)
            {
                return;
            }

            _abilitySource.TryAssignToAbilityTarget();
            _abilitySource?.SetIsTrigger(false);
            _abilitySource = null;
            _isDragging    = false;
        }
Beispiel #3
0
        public void OnTriggerExit2D(Collider2D other)
        {
            IAbilitySource abilitySource = other.GetComponent <IAbilitySource>();

            if (abilitySource == null)
            {
                return;
            }

            _abilitySource?.UnHighlight();

            if (_abilitySource != abilitySource)
            {
                return;
            }
            _abilitySource = null;
        }
Beispiel #4
0
    public bool EquipAbility(AbilityBase ability, int slot, IAbilitySource source)
    {
        if (slot >= 3)
        {
            return(false);
        }

        if (abilitySlotList[slot] != null)
        {
            UnequipAbility(slot);
        }

        source.UnequipFromCurrentHero(ability);

        abilitySlotList[slot].SetAbilityToSlot(ability, source);

        source.OnAbilityEquip(ability, this, slot);
        UpdateActorData();
        return(true);
    }
Beispiel #5
0
        public void OnTriggerStay2D(Collider2D other)
        {
            if (_abilitySource != null)
            {
                return;
            }

            IAbilitySource abilitySource = other.GetComponent <IAbilitySource>();

            if (abilitySource == null)
            {
                return;
            }

            if (_abilitySource != null && _abilitySource != abilitySource)
            {
                _abilitySource.UnHighlight();
            }

            abilitySource.Highlight();
            _abilitySource = abilitySource;
        }
Beispiel #6
0
        public void SetAbilityToSlot(AbilityBase abilityBase, IAbilitySource source)
        {
            int layer;

            switch (abilityBase.targetType)
            {
            case AbilityTargetType.ENEMY:
                layer = LayerMask.NameToLayer("EnemyDetect");
                break;

            case AbilityTargetType.ALLY:
                layer = LayerMask.NameToLayer("AllyDetect");
                break;

            default:
                layer = LayerMask.NameToLayer("BothDetect");
                break;
            }

            Ability = new ActorAbility(abilityBase, layer);
            Ability.SetAbilitySlotNum(slot);
            this.source = source;
        }
    public void AddAbilitySlot(AbilityBase ability, IAbilitySource abilitySource, int level)
    {
        HeroUIAbilitySlot slot;

        if (AvailableSlots.Count > 0)
        {
            slot = AvailableSlots.Pop();
        }
        else
        {
            slot = Instantiate(SlotPrefab, transform);
        }
        slot.gameObject.SetActive(true);
        SlotsInUse.Push(slot);

        slot.SetSlot(ability, abilitySource, level);

        if (ability == null)
        {
            slot.infoText.text = "Remove Ability From Slot";
            return;
        }
    }
Beispiel #8
0
    public bool UnequipAbility(int slot)
    {
        if (slot >= 3)
        {
            return(false);
        }

        AbilitySlot abilitySlot = abilitySlotList[slot];

        if (abilitySlot.Ability == null)
        {
            return(false);
        }

        IAbilitySource source = abilitySlot.source;

        source.OnAbilityUnequip(abilitySlot.Ability.abilityBase, this, slot);

        abilitySlot.Ability.ClearTriggeredEffects(this, abilitySlot.Ability.abilityBase.idName + slot);

        abilitySlot.ClearAbility();
        UpdateActorData();
        return(true);
    }
Beispiel #9
0
 public void ClearAbility()
 {
     Ability = null;
     source  = null;
 }