using Sog; using ProtoCSStruct; namespace Game { public static class ServerDataFileDbSvc { private static long m_lastTickTime; private static string GetSaveFileName() { return "./GameServerDb_" + GameServerUtils.GetApp().ServerID.ToString() + ".fdb"; } /// /// 保存到数据库,存本地文件 /// public static void SaveDataToFile() { ref GameServerGlobalData data = ref GameServerUtils.GetGameServerData().m_GameServerGlobalData; string filename = GetSaveFileName(); int iRet = Sog.IO.FileDBSave.SaveToFile(ref data, filename); if (iRet != 0) { TraceLog.Error("ServerDataFileDbSvc.SaveDataToFile save file {0} error ,ret {1}", filename, iRet); return; } TraceLog.Trace("ServerDataFileDbSvc.SaveDataToFile save file {0} success", filename); } public static void LoadDataFromFile() { string filename = GetSaveFileName(); TraceLog.Trace("ServerDataFileDbSvc.LoadDataFromFile load now file {0}", filename); ref GameServerGlobalData data = ref GameServerUtils.GetGameServerData().m_GameServerGlobalData; bool success = Sog.IO.FileDBSave.ReadFromFile(ref data, filename); if (success) { TraceLog.Trace("ServerDataFileDbSvc.LoadDataFromFile load file {0} success, count {1}" , filename, data.ShareFBGetPhoneCardNum); } else { GameServerUtils.GetGameServerData().m_GameServerGlobalData = new GameServerGlobalData(); TraceLog.Trace("ServerDataFileDbSvc.LoadDataFromFile no Data, new empty object"); //立即保存一下 SaveDataToFile(); } } public static void OnTick(long nowMs) { //5秒一次 if(nowMs - m_lastTickTime < 5000) { return; } m_lastTickTime = nowMs; long secondTime = nowMs / 1000; ref GameServerGlobalData data = ref GameServerUtils.GetGameServerData().m_GameServerGlobalData; if(AppTime.IsSameDay(secondTime, data.DailyTime)) { return; } TraceLog.Trace("ServerDataFileDbSvc.Tick diff day start , reset data"); data.DailyTime = secondTime; data.ShareFBGetPhoneCardNum = 0; } //是否达到全服每日最大值,不能再发电话卡了 public static bool IsShareFBGetPhoneCardLimit(int limitNum) { ref GameServerGlobalData data = ref GameServerUtils.GetGameServerData().m_GameServerGlobalData; return data.ShareFBGetPhoneCardNum >= limitNum; } public static void AddShareFBGetPhoneCardNum() { ref GameServerGlobalData data = ref GameServerUtils.GetGameServerData().m_GameServerGlobalData; data.ShareFBGetPhoneCardNum++; SaveDataToFile(); } } }