public static void PreSaveHook(Game.GnomanEmpire self, bool fallenKingdom) { foreach (var mod in active_mods) { mod.PreGameSaved(modSaveFile.GetDataFor(mod)); } }
public static void PostLoadHook(Game.GnomanEmpire self, string fileName, bool fallenKingdom) { foreach (var mod in active_mods) { mod.AfterGameLoaded(modSaveFile.GetDataFor(mod)); } }
public static void PreLoadHook(Game.GnomanEmpire self, string fileName, bool fallenKingdom) { var dir = fallenKingdom ? Game.GnomanEmpire.SaveFolderPath("OldWorlds\\") : Game.GnomanEmpire.SaveFolderPath("Worlds\\"); var file = System.IO.Path.Combine(dir, fileName + ".msv"); modSaveFile = ModSaveFile.LoadFrom(new System.IO.FileInfo(file)); foreach (var mod in active_mods) { mod.PreGameLoaded(modSaveFile.GetDataFor(mod)); } }
public static void OnAfter_PreviewMap(Game.GnomanEmpire self, Game.CreateWorldOptions worldOptions, bool clear, int xyScale) { var task = (System.Threading.Tasks.Task) typeof(Game.GnomanEmpire) .GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static) .Single(field => field.FieldType == typeof(System.Threading.Tasks.Task)) .GetValue(self); task.ContinueWith(new Action <System.Threading.Tasks.Task>((t) => { seed = (last_seed = self.Map.WorldSeed).ToString(); TryLabelUpdate(); })); }
public static void PostLoadGame(Game.GnomanEmpire self, string fileName, bool fallenKingdom) { var saveFile = GetSaveLocation(fallenKingdom, self.CurrentWorld); if (File.Exists(saveFile)) { using (FileStream saveStream = File.OpenRead(saveFile)) { ModDataSaver modDataSaver = new ModDataSaver(saveStream, Instance.ModManager); modDataSaver.Load(); } } Instance.ModManager.OnPostLoadGameEvent(new PostLoadGameEventArgs(fallenKingdom)); }
public static System.Threading.Tasks.Task OnAfter_SaveGame_Started(System.Threading.Tasks.Task save_task, Game.GnomanEmpire self, bool fallenKingdom) { // This function is hooked into the game as specified by GetConfig(). // Be careful to exactly match the required structure (see other doc, sth like [RetVal|void]([retVal][this][arguments]) ) // Currently there isn't any flexibility, so you have to specifiy all that apply return(save_task.ContinueWith((task) => { try { //scaning for the newest dated looks like the easies way to get the latest save, since i havent found any "get current save file"-func var latest_save_file = new System.IO.DirectoryInfo(Game.GnomanEmpire.SaveFolderPath("Worlds\\")) .GetFiles() .Where(file => file.Extension.ToUpper() == ".SAV") .Aggregate((a, b) => { return a.LastWriteTime > b.LastWriteTime ? a : b; }); var backup_folder = System.IO.Path.Combine(latest_save_file.DirectoryName, "Backups"); System.IO.Directory.CreateDirectory(backup_folder); System.IO.File.Copy( latest_save_file.FullName, System.IO.Path.Combine( backup_folder, latest_save_file.Name.Remove(latest_save_file.Name.Length - latest_save_file.Extension.Length) + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + latest_save_file.Extension ) ); return; } catch (Exception err) { RuntimeModController.Log.Write(err); } })); //don't want to return a modified value? In that case you have to return the return_val parameter! (usually first argument) //return save_task; }
public static System.Threading.Tasks.Task PostSaveHook(System.Threading.Tasks.Task saveTask, Game.GnomanEmpire self, bool fallenKingdom) { return(saveTask.ContinueWith((task) => { foreach (var mod in active_mods) { mod.AfterGameSaved(modSaveFile.GetDataFor(mod)); } var path = fallenKingdom ? Game.GnomanEmpire.SaveFolderPath("OldWorlds\\") : Game.GnomanEmpire.SaveFolderPath("Worlds\\"); // Todo: fallen kingdoms not considered with filename and so on! var file = System.IO.Path.Combine(path, self.CurrentWorld + ".msv"); modSaveFile.SaveTo(new System.IO.FileInfo(file)); })); }
public static System.Threading.Tasks.Task PostSaveGame(System.Threading.Tasks.Task saveTask, Game.GnomanEmpire self, bool fallenKingdom) { return(saveTask.ContinueWith(task => { var saveFile = GetSaveLocation(fallenKingdom, self.CurrentWorld); using (FileStream saveStream = File.Create(saveFile)) { ModDataSaver modDataSaver = new ModDataSaver(saveStream, Instance.ModManager); modDataSaver.Save(); } Instance.ModManager.OnPostSaveGameEvent(new PostSaveGameEventArgs(fallenKingdom)); })); }
public static void PreSaveGame(Game.GnomanEmpire self, bool fallenKingdom) { Instance.ModManager.OnPreSaveGameEvent(new PreSaveGameEventArgs(fallenKingdom)); }
public static void PreLoadGame(Game.GnomanEmpire self, string fileName, bool fallenKingdom) { Instance.ModManager.OnPreLoadGameEvent(new PreLoadGameEventArgs(fallenKingdom)); }