internal void HandleHitByMonster(Message message) { HitByMonserMessage hitByMonserMessage = (HitByMonserMessage)message; Menu.Singleton.gameWindow.OutputText(lobby.players[hitByMonserMessage.PlayerID].PlayerTextWithColorTag() + " was hit by a monster, current health is " + hitByMonserMessage.newHP); if (hitByMonserMessage.PlayerID == lobby.You.Key) { Menu.Singleton.gameWindow.UpdateHP(hitByMonserMessage.newHP); } }
public void Update() { networkJobHandle.Complete(); if (!connection.IsCreated) { return; } DataStreamReader reader; NetworkEvent.Type cmd; while ((cmd = connection.PopEvent(networkDriver, out reader)) != NetworkEvent.Type.Empty) { if (cmd == NetworkEvent.Type.Connect) { Debug.Log("Connected to server"); } else if (cmd == NetworkEvent.Type.Data) { var messageType = (Message.MessageType)reader.ReadUShort(); Debug.Log("Client Received: " + messageType + " from Host"); Message message = null; switch (messageType) { case Message.MessageType.None: break; case Message.MessageType.NewPlayer: message = new NewPlayerMessage(); break; case Message.MessageType.Welcome: message = new WelcomeMessage(); break; case Message.MessageType.RequestDenied: message = new RequestDeniedMessage(); break; case Message.MessageType.PlayerLeft: message = new PlayerLeftMessage(); break; case Message.MessageType.StartGame: message = new StartGameMessage(); break; case Message.MessageType.PlayerTurn: message = new PlayerTurnMessage(); break; case Message.MessageType.RoomInfo: message = new RoomInfoMessage(); break; case Message.MessageType.PlayerEnterRoom: message = new PlayerEnterRoomMessage(); break; case Message.MessageType.PlayerLeaveRoom: message = new PlayerLeaveRoomMessage(); break; case Message.MessageType.ObtainTreasure: message = new ObtainTreasureMessage(); break; case Message.MessageType.HitMonster: message = new HitMonserMessage(); break; case Message.MessageType.HitByMonster: message = new HitByMonserMessage(); break; case Message.MessageType.PlayerDefends: message = new PlayerDefendsMessage(); break; case Message.MessageType.PlayerLeftDungeon: message = new PlayerLeftDungeonMessage(); break; case Message.MessageType.PlayerDies: message = new PlayerDiesMessage(); break; case Message.MessageType.EndGame: break; default: break; } if (message != null) { message.DeserializeObject(ref reader); receivedMessagesQueue.Enqueue(message); } } else if (cmd == NetworkEvent.Type.Disconnect) { Debug.Log("Disconnected from server"); connection = default; } } ProcessMessagesQueue(); if (Time.time - lastSendTime > STAY_ALIVE_AFTER_SECONDS) { SendMessage(new NoneMessage()); } networkJobHandle = networkDriver.ScheduleUpdate(); }