using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Sog; namespace GameDB { public static class GameDBServerUtils { public static string GetUserTableName(long uid) { int index = TableIndexCalc.CalcRoleTableIndex(uid); return "tbuser_" + index.ToString(); } public static string GetMailTableName(long uid) { int index = TableIndexCalc.CalcRoleTableIndex(uid); return "tbmail_" + index.ToString(); } public static string GetArenaDefenceTableName(long uid) { int index = TableIndexCalc.CalcRoleTableIndex(uid); return "tbarena_defence_" + index.ToString(); } public static string GetArenaBattleRecordTableName(long uid) { int index = TableIndexCalc.CalcRoleTableIndex(uid); return "tbarena_battle_record_" + index.ToString(); } public static string GetRacehorseTableName() { return "tbrace_user"; } public static string GetRacehorseSignUpTableName() { return "tbrace_user_signup"; } public static string GetTradeTableName(long uid) { int index = TableIndexCalc.CalcTradeTableIndex(uid); return "tbtrade_user_" + index.ToString(); } public static string GetPetPvpPlayerTableName(long uid) { int index = TableIndexCalc.CalcPetPvpPlayerTableIndex(uid); return "tbpetpvp_player_" + index.ToString(); } public static string GetNewPeakArenaTableName(long uid) { int index = TableIndexCalc.CalcNewPeakArenaPlayerTableIndex(uid); return "tbpeakarena_player_" + index.ToString(); } public static GameDBServerData GetDBServerData() { return ServerDataObjMgr.GetDataObj(GameDBDataObjType.GameDBServerData); } public static ProtoCSStructPacker GetProtoPacker() { return ProtoPackerFactory.Instance.GetProtoCSStructPacker(); } public static StructPacketSender GetPacketSender() { return GetDBServerData().m_packetSender; } public static long GetTimeSecond() { return GetDBServerData().m_app.Time.GetTimeSecond(); } public static uint GetAppID() { return GetDBServerData().m_app.ServerID; } public static ServerApp GetApp() { return GetDBServerData().m_app; } /// /// 获取服务器配置方法 /// public static GameDBServerConfig GetServerConfig() { return (GameDBServerConfig)ServerConfigMgr.Instance.m_serverConfig; } public static string GetFriendTableName(long uid) { int index = TableIndexCalc.CalcRoleTableIndex(uid); return "tbfriend_" + index.ToString(); } public static string GetUnionTableName(int realmId) { int index = TableIndexCalc.CalcUnionTableIndex(realmId); return "tbunion_" + index.ToString(); } public static string GetUnionRoleTableName(int realmId) { int index = TableIndexCalc.CalcUnionRoleTableIndex(realmId); return "tbunionrole_" + index.ToString(); } public static string GetBattleReplayTableName(long battleId) { int index = TableIndexCalc.CalcBattleReplayTableIndex(battleId); return "tbbattle_replay_" + index.ToString(); } public static string GetMainlandRecordTableName() { return "tb_mainland_recording"; } public static string GetWorldHomeTableName(long uid) { int index = TableIndexCalc.CalcWorldHomeTableIndex(uid); return "tbworld_home_" + index.ToString(); } public static string GetWorldRobotHomeTableName() { return "tbworld_robot_home"; } public static long GetactRemRankId(int remId, int actId) { return (long)remId * 10000000 + actId; } public static void GetactRemAndRankId(long actRemRankId, out int remId, out int actId) { remId = (int)(actRemRankId / 10000000); actId = (int)(actRemRankId % 10000000); } public static void ParseDBConfig(ServerApp app, out int dbtype, out string dbname, out string dbip) { GameDBServerConfig serverConfig = GetServerConfig(); // 优先使用参数里传入的db配置, 方便每个人独立修改 string dbtypestr = app.GetCluster().GetAppParamByKey("gamedbtype"); if (string.IsNullOrEmpty(dbtypestr) || !int.TryParse(dbtypestr, out dbtype)) { dbtype = serverConfig.dbtype; } dbip = app.GetCluster().GetAppParamByKey("gamedbip"); if (string.IsNullOrEmpty(dbip)) { dbip = serverConfig.dbip; } if (dbtype == 1) // mongo db 不再使用 { TraceLog.Error("GameDBServerUtils.ParseDBConfig invalid dbtype 1"); } // dbname不让单独修改, 大家统一简单些 dbname = serverConfig.dbname; } } }