You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
3.4 KiB
117 lines
3.4 KiB
1 month ago
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using System.Linq;
|
||
|
using System.Threading.Tasks;
|
||
|
using Sog;
|
||
|
|
||
|
namespace Chat
|
||
|
{
|
||
|
public static class ChatServerUtils
|
||
|
{
|
||
|
//ChatData
|
||
|
public static ChatServerData GetChatServerData()
|
||
|
{
|
||
|
return ServerDataObjMgr.GetDataObj<ChatServerData>(ChatDataObjType.ChatServerData);
|
||
|
}
|
||
|
|
||
|
public static ProtoCSStructPacker GetProtoPacker()
|
||
|
{
|
||
|
return ProtoPackerFactory.Instance.GetProtoCSStructPacker();
|
||
|
}
|
||
|
|
||
|
public static StructPacketSender GetPacketSender()
|
||
|
{
|
||
|
return GetChatServerData().m_packetSender;
|
||
|
}
|
||
|
public static DirtyString GetDirtyStringData()
|
||
|
{
|
||
|
return GetChatServerData().m_dirtyStringData;
|
||
|
}
|
||
|
|
||
|
public static PlayerTable GetPlayerTable()
|
||
|
{
|
||
|
return ServerDataObjMgr.GetDataObj<PlayerTable>(ChatDataObjType.PlayerTable);
|
||
|
}
|
||
|
|
||
|
//ChatService
|
||
|
public static PlayerTableOp GetPlayerTableOp()
|
||
|
{
|
||
|
return ServiceMgr.GetService<PlayerTableOp>(ChatServiceType.PlayerTableOp);
|
||
|
}
|
||
|
//public static SysNoticeSvc GetSysNoticeSvc()
|
||
|
//{
|
||
|
// return ServiceMgr.GetService<SysNoticeSvc>(ChatServiceType.SysNotice);
|
||
|
//}
|
||
|
|
||
|
public static long GetTimeSecond()
|
||
|
{
|
||
|
return GetChatServerData().m_app.Time.GetTimeSecond();
|
||
|
}
|
||
|
|
||
|
// 时间戳转为C#格式时间
|
||
|
public static DateTime StampToDateTime(long timeStamp)
|
||
|
{
|
||
|
DateTime dateTimeStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
|
||
|
long lTime = long.Parse(timeStamp + "0000000");
|
||
|
TimeSpan toNow = new TimeSpan(lTime);
|
||
|
|
||
|
return dateTimeStart.Add(toNow);
|
||
|
}
|
||
|
|
||
|
// DateTime时间格式转换为Unix时间戳格式
|
||
|
public static int GetTimeStamp(System.DateTime time)
|
||
|
{
|
||
|
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
|
||
|
return (int)(time - startTime).TotalSeconds;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
public static uint GetAppID()
|
||
|
{
|
||
|
return GetChatServerData().m_app.ServerID;
|
||
|
}
|
||
|
|
||
|
public static ServerApp GetApp()
|
||
|
{
|
||
|
return GetChatServerData().m_app;
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 获取服务器配置方法
|
||
|
/// </summary>
|
||
|
public static ChatServerConfig GetServerConfig()
|
||
|
{
|
||
|
return (ChatServerConfig)ServerConfigMgr.Instance.m_serverConfig;
|
||
|
}
|
||
|
|
||
|
public static void OnTick(long nowMs)
|
||
|
{
|
||
|
long nowSec = (int)(nowMs / 1000);
|
||
|
ChatCacheOp.ChatCacheTick(nowSec);
|
||
|
}
|
||
|
|
||
|
public static int GetLogicWorldId(int realmId)
|
||
|
{
|
||
|
var serverData = GetChatServerData();
|
||
|
if (serverData.m_allRealmMap.TryGetValue(realmId, out var briefInfo))
|
||
|
{
|
||
|
return briefInfo.logicWorldId;
|
||
|
}
|
||
|
TraceLog.Error("ChatServerUtils.GetLogicWorldId fail {0}", realmId);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
public static bool CheckIsSameLogicWorld(int realm1, int realm2)
|
||
|
{
|
||
|
if(realm1 == realm2)
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
int logicWorld1 = GetLogicWorldId(realm1);
|
||
|
int logicWorld2 = GetLogicWorldId(realm2);
|
||
|
return logicWorld1 == logicWorld2;
|
||
|
}
|
||
|
}
|
||
|
}
|