Esempio n. 1
0
        private void SpawnHitTimer(Sprite sprite)
        {
            HitTimer instance = hitTimerSpawner.SpawnHitTimer(0);

            instance.SetSprite(sprite);
            instance.SetFillTime(timeToAct);
        }
Esempio n. 2
0
 public void Reset()
 {
     HealthClock.Start();
     HitTimer.Stop();
     HealTimer.Stop();
     NearDeathClock.Stop();
     CurrentHP = MaxHP;
 }
Esempio n. 3
0
        private void StopAttack()
        {
            HitTimer instance = GetComponentInChildren <HitTimer>();

            if (instance != null)
            {
                instance.Cancel();
            }
        }
Esempio n. 4
0
        public void AddDamage(float damage)
        {
            //is the player already taking damage?
            if (!HitTimer.HasTimeRemaining)
            {
                PreDamageAmount = CurrentHP;
            }

            //start the damage timer
            HitTimer.Start(HitTimeDelta);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 7
0
        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);
 }