private void SpawnHitTimer(Sprite sprite) { HitTimer instance = hitTimerSpawner.SpawnHitTimer(0); instance.SetSprite(sprite); instance.SetFillTime(timeToAct); }
public void Reset() { HealthClock.Start(); HitTimer.Stop(); HealTimer.Stop(); NearDeathClock.Stop(); CurrentHP = MaxHP; }
private void StopAttack() { HitTimer instance = GetComponentInChildren <HitTimer>(); if (instance != null) { instance.Cancel(); } }
public void AddDamage(float damage) { //is the player already taking damage? if (!HitTimer.HasTimeRemaining) { PreDamageAmount = CurrentHP; } //start the damage timer HitTimer.Start(HitTimeDelta); }
public override void Update(GameClock time) { base.Update(time); //update all timers HealthClock.Update(time); HitTimer.Update(time); HealTimer.Update(time); NearDeathClock.Update(time); UpdateNearDeath(); }
public HitTimer SpawnHitTimer(float xOffset) { Vector3 spawnPos = new Vector3(xOffset, 0, 0); HitTimer hitTimerInstance = null; if (hitTimerStack.Count == 0) { hitTimerInstance = Instantiate(hitTimer, transform); hitTimerInstance.SetPosition(spawnPos); hitTimerInstance.Spawner = this; } else { hitTimerInstance = hitTimerStack.Pop(); hitTimerInstance.SetPosition(spawnPos); hitTimerInstance.gameObject.SetActive(true); } return(hitTimerInstance); }
private void StartNewAttack() { curAtk = atkQueue.Dequeue(); timeSinceAttackStarted = 0; float atkSpeed = fighter.GetStat(Stat.AttackSpeed); atkSpeed = 1 / atkSpeed * 100; totalAtkTime = GetAttackStat(MonAtkStat.TotalTime, 0) * atkSpeed; atkLeadTime = GetAttackStat(MonAtkStat.LeadTime, 0) * atkSpeed; maxHitCount = GetAttackStat(MonAtkStat.HitCount, 0); Sprite[] sprites = monAtkIconDB.GetSprite(curAtk); GetComponentInParent <ActionScheduler>().StartAction(this); if (maxHitCount >= 1) { int maxEffectCount = monAtkDB.GetAttackStat(MonAtkStat.EffectID, curAtk).Length; isEffectOnHit = new bool[maxEffectCount]; for (int i = 0; i < maxEffectCount; i++) { string[] fxApply = monAtkDB.GetAttackStat(MonAtkStat.ApplyEffect, curAtk); isEffectOnHit[i] = fxApply[i] == "OnHit"; } for (int i = 0; i < maxHitCount; i++) { float newPosX = (i * 80); HitTimer instance = hitTimerSpawner.SpawnHitTimer(newPosX); hitTimers.Add(instance); instance.SetSprite(sprites[i]); Color32 atkColor = new Color32(254, 195, 30, 255); StartCoroutine(instance.EnemyBorderFill(atkLeadTime, atkColor)); } } // Set attack stats and start attack action enemy.startAttack(totalAtkTime); enemy.SetNewStatus(myName + GetAttackString(MonAtkStat.LeadText), atkLeadTime); enemy.enemyAttack -= TryAttack; enemy.enemyAttack += AttackLeadTime; }
public void ReturnToStack(HitTimer instance) { instance.gameObject.SetActive(false); hitTimerStack.Push(instance); }