private void HandleRoomStoryMessage(Msg_LRL_StoryMessage msg_, PBChannel channel, int src, uint session) { UserProcessScheduler dataProcess = UserServer.Instance.UserProcessScheduler; UserThread userThread = dataProcess.GetUserThread(msg_.UserGuid); if (null != userThread) { userThread.QueueAction(userThread.HandleRoomStoryMessage, msg_); } else { dataProcess.DefaultUserThread.QueueAction(dataProcess.DefaultUserThread.HandleRoomStoryMessage, msg_); } }
internal void HandleRoomStoryMessage(Msg_LRL_StoryMessage msg_) { UserProcessScheduler dataProcess = LobbyServer.Instance.UserProcessScheduler; UserInfo user = dataProcess.GetUserInfo(msg_.UserGuid); if (null != user) { RoomInfo info = m_LobbyInfo.GetRoomByID(user.CurrentRoomID); if (null != info) { msg_.RoomId = user.CurrentRoomID; LobbyServer.Instance.RoomSvrChannel.Send(info.RoomServerName, msg_); } } }
internal void HandleRoomStoryMessage(Msg_LRL_StoryMessage msg, PBChannel channel) { Room room = GetRoomByID(msg.RoomId); if (null != room) { User user = room.GetUserByGuid(msg.UserGuid); Scene curScene = room.ActiveScene; if (null != user && null != curScene) { try { string msgId = string.Format("server:{0}", msg.MsgId); ArrayList args = new ArrayList(); args.Add(user.RoleId); for (int i = 0; i < msg.Args.Count; i++) { switch (msg.Args[i].val_type) { case Msg_LRL_StoryMessage.ArgType.NULL://null args.Add(null); break; case Msg_LRL_StoryMessage.ArgType.INT://int args.Add(int.Parse(msg.Args[i].str_val)); break; case Msg_LRL_StoryMessage.ArgType.FLOAT://float args.Add(float.Parse(msg.Args[i].str_val)); break; default://string args.Add(msg.Args[i].str_val); break; } } object[] objArgs = args.ToArray(); curScene.StorySystem.SendMessage(msgId, objArgs); } catch (Exception ex) { LogSys.Log(LOG_TYPE.ERROR, "Msg_CRC_StoryMessage throw exception:{0}\n{1}", ex.Message, ex.StackTrace); } } } }
private void HandleStoryMessageFromRoom(Msg_LRL_StoryMessage msg, PBChannel channel, int src, uint session) { UserInfo user = m_UserProcessScheduler.GetUserInfo(msg.UserGuid); if(null!=user){ ForwardToWorld(user.UserSvrName, msg); } }
private void HandleStoryMessageFromUserServer(Msg_LRL_StoryMessage msg_, PBChannel channel, int src, uint session) { m_RoomProcessThread.QueueAction(m_RoomProcessThread.HandleRoomStoryMessage, msg_); }
//--------------------------------------------------------------------------------------------- internal void HandleRoomStoryMessage(Msg_LRL_StoryMessage msg) { string msgId = string.Format("server:{0}", msg.MsgId); ArrayList args = new ArrayList(); args.Add(msg.UserGuid); for (int i = 0; i < msg.Args.Count; i++) { switch (msg.Args[i].val_type) { case Msg_LRL_StoryMessage.ArgType.NULL://null args.Add(null); break; case Msg_LRL_StoryMessage.ArgType.INT://int args.Add(int.Parse(msg.Args[i].str_val)); break; case Msg_LRL_StoryMessage.ArgType.FLOAT://float args.Add(float.Parse(msg.Args[i].str_val)); break; default://string args.Add(msg.Args[i].str_val); break; } } object[] objArgs = args.ToArray(); SendStoryMessage(msgId, objArgs); }
protected override bool ExecCommand(StoryInstance instance, long delta) { Scene scene = instance.Context as Scene; if (null != scene) { string _msg = m_Msg.Value; Msg_LRL_StoryMessage msg = new Msg_LRL_StoryMessage(); msg.MsgId = _msg; for (int i = 0; i < m_Args.Count; ++i) { IStoryValue<object> val = m_Args[i]; object v = val.Value; if (null == v) { Msg_LRL_StoryMessage.MessageArg arg = new Msg_LRL_StoryMessage.MessageArg(); arg.val_type = Msg_LRL_StoryMessage.ArgType.NULL; arg.str_val = ""; msg.Args.Add(arg); } else if (v is int) { Msg_LRL_StoryMessage.MessageArg arg = new Msg_LRL_StoryMessage.MessageArg(); arg.val_type = Msg_LRL_StoryMessage.ArgType.INT; arg.str_val = ((int)v).ToString(); msg.Args.Add(arg); } else if (v is float) { Msg_LRL_StoryMessage.MessageArg arg = new Msg_LRL_StoryMessage.MessageArg(); arg.val_type = Msg_LRL_StoryMessage.ArgType.FLOAT; arg.str_val = ((float)v).ToString(); msg.Args.Add(arg); } else { Msg_LRL_StoryMessage.MessageArg arg = new Msg_LRL_StoryMessage.MessageArg(); arg.val_type = Msg_LRL_StoryMessage.ArgType.STRING; arg.str_val = v.ToString(); msg.Args.Add(arg); } } if (m_HaveUserId) { int userId = m_UserId.Value; EntityInfo user = scene.GetEntityById(userId); if (null != user) { User us = user.CustomData as User; if (null != us) { msg.UserGuid = us.Guid; scene.GetRoom().SendServerMessage(msg); } } } else { scene.GetRoom().SendServerMessage(msg); } } return false; }
private void HandleRoomStoryMessage(Msg_LRL_StoryMessage msg, PBChannel channel, int handle, uint seq) { bool isFieldRoom; int ix = GetActiveRoomThreadIndex(msg.RoomId, out isFieldRoom); if (ix >= 0) { if (isFieldRoom) { RoomThread roomThread = field_roomthread_list_[ix]; roomThread.QueueAction(roomThread.HandleRoomStoryMessage, msg, channel); } else { RoomThread roomThread = roomthread_list_[ix]; roomThread.QueueAction(roomThread.HandleRoomStoryMessage, msg, channel); } } }
protected override bool ExecCommand(StoryInstance instance, long delta) { UserThread userThread = instance.Context as UserThread; if (null != userThread) { string _msg = m_Msg.Value; Msg_LRL_StoryMessage msg = new Msg_LRL_StoryMessage(); msg.MsgId = _msg; for (int i = 0; i < m_Args.Count; ++i) { IStoryValue<object> val = m_Args[i]; object v = val.Value; if (null == v) { Msg_LRL_StoryMessage.MessageArg arg = new Msg_LRL_StoryMessage.MessageArg(); arg.val_type = Msg_LRL_StoryMessage.ArgType.NULL; arg.str_val = ""; msg.Args.Add(arg); } else if (v is int) { Msg_LRL_StoryMessage.MessageArg arg = new Msg_LRL_StoryMessage.MessageArg(); arg.val_type = Msg_LRL_StoryMessage.ArgType.INT; arg.str_val = ((int)v).ToString(); msg.Args.Add(arg); } else if (v is float) { Msg_LRL_StoryMessage.MessageArg arg = new Msg_LRL_StoryMessage.MessageArg(); arg.val_type = Msg_LRL_StoryMessage.ArgType.FLOAT; arg.str_val = ((float)v).ToString(); msg.Args.Add(arg); } else { Msg_LRL_StoryMessage.MessageArg arg = new Msg_LRL_StoryMessage.MessageArg(); arg.val_type = Msg_LRL_StoryMessage.ArgType.STRING; arg.str_val = v.ToString(); msg.Args.Add(arg); } } if (m_HaveUserGuid) { ulong userGuid = m_UserGuid.Value; msg.UserGuid = userGuid; userThread.SendServerMessage(msg); } else { userThread.SendServerMessage(msg); } } return false; }