Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
        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;
            }
        }