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); } }
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; } } }
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); }