private void Dispose(bool removeFromCache) { PlayerAdded?.Dispose(); PlayerRemoved?.Dispose(); Status?.Dispose(); CurrentPlayerId?.Dispose(); LobbyTime?.Dispose(); SocketIo.Instance.GameIsStarting -= SocketIoOnGameIsStarting; SocketIo.Instance.GameLobbyTimer -= SocketIoOnGameLobbyTimer; SocketIo.Instance.GameStarted -= SocketIoOnGameStarted; SocketIo.Instance.PlayerJoined -= SocketIoOnPlayerJoined; SocketIo.Instance.PlayerLeft -= SocketIoOnPlayerLeft; SocketIo.Instance.PlayerTurnChanged -= SocketIoOnPlayerTurnChanged; SocketIo.Instance.PropertyOwnerChanged -= SocketIoOnPropertyOwnerChanged; foreach (var player in Players) { player?.Dispose(); } foreach (var property in Properties) { property?.Dispose(); } if (removeFromCache) { _games.Remove(Id); } GC.SuppressFinalize(this); }
private void SocketIoOnPlayerTurnChanged(Player player) { CurrentPlayerId.OnNext(player.UserId); }
private void SocketIoOnGameStarted(Player firstPlayer) { CurrentPlayerId.OnNext(firstPlayer.UserId); Status.OnNext("running"); }