public void addPlayer(bool local, Vector2 center, CarType carType, CarFrontType carFrontType, AbilityType abilityType, int objectID, OnlinePlayer onlinePlayer) { Player player = new Player(onlinePlayer.clientID == ID_Manager.Instance.ClientNumber, this, center, carType, carFrontType, abilityType, objectID, onlinePlayer); players.Add(player); addEntity(player, local); if (onlinePlayer.clientID == ID_Manager.Instance.ClientNumber) { localPlayers.Add(player); } }
public void RemoteAddPlayer(int clientID, Vector2 center, int objectID, CarType carType, CarFrontType carFront, AbilityType abilityType, OnlinePlayer onlinePlayer) { addPlayer(false, center, carType, carFront, abilityType, objectID, onlinePlayer); }
public void ParseMessage(NetIncomingMessage im) { //Parse and Apply all Changes var del = im.ReadByte(); var type = im.ReadByte(); CarGoServer.ServerData serverData = new CarGoServer.ServerData(); switch ((MessageType)type) { case MessageType.GameState: GameState newState = (GameState)im.ReadByte(); StateMachine.Instance.RemoteChangeState(newState); //Update GameState break; case MessageType.ObjectUpdate: var objectMessageType = (ObjectMessageType)im.ReadByte(); var objectID = im.ReadInt32(); Vector2 center; int clientID; switch (objectMessageType) { case ObjectMessageType.PlayerSpawn: clientID = im.ReadInt32(); center = XNAExtensions.ReadVector2(im); CarType carType = (CarType)im.ReadByte(); CarFrontType carFrontType = (CarFrontType)im.ReadByte(); AbilityType abilityType = (AbilityType)im.ReadByte(); scene.RemoteAddPlayer(clientID, center, objectID, carType, carFrontType, abilityType, lobbyOnline.GetOnlinePlayer(clientID)); break; case ObjectMessageType.Spawn: EntityType entityType = (EntityType)im.ReadByte(); center = XNAExtensions.ReadVector2(im); scene.RemoteAddEntity(entityType, center, objectID); break; case ObjectMessageType.Despawn: scene.RemoteRemoveEntity(objectID); break; case ObjectMessageType.UpdatePosition: center = XNAExtensions.ReadVector2(im); float rotation = im.ReadFloat(); Vector2 velocity = XNAExtensions.ReadVector2(im); scene.RemoteUpdatePosition(objectID, center, rotation, velocity); break; case ObjectMessageType.StateChange: break; case ObjectMessageType.UpdateHitpoints: int newHitpoints = im.ReadInt32(); scene.RemoteUpdateHitpoints(objectID, newHitpoints); break; } break; case MessageType.ReceiveClientNumber: clientID = im.ReadInt32(); ID_Manager.Instance.ClientNumber = clientID; lobbyOnline.AddOnlinePlayer(Settings.Instance.PlayerName, clientID, PreferredInput.Instance.GetPreferredInput); break; case MessageType.IntroduceClient: clientID = im.ReadInt32(); var clientName = im.ReadString(); lobbyOnline.AddOnlinePlayer(clientName, clientID, InputController.Remote); //create new onlinePlayer for Lobby break; case MessageType.MenuInput: Menu currentmenu = game.GetCurrentMenu(); clientID = im.ReadInt32(); currentmenu.RemoteInput((InputType)im.ReadByte(), clientID); break; case MessageType.ReceiveServerInfo: im.ReadAllFields(serverData); //string serverName = im.ReadString(); //string address = im.ReadString() + ":" + networkThread.port;//im.SenderEndPoint.ToString(); lobbyOnline.serverData = serverData; break; case MessageType.PlayerReady: clientID = im.ReadInt32(); lobbyOnline.SetPlayerReady(clientID); break; case MessageType.Chat: string message = im.ReadString(); game.menuPause.AddChatMessage(message); break; case MessageType.ServerInList: long key = im.ReadInt64(); serverData = new CarGoServer.ServerData(); im.ReadAllFields(serverData); game.lobbySearch.AddServerData(serverData); break; case MessageType.ReceiveServerAddress: break; } }