Пример #1
0
        protected void _DispatchApianMessage(string from, string to, long msSinceSent, GameNetClientMessage clientMessage)
        {
            ApianMessage apMsg = DeserializeApianMessage(clientMessage.clientMsgType, clientMessage.payload);

            logger.Verbose($"_DispatchApianMessage() Type: {apMsg.MsgType}, src: {(from==LocalP2pId()?"Local":from)}");

            if (ApianInstances.ContainsKey(apMsg.DestGroupId))
            {
                ApianInstances[apMsg.DestGroupId].OnApianMessage(from, to, apMsg, msSinceSent);
            }
        }
Пример #2
0
        protected void _DispatchGroupMessage(string from, string to, long msSinceSent, GameNetClientMessage clientMessage)
        {
            ApianGroupMessage apMsg = DeserializeApianMessage(clientMessage.clientMsgType, clientMessage.payload) as ApianGroupMessage;

            logger.Verbose($"_DispatchGroupMessage() Type: {apMsg.GroupMsgType}, Group: {apMsg.DestGroupId}, src: {(from==LocalP2pId()?"Local":from)}");

            if (ApianInstances.ContainsKey(apMsg.DestGroupId))
            {
                ApianInstances[apMsg.DestGroupId].OnApianMessage(from, to, apMsg, msSinceSent);
            }
            else if (apMsg.DestGroupId == "") // It's a group message not sent to a particular group.
            {
                // TODO: This is kinda ugly, but sorta special-case. Still ugly, tho.
                switch (apMsg.GroupMsgType)
                {
                case ApianGroupMessage.GroupAnnounce:
                    GroupAnnounceMsg gaMsg = apMsg as GroupAnnounceMsg;
                    gameManager.OnGroupAnnounce(gaMsg.GroupId, gaMsg.GroupType, gaMsg.GroupCreatorId, gaMsg.GroupName);
                    break;

                case ApianGroupMessage.GroupsRequest: // Send to all instances
                    foreach (ApianBase ap in ApianInstances.Values)
                    {
                        ap.OnApianMessage(from, to, apMsg, msSinceSent);
                    }
                    break;
                }
            }
        }
Пример #3
0
 protected override void _HandleClientMessage(string from, string to, long msSinceSent, GameNetClientMessage msg)
 {
     // This is called by GameNetBase.OnClientMessage()
     // We want to pass messages through a dispatch table.
     // Turns out (for now, anyway) we're best-off letting it throw rather than handling exceptions
     _MsgDispatchers[msg.clientMsgType](from, to, msSinceSent, msg);
 }