Пример #1
0
 public static void PreSaveHook(Game.GnomanEmpire self, bool fallenKingdom)
 {
     foreach (var mod in active_mods)
     {
         mod.PreGameSaved(modSaveFile.GetDataFor(mod));
     }
 }
Пример #2
0
 public static void PostLoadHook(Game.GnomanEmpire self, string fileName, bool fallenKingdom)
 {
     foreach (var mod in active_mods)
     {
         mod.AfterGameLoaded(modSaveFile.GetDataFor(mod));
     }
 }
Пример #3
0
        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));
            }
        }
Пример #4
0
        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();
            }));
        }
Пример #5
0
        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));
        }
Пример #6
0
        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;
        }
Пример #7
0
 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));
     }));
 }
Пример #8
0
        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));
            }));
        }
Пример #9
0
 public static void PreSaveGame(Game.GnomanEmpire self, bool fallenKingdom)
 {
     Instance.ModManager.OnPreSaveGameEvent(new PreSaveGameEventArgs(fallenKingdom));
 }
Пример #10
0
 public static void PreLoadGame(Game.GnomanEmpire self, string fileName, bool fallenKingdom)
 {
     Instance.ModManager.OnPreLoadGameEvent(new PreLoadGameEventArgs(fallenKingdom));
 }