private void ExtractMailAttachment(MailInfo info, ulong userGuid) { UserProcessScheduler dataProcess = UserServer.Instance.UserProcessScheduler; UserThread userThread = dataProcess.GetUserThread(userGuid); userThread.QueueAction(userThread.AddAssets, userGuid, info.m_Money, info.m_Gold); int itemCt = info.m_Items.Count; for (int itemIx = 0; itemIx < itemCt; ++itemIx) { MailItem item = info.m_Items[itemIx]; userThread.QueueAction(userThread.AddItem, userGuid, item.m_ItemId, item.m_ItemNum); } }
private void HandleUserQuit(Msg_RL_UserQuit msg_, PBChannel channel, int src, uint session) { UserProcessScheduler dataProcess = UserServer.Instance.UserProcessScheduler; UserThread userThread = dataProcess.GetUserThread(msg_.UserGuid); if (null != userThread) { userThread.QueueAction(userThread.HandleUserQuit, msg_); } else { dataProcess.DefaultUserThread.QueueAction(dataProcess.DefaultUserThread.HandleUserQuit, msg_); } }
private void HandleDiscardItem(NodeMessage msg, int handle, uint seq) { GameFrameworkMessage.NodeMessageWithGuid nodeMsg = msg.m_NodeHeader as GameFrameworkMessage.NodeMessageWithGuid; if (null != nodeMsg) { GameFrameworkMessage.Msg_CL_DiscardItem protoData = msg.m_ProtoData as GameFrameworkMessage.Msg_CL_DiscardItem; if (null != protoData) { UserThread userThread = m_UserProcessScheduler.GetUserThread(nodeMsg.m_Guid); if (null != userThread) { userThread.QueueAction(userThread.DiscardItem, nodeMsg.m_Guid, protoData); } } } }
private void HandleStoryMessage(NodeMessage msg, int handle, uint seq) { GameFrameworkMessage.NodeMessageWithGuid storyMsg = msg.m_NodeHeader as GameFrameworkMessage.NodeMessageWithGuid; if (null != storyMsg) { GameFrameworkMessage.Msg_CLC_StoryMessage protoData = msg.m_ProtoData as GameFrameworkMessage.Msg_CLC_StoryMessage; if (null != protoData) { ulong guid = storyMsg.m_Guid; UserThread userThread = m_UserProcessScheduler.GetUserThread(guid); if (null != userThread) { //客户端发来的消息都加上前缀client,防止直接调用服务器端逻辑(服务器消息不能用client前缀!) string msgId = string.Format("client:{0}", protoData.m_MsgId); ArrayList args = new ArrayList(); args.Add(guid); for (int i = 0; i < protoData.m_Args.Count; i++) { switch (protoData.m_Args[i].val_type) { case LobbyArgType.NULL: //null args.Add(null); break; case LobbyArgType.INT: //int args.Add(int.Parse(protoData.m_Args[i].str_val)); break; case LobbyArgType.FLOAT: //float args.Add(float.Parse(protoData.m_Args[i].str_val)); break; default: //string args.Add(protoData.m_Args[i].str_val); break; } } object[] objArgs = args.ToArray(); userThread.QueueAction(userThread.SendStoryMessage, msgId, objArgs); } } } }