/// <summary> /// Handles a client players updated camera values to be stored in their ClientConnection, until /// they either leave or the server is being shutdown, to then be backed up into the database /// </summary> /// <param name="ClientID">NetworkID of the target client</param> /// <param name="Packet">Packet containing the information were after</param> public static void HandlePlayerCameraUpdate(int ClientID, ref NetworkPacket Packet) { //Log what we are doing here CommunicationLog.LogIn(ClientID + " Player Camera Update"); //Extract all the values from the packet data float Zoom = Packet.ReadFloat(); float XRotation = Packet.ReadFloat(); float YRotation = Packet.ReadFloat(); //Try getting the ClientConnection object who sent this packet to us ClientConnection Client = ConnectionManager.GetClient(ClientID); //Display an error and exit from the function if they couldnt be found if (Client == null) { MessageLog.Print("ERROR: " + ClientID + " ClientConnection object couldnt be found, Player Camera Update could not be performed."); return; } //Store them in the ClientConnection object Client.Character.CameraZoom = Zoom; Client.Character.CameraXRotation = XRotation; Client.Character.CameraYRotation = YRotation; }
//Handles spawning our local player character back into the game world public static void HandleLocalPlayerRespawn(ref NetworkPacket Packet) { Vector3 SpawnPos = Packet.ReadVector3(); Quaternion SpawnRot = Packet.ReadQuaternion(); float CameraZoom = Packet.ReadFloat(); float CameraX = Packet.ReadFloat(); float CameraY = Packet.ReadFloat(); PlayerManager.Instance.RespawnLocalPlayer(SpawnPos, SpawnRot, CameraZoom, CameraX, CameraY); }
//Retrives values for an account login request public static NetworkPacket GetValuesPlayerCameraUpdate(NetworkPacket ReadFrom) { NetworkPacket Packet = new NetworkPacket(); Packet.WriteType(ClientPacketType.PlayerCameraUpdate); Packet.WriteFloat(ReadFrom.ReadFloat()); Packet.WriteFloat(ReadFrom.ReadFloat()); Packet.WriteFloat(ReadFrom.ReadFloat()); return(Packet); }
//Reads packet values for LocalPlayerRespawn public static NetworkPacket GetValuesLocalPlayerRespawn(NetworkPacket ReadFrom) { NetworkPacket Packet = new NetworkPacket(); Packet.WriteType(ServerPacketType.LocalPlayerRespawn); Packet.WriteVector3(ReadFrom.ReadVector3()); Packet.WriteQuaternion(ReadFrom.ReadQuaternion()); Packet.WriteFloat(ReadFrom.ReadFloat()); Packet.WriteFloat(ReadFrom.ReadFloat()); Packet.WriteFloat(ReadFrom.ReadFloat()); return(Packet); }
public static NetworkPacket GetValuesCharacterDataReply(NetworkPacket ReadFrom) { NetworkPacket Packet = new NetworkPacket(); Packet.WriteType(ServerPacketType.CharacterDataReply); int CharacterCount = ReadFrom.ReadInt(); Packet.WriteInt(CharacterCount); for (int i = 0; i < CharacterCount; i++) { Packet.WriteString(ReadFrom.ReadString()); Packet.WriteVector3(ReadFrom.ReadVector3()); Packet.WriteQuaternion(ReadFrom.ReadQuaternion()); Packet.WriteFloat(ReadFrom.ReadFloat()); Packet.WriteFloat(ReadFrom.ReadFloat()); Packet.WriteFloat(ReadFrom.ReadFloat()); Packet.WriteInt(ReadFrom.ReadInt()); Packet.WriteInt(ReadFrom.ReadInt()); Packet.WriteBool(ReadFrom.ReadBool()); } return(Packet); }
public static void HandleCharacterDataReply(ref NetworkPacket Packet) { //Log what we are doing here Log.In("Handling Character Data Reply."); //Read the number of characters data that has been sent to us int CharacterCount = Packet.ReadInt(); //If there arent any characters in our account then we proceed straight to the character creation screen if (CharacterCount == 0) { InterfaceManager.Instance.SetObjectActive("Loading Characters Panel", false); InterfaceManager.Instance.SetObjectActive("Character Create Panel", true); return; } //Otherwise we move on to the character select screen InterfaceManager.Instance.SetObjectActive("Loading Characters Panel", false); InterfaceManager.Instance.SetObjectActive("Character Select Panel", true); //Loop through and read the data of each character provided for (int i = 0; i < CharacterCount; i++) { //Create and store each characters info into a new CharacterData object CharacterData Data = new CharacterData(); Data.Name = Packet.ReadString(); Data.Position = Packet.ReadVector3(); Data.Rotation = Packet.ReadQuaternion(); Data.CameraZoom = Packet.ReadFloat(); Data.CameraXRotation = Packet.ReadFloat(); Data.CameraYRotation = Packet.ReadFloat(); Data.CurrentHealth = Packet.ReadInt(); Data.MaxHealth = Packet.ReadInt(); Data.IsAlive = Packet.ReadBool(); //Store each characters data to be accessed later if (i == 0) { GameState.Instance.FirstCharacter = Data; } else if (i == 1) { GameState.Instance.SecondCharacter = Data; } else { GameState.Instance.ThirdCharacter = Data; } //Set each character as selectable from the character select screen string InfoObjectName = "Character Info " + (i + 1); GameObject InfoObject = GameObject.Find(InfoObjectName); if (InfoObject == null) { Log.Chat("Unable to find " + InfoObjectName); } else { InfoObject.GetComponent <Text>().text = Data.Name; } } }