예제 #1
0
    public static MessagePlayerInfo Deserialize(this NetworkReader reader)
    {
        MessagePlayerInfo value = new MessagePlayerInfo();

        value.Name = reader.ReadString();
        return(value);
    }
예제 #2
0
        void handleMessagePlayerInfo(GameMessage message)
        {
            if (!(message is MessagePlayerInfo))
            {
                return;
            }
            MessagePlayerInfo messageInfo = message as MessagePlayerInfo;

            if (message.PlayerID == ThisPlayerID)
            {
                while (UnacknowledgedInputs.Count > 0 &&
                       UnacknowledgedInputs.Peek().InputNumber <= messageInfo.InputNumber)
                {
                    UnacknowledgedInputs.Dequeue();
                }
            }
            Player newPlayer = null;

            if (Players.Keys.Contains(messageInfo.PlayerID))
            {
                newPlayer = messageInfo.Player;
                if (messageInfo.Player.PlayerState == PlayerState.Shoot)
                {
                    var bullet = newPlayer.Shoot(int.MaxValue);
                    Bullets.Add(bullet);
                }
                if (EventChangeState.GetInvocationList().Count() > 0)
                {
                    if (newPlayer.PlayerState != PlayerState.None)
                    {
                        EventChangeState(newPlayer, message.PlayerID);
                    }
                }
            }
            else
            {
                return;
            }

            if (isReconcilation && message.PlayerID == ThisPlayerID)
            {
                foreach (var messageAction in UnacknowledgedInputs)
                {
                    applyInput(newPlayer, messageAction.Action);
                    updatePhysicsPlayer(newPlayer, PhysicalUpdateInterval);
                    newPlayer.PlayerState = newPlayer.PlayerState & (PlayerState.Killed | PlayerState.Shoot);
                }
            }

            /* if (Players[message.PlayerID].Position.X != newPlayer.Position.X
            || Players[message.PlayerID].Position.Y != newPlayer.Position.Y)
            ||   return;*/

            Players[message.PlayerID] = newPlayer;
        }
예제 #3
0
        public void OPlayerQuit(Message msg)
        {
            MessagePlayerInfo info        = JsonReader.Deserialize <MessagePlayerInfo>(msg.rawString);
            GameObject        gObjPoleEnd = oHook.gameObject;

            //Remove item in uid and hook map (also means that remove oHook out of "Update" function)
            uIDHookMap.Remove(info.uid);
            oHook.OnQuit();
            //Remove oPlay in the map
            uIDPlayerMap.Remove(_oPlayer.UID);
            //hide hook gameObject
            gObjPoleEnd.SetActive(false);
            //hide boat
            SceneMgr.Instance.hookPosAllStuffMap[oHook.hookPos].gmObjBoat.SetActive(false);
            //hide UI
            _raisePlayerChangeEvent(oHook.hookPos, false);
        }
예제 #4
0
    private void MessagePlayerInfoServerHandler(NetworkConnection conn, MessagePlayerInfo msg)
    {
        Player player = conn.identity.GetComponent <Player>();

        player.Name = msg.Name;
    }
예제 #5
0
 public static void Serialize(this NetworkWriter writer, MessagePlayerInfo value)
 {
     writer.WriteString(value.Name);
 }