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; } } }
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()); } }
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; } } }
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(); } }
void Start() { TargetController = FindObjectOfType <TargetController>(); MagicUi = FindObjectOfType <MagicUI>(); }