private void ReadBombState(NetIncomingMessage msg, Player p, Bomb b) { bool active = msg.ReadBoolean(); if (active) { float remains = (float)(msg.ReadTime(false) - NetTime.Now); float px = msg.ReadFloat(); float py = msg.ReadFloat(); Direction dir = (Direction)msg.ReadByte(); float speed = msg.ReadFloat(); bool jelly = msg.ReadBoolean(); bool trigger = msg.ReadBoolean(); if (!b.isActive) { b.player = p; b.Activate(); game.Field.SetBomb(b); } b.timeRemains = remains; b.SetPos(px, py); b.SetSpeed(speed); b.SetJelly(jelly); b.SetTrigger(trigger); // TODO: jelly & trigger } else if (b.isActive) { b.Deactivate(); b.RemoveFromField(); } }
public Bomb GetNextBomb() { Bomb nextBomb = null; int activeCount = 0; for (int i = 0; i < array.Length; ++i) { Bomb bomb = array[i]; if (bomb.isActive) { if (++activeCount == maxActiveCount) { return(null); } } else { nextBomb = bomb; } } if (nextBomb != null) { nextBomb.Activate(); return(nextBomb); } return(null); }
public void CallBomb() { if (bombs > 0 && !bombing && Time.timeScale > 0) { bomb.Activate(true); bombDuration = 0; bombing = true; EventManager.TriggerEvent("Bomb"); bombs--; } }