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)); } }
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)); } }
public IEnumerator <YieldInstruction> ReleaseHitboxes(Character user, List <Hitbox> hitboxes, HitboxEffect hitboxEffect, HitboxEffect tileEffect) { yield return(CoroutineManager.Instance.StartCoroutine(ReleaseHitboxes(user, hitboxes, Hitboxes, hitboxEffect, tileEffect))); }
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))); }
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); } }