コード例 #1
0
        public static Vector3 getEffectColour(HitboxEffect t)
        {
            switch (t)
            {
            case HitboxEffect.Normal: return(new Vector3(0xaf, 0xaf, 0x7f));

            case HitboxEffect.None: return(new Vector3(0x7f, 0x7f, 0x7f));

            case HitboxEffect.Slash: return(new Vector3(0xdf, 0xdf, 0xdf));

            case HitboxEffect.Electric: return(new Vector3(0xff, 0xff, 0x7f));

            case HitboxEffect.Freezing: return(new Vector3(0x7f, 0xbf, 0xff));

            case HitboxEffect.Flame: return(new Vector3(0xff, 0x3f, 0x00));

            case HitboxEffect.Coin: return(new Vector3(0xdf, 0xdf, 0x00));

            case HitboxEffect.Reverse: return(new Vector3(0x7f, 0xdf, 0xdf));

            case HitboxEffect.Slip: return(new Vector3(0x7f, 0x7f, 0x00));

            case HitboxEffect.Sleep: return(new Vector3(0xff, 0x3f, 0xff));

            case HitboxEffect.Bury: return(new Vector3(0x7f, 0x00, 0x00));

            case HitboxEffect.Stun: return(new Vector3(0xbf, 0x00, 0x00));

            case HitboxEffect.Flower: return(new Vector3(0x7f, 0x9f, 0x00));

            case HitboxEffect.Grass: return(new Vector3(0x00, 0x7f, 0x00));

            case HitboxEffect.Water: return(new Vector3(0x00, 0x00, 0xff));

            case HitboxEffect.Darkness: return(new Vector3(0x3f, 0x00, 0x3f));

            case HitboxEffect.Paralyze: return(new Vector3(0xbf, 0xbf, 0x3f));

            case HitboxEffect.Aura: return(new Vector3(0x00, 0x7f, 0xff));

            case HitboxEffect.Plunge: return(new Vector3(0x3f, 0x00, 0x00));

            case HitboxEffect.Down: return(new Vector3(0x5f, 0x5f, 0x5f));

            case HitboxEffect.Flinchless: return(new Vector3(0x3f, 0x3f, 0x3f));

            default: return(new Vector3(0x7f, 0x7f, 0x7f));
            }
        }
コード例 #2
0
        public IEnumerator <YieldInstruction> ProcessHitQueue(List <Hitbox> hitboxes, HitboxEffect burstEffect, HitboxEffect tileEffect)
        {
            //set the NextStep to update the hit queue; aka call this method again on next (available) update
            //stop doing it only if, for all hitboxes, everything has been hit and it's "done"
            //assume none of the hitboxes are blocking
            while (true)
            {
                StablePriorityQueue <int, HitboxHit> hitTargets = new StablePriorityQueue <int, HitboxHit>();

                foreach (Hitbox hitbox in hitboxes)
                {
                    hitbox.UpdateHitQueue(hitTargets);
                }

                //hit each target
                while (hitTargets.Count > 0)
                {
                    HitboxHit tile = hitTargets.Dequeue();
                    if (tile.Explode)
                    {
                        yield return(CoroutineManager.Instance.StartCoroutine(burstEffect(tile.Loc)));
                    }
                    else
                    {
                        yield return(CoroutineManager.Instance.StartCoroutine(tileEffect(tile.Loc)));
                    }
                }

                bool allDone = true;
                foreach (Hitbox hitbox in hitboxes)
                {
                    if (!hitbox.ProcessesDone())
                    {
                        allDone = false;
                        break;
                    }
                }
                if (allDone)
                {
                    yield break;
                }

                yield return(new WaitForFrames(1));
            }
        }
コード例 #3
0
 public IEnumerator <YieldInstruction> ReleaseHitboxes(Character user, List <Hitbox> hitboxes, HitboxEffect hitboxEffect, HitboxEffect tileEffect)
 {
     yield return(CoroutineManager.Instance.StartCoroutine(ReleaseHitboxes(user, hitboxes, Hitboxes, hitboxEffect, tileEffect)));
 }
コード例 #4
0
        public IEnumerator <YieldInstruction> ReleaseHitboxes(Character user, List <Hitbox> hitboxes, List <Hitbox> hitboxTo, HitboxEffect hitboxEffect, HitboxEffect tileEffect)
        {
            foreach (Hitbox hitbox in hitboxes)
            {
                //have all hitboxes pre-calculate their targets
                hitbox.PreCalculateAllTargets();
                hitbox.PreCalculateTileEmitters();
                //add the hitboxes to the screen
                hitboxTo.Add(hitbox);
            }

            yield return(new WaitForFrames(GameManager.Instance.ModifyBattleSpeed(20, user.CharLoc, Settings.BattleSpeed.Slow)));

            //set the NextStep to update the hit queue
            //this means that the hit queue will be checked at every frame if all events are clear
            //meanwhile, the update function can continue counting total time to keep subsequent hits consistent
            yield return(CoroutineManager.Instance.StartCoroutine(ProcessHitQueue(hitboxes, hitboxEffect, tileEffect)));
        }
コード例 #5
0
 public static Vector3 GetEffectColor(HitboxEffect t)
 {
     switch (t)
     {
         case HitboxEffect.Normal: return new Vector3(0xaf, 0xaf, 0x7f);
         case HitboxEffect.None: return new Vector3(0x7f, 0x7f, 0x7f);
         case HitboxEffect.Slash: return new Vector3(0xdf, 0xdf, 0xdf);
         case HitboxEffect.Electric: return new Vector3(0xff, 0xff, 0x7f);
         case HitboxEffect.Freezing: return new Vector3(0x7f, 0xbf, 0xff);
         case HitboxEffect.Flame: return new Vector3(0xff, 0x3f, 0x00);
         case HitboxEffect.Coin: return new Vector3(0xdf, 0xdf, 0x00);
         case HitboxEffect.Reverse: return new Vector3(0x7f, 0xdf, 0xdf);
         case HitboxEffect.Slip: return new Vector3(0x7f, 0x7f, 0x00);
         case HitboxEffect.Sleep: return new Vector3(0xff, 0x3f, 0xff);
         case HitboxEffect.Bury: return new Vector3(0x7f, 0x00, 0x00);
         case HitboxEffect.Stun: return new Vector3(0xbf, 0x00, 0x00);
         case HitboxEffect.Flower: return new Vector3(0x7f, 0x9f, 0x00);
         case HitboxEffect.Grass: return new Vector3(0x00, 0x7f, 0x00);
         case HitboxEffect.Water: return new Vector3(0x00, 0x00, 0xff);
         case HitboxEffect.Darkness: return new Vector3(0x3f, 0x00, 0x3f);
         case HitboxEffect.Paralyze: return new Vector3(0xbf, 0xbf, 0x3f);
         case HitboxEffect.Aura: return new Vector3(0x00, 0x7f, 0xff);
         case HitboxEffect.Plunge: return new Vector3(0x3f, 0x00, 0x00);
         case HitboxEffect.Down: return new Vector3(0x5f, 0x5f, 0x5f);
         case HitboxEffect.Flinchless: return new Vector3(0x3f, 0x3f, 0x3f);
         default: return new Vector3(0x7f, 0x7f, 0x7f);
     }
 }