feat: support resources cache

This commit is contained in:
letheriver2007
2024-12-22 21:02:26 +08:00
committed by EggLink
parent f65c2933a5
commit 6484e28df8
20 changed files with 348 additions and 60 deletions

View File

@@ -23,6 +23,16 @@ public static class HandbookGenerator
{
if (langFile.Extension != ".json") return;
var lang = langFile.Name.Replace("TextMap", "").Replace(".json", "");
// Check if handbook needs to regenerate
var handbookPath = $"GM Handbook/GM Handbook {lang}.txt";
if (File.Exists(handbookPath))
{
var handbookInfo = new FileInfo(handbookPath);
if (handbookInfo.LastWriteTime >= langFile.LastWriteTime)
continue; // Skip if handbook is newer than language file
}
Generate(lang);
}

View File

@@ -127,10 +127,40 @@ public class EntryPoint
GenerateLogMap();
// Load the game data
Logger.Info(I18NManager.Translate("Server.ServerInfo.LoadingItem", I18NManager.Translate("Word.GameData")));
try
{
ResourceManager.LoadGameData();
var isCache = false;
if (File.Exists(ResourceCache.CachePath))
if (ConfigManager.Config.ServerOption.UseCache)
{
Logger.Info(I18NManager.Translate("Server.ServerInfo.LoadingItem", I18NManager.Translate("Word.Cache")));
isCache = ResourceCache.LoadCache();
// Clear all game data if cache loading fails
if (!isCache)
{
ResourceCache.ClearGameData();
Logger.Warn(I18NManager.Translate("Server.ServerInfo.CacheLoadFailed"));
}
}
else
{
File.Delete(ResourceCache.CachePath);
Logger.Warn(I18NManager.Translate("Server.ServerInfo.CacheLoadSkip"));
}
if (!isCache)
{
Logger.Info(I18NManager.Translate("Server.ServerInfo.LoadingItem", I18NManager.Translate("Word.GameData")));
ResourceManager.LoadGameData();
// Async process cache saving
if (ConfigManager.Config.ServerOption.UseCache && ResourceCache.IsComplete)
{
Logger.Warn(I18NManager.Translate("Server.ServerInfo.WaitingItem", I18NManager.Translate("Word.Cache")));
_ = ResourceCache.SaveCache();
}
}
}
catch (Exception e)
{