internal void GMLoadUser(string gmAccount, ulong userGuid, LobbyGmMessageDefine jsonMsgId, int nodeHandle) { string key = userGuid.ToString(); Msg_LD_Load msg = new Msg_LD_Load(); msg.MsgId = (int)DataEnum.TableUserInfo; msg.PrimaryKeys.Add(key); Msg_LD_SingleLoadRequest reqUser = new Msg_LD_SingleLoadRequest(); reqUser.MsgId = (int)DataEnum.TableUserInfo; reqUser.LoadType = Msg_LD_SingleLoadRequest.LoadTypeEnum.LoadSingle; reqUser.Keys.Add(key); msg.LoadRequests.Add(reqUser); RequestLoad(msg, (ret) => { JsonMessage resultMsg = new JsonMessage(jsonMsgId, gmAccount); GameFrameworkMessage.Msg_LC_GmQueryUser protoData = new GameFrameworkMessage.Msg_LC_GmQueryUser(); protoData.m_Result = GameFrameworkMessage.GmResultEnum.Failed; protoData.m_Info = null; KeyString primaryKey = KeyString.Wrap(ret.PrimaryKeys); if (Msg_DL_LoadResult.ErrorNoEnum.Success == ret.ErrorNo) { LogSys.Log(LOG_TYPE.INFO, "DataCache Load Success: Msg:{0}, Key:{1}", "GmUser", primaryKey); TableUserInfo dataUser = null; foreach (var result in ret.Results) { object _msg; if (DbDataSerializer.Decode(result.Data, DataEnum2Type.Query(result.MsgId), out _msg)) { DataEnum msgEnum = (DataEnum)result.MsgId; switch (msgEnum) { case DataEnum.TableUserInfo: dataUser = _msg as TableUserInfo; break; default: LogSys.Log(LOG_TYPE.ERROR, ConsoleColor.Red, "Decode user data ERROR. Wrong message id. UserGuid:{0}, WrongId:{1}", userGuid, msgEnum); break; } } } protoData.m_Result = GameFrameworkMessage.GmResultEnum.Success; protoData.m_Info = CreateGmUserInfo(dataUser); } else if (Msg_DL_LoadResult.ErrorNoEnum.NotFound == ret.ErrorNo) { LogSys.Log(LOG_TYPE.INFO, ConsoleColor.Yellow, "DataCache Load NotFound: Msg:{0}, Key:{1}", "GmUser", primaryKey); } else { LogSys.Log(LOG_TYPE.ERROR, "DataCache Load Failed: Msg:{0}, Key:{1}, ERROR:{2}", "GmUser", primaryKey, ret.ErrorInfo); } resultMsg.m_ProtoData = protoData; JsonGmMessageDispatcher.SendNodeMessage(nodeHandle, resultMsg); }); }
public void FromProto(TableUserInfo proto) { m_TableUserInfo = proto; UpdatePrimaryKeys(); UpdateForeignKeys(); m_CreateTime = DateTime.ParseExact(m_TableUserInfo.CreateTime, "yyyyMMddHHmmss", null); m_LastLogoutTime = DateTime.ParseExact(m_TableUserInfo.LastLogoutTime, "yyyyMMddHHmmss", null); m_IntDatas = DataProtoUtility.SplitGeneralDictionary <string, int>(new char[] { ';' }, new char[] { ',' }, m_TableUserInfo.IntDatas); m_FloatDatas = DataProtoUtility.SplitGeneralDictionary <string, float>(new char[] { ';' }, new char[] { ',' }, m_TableUserInfo.FloatDatas); m_StringDatas = DataProtoUtility.SplitGeneralDictionary <string, string>(new char[] { ';' }, new char[] { ',' }, m_TableUserInfo.StringDatas); }
private GameFrameworkMessage.GmUserInfo CreateGmUserInfo(TableUserInfo user) { if (null == user) { return(null); } GameFrameworkMessage.GmUserInfo gmUserInfo = new GameFrameworkMessage.GmUserInfo(); gmUserInfo.m_Guid = (ulong)user.Guid; gmUserInfo.m_AccountId = user.AccountId; gmUserInfo.m_Nickname = user.Nickname; gmUserInfo.m_UserState = GameFrameworkMessage.GmStateEnum.Offline; //基础信息 GameFrameworkMessage.GmUserBasic gmUserBasic = new GameFrameworkMessage.GmUserBasic(); gmUserBasic.m_HeroId = user.HeroId; gmUserBasic.m_Level = user.Level; gmUserBasic.m_Money = user.Money; gmUserBasic.m_Gold = user.Gold; gmUserBasic.m_CreateTime = user.CreateTime; gmUserBasic.m_LastLogoutTime = user.LastLogoutTime; gmUserInfo.m_UserBasic = gmUserBasic; return(gmUserInfo); }
public void FromProto(TableUserInfo proto) { m_TableUserInfo = proto; UpdatePrimaryKeys(); UpdateForeignKeys(); m_CreateTime = DateTime.ParseExact(m_TableUserInfo.CreateTime,"yyyyMMddHHmmss",null); m_LastLogoutTime = DateTime.ParseExact(m_TableUserInfo.LastLogoutTime,"yyyyMMddHHmmss",null); m_IntDatas = DataProtoUtility.SplitGeneralDictionary<string,int>(new char[]{';'},new char[]{','}, m_TableUserInfo.IntDatas); m_FloatDatas = DataProtoUtility.SplitGeneralDictionary<string,float>(new char[]{';'},new char[]{','}, m_TableUserInfo.FloatDatas); m_StringDatas = DataProtoUtility.SplitGeneralDictionary<string,string>(new char[]{';'},new char[]{','}, m_TableUserInfo.StringDatas); }