public void PlayerList(PlayerListMessage message) { Player currentPlayer = _websocket.GetCurrentSessionPlayer(); Assert.ThrowIfNull(currentPlayer, "requires a user session", _websocket); PlayerListingMessage playerListingMessage = new PlayerListingMessage(); playerListingMessage.Players = Server.Instance.Players; _websocket.Broadcast(playerListingMessage, null, true); }
public void PlayerRename(PlayerRenameMessage message) { Player currentPlayer = _websocket.GetCurrentSessionPlayer(); Assert.ThrowIfNull(currentPlayer, "requires a user session", _websocket); currentPlayer.Name = message.Name.Truncate(50); _server.playerRepository.UpdatePlayer(currentPlayer); PlayerListingMessage playerListingMessage = new PlayerListingMessage(); playerListingMessage.Players = Server.Instance.Players; _websocket.Broadcast(playerListingMessage, null, true); }
void OnPlayerListing(PlayerListingMessage message) { Console.WriteLine("Players Online:"); Console.WriteLine("---------------"); foreach (Player player in message.Players) { Console.Write($"Player {player.Name}"); if (player.GameInstanceRef != null) { Console.WriteLine($" in game instance {JsonConvert.SerializeObject(player)}"); } else { Console.WriteLine(" not in a game instance"); } } ; }
public void OnStateFluxPlayerListing(PlayerListingMessage message) { ClearPlayerListView(); if (_playersPanelContent == null) { return; } foreach (Player p in message.Players) { _players.Add(p); GameObject row = GameObject.Instantiate(playerRowPrefab, _playersPanelContent.transform); var textMeshPro = row.GetComponentInChildren <TextMeshProUGUI>(); textMeshPro.text = p.Name; if (p.Color != null) { textMeshPro.color = StateFluxTypeConvert.Convert(p.Color); } } }
protected override void OnClose(CloseEventArgs closeEventArgs) { try { Player currentPlayer = GetCurrentSessionPlayer(); if (currentPlayer == null) { return; } LogMessage($"Connection closed"); IEnumerable <Player> players = Server.Instance.Players; var playerListingMessage = new PlayerListingMessage { Players = Server.Instance.Players.Where(p => p.SessionData.SessionId != currentPlayer.SessionData.SessionId).ToList() }; Broadcast(playerListingMessage, null, false); if (currentPlayer.GameInstanceRef != null) { // player is in a game instance! var gameInstanceStoppedMessage = new GameInstanceStoppedMessage { GameInstance = currentPlayer.GameInstanceRef, Host = Server.Instance.LookupInstance(currentPlayer.GameInstanceRef.Id).HostPlayer }; Broadcast(gameInstanceStoppedMessage, null, false); LogMessage($"Broadcasting GameInstanceStopped for game instance {currentPlayer.GameInstanceRef.GameName}:{currentPlayer.GameInstanceRef.Name}"); } Server.Instance.RemoveGameInstance(currentPlayer); Server.Instance.Players.Remove(currentPlayer); } finally { base.OnClose(closeEventArgs); } }
IEnumerator ReceiveAndDispatchMessages() { while (!connection.SocketOpenWithIdentity) { foreach (var listener in listeners) { listener.OnStateFluxWaitingToConnect(); } yield return(new WaitForSeconds(1)); } while (true) { openWithIdentity = connection.SocketOpenWithIdentity; if (!connected && openWithIdentity) { connected = true; userName = connection.UserName; foreach (var listener in listeners) { listener.OnStateFluxConnect(); } } else if (connected && !openWithIdentity) { connected = false; userName = ""; foreach (var listener in listeners) { listener.OnStateFluxDisconnect(); } } bool draining = true; int drainingCount = 50; while (draining && (drainingCount--) > 0) { StateFlux.Model.Message message = connection.ReceiveResponse(); draining = (message != null); if (draining) { if (message.MessageType == MessageTypeNames.HostStateChanged) { // FIXME: convert all the others to linq method ForEach listeners.ForEach(l => l.OnStateFluxHostStateChanged((HostStateChangedMessage)message)); } else if (message.MessageType == MessageTypeNames.MiceChanged) { MiceChangedMessage msg = (MiceChangedMessage)message; foreach (var listener in listeners) { listener.OnStateFluxMiceChanged(msg); } } else if (message.MessageType == MessageTypeNames.HostCommandChanged) { HostCommandChangedMessage msg = (HostCommandChangedMessage)message; foreach (var listener in listeners) { listener.OnStateFluxHostCommandChanged(msg); } } else if (message.MessageType == MessageTypeNames.GuestCommandChanged) { GuestCommandChangedMessage msg = (GuestCommandChangedMessage)message; foreach (var listener in listeners) { listener.OnStateFluxGuestCommandChanged(msg); } } else if (message.MessageType == MessageTypeNames.GuestInputChanged) { GuestInputChangedMessage msg = (GuestInputChangedMessage)message; foreach (var listener in listeners) { listener.OnStateFluxGuestInputChanged(msg); } } else if (message.MessageType == MessageTypeNames.PlayerListing) { PlayerListingMessage msg = (PlayerListingMessage)message; foreach (var listener in listeners) { listener.OnStateFluxPlayerListing(msg); } } else if (message.MessageType == MessageTypeNames.GameInstanceCreated) { GameInstanceCreatedMessage msg = (GameInstanceCreatedMessage)message; foreach (var listener in listeners) { listener.OnStateFluxGameInstanceCreated(msg); } } else if (message.MessageType == MessageTypeNames.GameInstanceListing) { GameInstanceListingMessage msg = (GameInstanceListingMessage)message; foreach (var listener in listeners) { listener.OnStateFluxGameInstanceListing(msg); } } else if (message.MessageType == MessageTypeNames.GameInstanceJoined) { GameInstanceJoinedMessage msg = (GameInstanceJoinedMessage)message; foreach (var listener in listeners) { listener.OnStateFluxGameInstanceJoined(msg); } } else if (message.MessageType == MessageTypeNames.GameInstanceStart) { GameInstanceStartMessage msg = (GameInstanceStartMessage)message; Debug.Log($"Game start message, host is {msg.Host.Name}"); Debug.Log($"Current player name is {connection.CurrentPlayer.Name}"); isHosting = (msg.Host.Name == connection.CurrentPlayer.Name); foreach (var listener in listeners) { listener.OnStateFluxGameInstanceStart(msg); } } else if (message.MessageType == MessageTypeNames.GameInstanceStopped) { GameInstanceStoppedMessage msg = (GameInstanceStoppedMessage)message; Debug.Log($"Game stopped message, host is {msg.Host.Name}"); Debug.Log($"Current player name is {connection.CurrentPlayer.Name}"); isHosting = (msg.Host.Name == connection.CurrentPlayer.Name); foreach (var listener in listeners) { listener.OnStateFluxGameInstanceStopped(msg); } } else if (message.MessageType == MessageTypeNames.GameInstanceLeft) { GameInstanceLeftMessage msg = (GameInstanceLeftMessage)message; Debug.Log($"Player {msg.Player.Name} left {msg.GameName}:{msg.InstanceName}"); Debug.Log($"Current player name is {connection.CurrentPlayer.Name}"); foreach (var listener in listeners) { listener.OnStateFluxGameInstanceLeft(msg); } } else if (message.MessageType == MessageTypeNames.ChatSaid) { ChatSaidMessage msg = (ChatSaidMessage)message; foreach (var listener in listeners) { listener.OnStateFluxChatSaid(msg); } } else if (message.MessageType == MessageTypeNames.ServerError) { ServerErrorMessage msg = (ServerErrorMessage)message; foreach (var listener in listeners) { listener.OnStateFluxServerError(msg); } } else { foreach (var listener in listeners) { listener.OnStateFluxOtherMessage(message); } } } } yield return(null); } }
public void OnStateFluxPlayerListing(PlayerListingMessage message) { }