public void DestroyGameLogic() { IsInitted = false; PlayerPaddles.Clear(); ArenaBalls.Clear(); UpdatableRoot.Clear(); ArenaObjects.Clear(); LocalPaddle = null; PlayerCount = 0; }
public void OnReceivedBallPowerUpMessage(byte ballId, byte powerUpId, PoweredUpData data) { if (ArenaObjects.TryGetValue(powerUpId, out ArenaObject pwp)) { var ball = ArenaBalls[ballId]; var poweredUpBall = ball.ApplyPowerup(data); DoAfterGameLoop.Add(() => { ArenaBalls[ball.GetId()] = poweredUpBall; }); // remove after a duration SafeInvoke.Instance.DelayedInvoke(data.GetDurationOnBall(), () => { RemoveBallPowerUp(poweredUpBall, data); }); (pwp as PowerUp).Use(); } }
public void OnArenaObjectCreated(ArenaObject obj) { byte id = idTmp++; UpdatableRoot.GetChild(ObjectBranchId).Add(id, obj); ArenaObjects.Add(id, obj); obj.SetId(id); if (Mediator.GetBool("IsRoomMaster", null)) { if (obj is Obstacle) { Mediator.Notify("SendObstacleSpawnedMessage", new object[] { id, obj }); } else if (obj is PowerUp) { Mediator.Notify("SendPowerupSpawnedMessage", new object[] { id, obj }); } } }
public void PowerUpSpawnedMessageReceived(byte id, PowerUp powerUp, PoweredUpData data) { powerUp.Init(GameData.PowerupColors[powerUp.Type], data); ArenaObjects.Add(id, powerUp); powerUp.SetId(id); }
public void ObstacleSpawnedMessageReceived(byte id, Obstacle obstacle) { obstacle.Init(GameData.ObstacleColors[obstacle.Type]); ArenaObjects.Add(id, obstacle); obstacle.SetId(id); }
public void OnArenaObjectExpired(byte id) { DoAfterGameLoop.Add(() => ArenaObjects.Remove(id)); }