void OnTriggerEnter(Collider other)
    {
        RegenerationArea regenerationArea = other.gameObject.GetComponent <RegenerationArea>();

        if (regenerationArea != null)
        {
            PlayerController player     = gameObject.GetComponent <PlayerController>();
            Damageable       damageable = gameObject.GetComponent <Damageable>();
            if (player != null && damageable != null)
            {
                if (_magicUi == null)
                {
                    _magicUi = FindObjectOfType <MagicUI>();
                }

                if (regenerationArea.CanRegenerate)
                {
                    _originalInvulnerabiltyTime = damageable.invulnerabiltyTime;
                    regenerationArea.Regenerate(damageable);
                }

                _magicUi.canUseMagic      = false;
                player.canAttack          = false;
                damageable.isInvulnerable = true;
            }
        }
    }
示例#2
0
    public void Regenerate(Damageable damageable)
    {
        if (CanRegenerate)
        {
            if (_magicUi == null)
            {
                _magicUi = FindObjectOfType <MagicUI>();
            }

            if (damageable.currentHitPoints < damageable.maxHitPoints)
            {
                damageable.Heal(0, 1);
                damageable.invulnerabiltyTime = _cooldown;
            }

            if (Random.Range(0, 3) == 1)
            {
                damageable.Heal(1, 0);
            }

            IList <Magic.MagicType> magicList = _magicUi.GetMagicsThatCanBeIncreased();
            if (magicList.Any())
            {
                int index = Random.Range(0, magicList.Count);
                _magicUi.IncreaseMagic(magicList[index]);
            }

            StartCoroutine(RegenerationWaitCorutine());
        }
    }
示例#3
0
        internal bool HasMagic()
        {
            if (MagicUi == null)
            {
                MagicUi = FindObjectOfType <MagicUI>();
            }

            return(MagicUi.HasMagic());
        }
    void OnTriggerExit(Collider other)
    {
        if (other.gameObject.tag == "RegenerationArea")
        {
            PlayerController player     = gameObject.GetComponent <PlayerController>();
            Damageable       damageable = gameObject.GetComponent <Damageable>();
            if (player != null && damageable != null)
            {
                if (_magicUi == null)
                {
                    _magicUi = FindObjectOfType <MagicUI>();
                }

                damageable.invulnerabiltyTime = _originalInvulnerabiltyTime;
                _magicUi.canUseMagic          = true;
                player.canAttack          = true;
                damageable.isInvulnerable = false;
            }
        }
    }
示例#5
0
        public void CastMagic()
        {
            if (MagicUi == null)
            {
                MagicUi = FindObjectOfType <MagicUI>();
            }

            EnemyController target = TargetController._target;

            if (target != null)
            {
                Vector3 position = new Vector3(target.transform.position.x, target.transform.position.y + 10, target.transform.position.z);

                switch (MagicUi.GetCurrentMagic())
                {
                case Magic.MagicType.Fire:
                {
                    Instantiate(Fire, position, Fire.transform.rotation);
                    break;
                }

                case Magic.MagicType.Blizzard:
                {
                    Instantiate(Blizzard, position, Blizzard.transform.rotation);
                    break;
                }

                case Magic.MagicType.Lightning:
                {
                    Instantiate(Lightning, position, Lightning.transform.rotation);
                    break;
                }
                }
                MagicUi.DecreaseMagic();
            }
        }
示例#6
0
 void Start()
 {
     TargetController = FindObjectOfType <TargetController>();
     MagicUi          = FindObjectOfType <MagicUI>();
 }