Ejemplo n.º 1
0
 public static void Init()
 {
     try {
         if (Log != null)
         {
             return;
         }
         Setup();
         ModScanner.BuildModList();
         ModPhases.RunPhase("SplashMod");
         if (!GamePatcher.PatchPhases())
         {
             Log.Log(SourceLevels.Critical, "Cannot patch game with Harmony. Non-SplashMods may not be loaded.");
         }
     } catch (Exception ex) {
         if (Log == null)
         {
             Console.WriteLine(ex);
         }
         else
         {
             Log.Error(ex);
         }
     }
 }
Ejemplo n.º 2
0
 private static void AfterHideTip()
 {
     if (!FireGeoscapeOnShow)
     {
         return;
     }
     ModPhases.RunPhase("GameOnShow");
     ModPhases.RunPhase("GeoscapeOnShow");
     FireGeoscapeOnShow = false;
 }
Ejemplo n.º 3
0
 // Mainly call GeoscapeOnHide and GameOnHide when quiting from Geoscape, which seems to not trigger OnLevelStateChanged.
 // May also be called if an exception bubbles to the main game loop.
 private static void BeforeQuit()
 {
     Log.Info("Game Quit");
     if (ModPhases.LastPhase?.EndsWith("OnShow", StringComparison.Ordinal) != true)
     {
         return;
     }
     ModPhases.RunPhase(ModPhases.LastPhase.Replace("OnShow", "OnHide"));
     if (ModPhases.LastPhase != "HomeOnHide")
     {
         ModPhases.RunPhase("GameOnHide");
     }
     Log.Flush();
 }
Ejemplo n.º 4
0
        private static void StateChanged(string level, int prevState, int newState)
        {
            //Log.Trace( "{0} StateChanged {1} => {2}", level, prevState, newState );
            switch (prevState)
            {
            case -1:  // Uninitialized => NotLoaded
                if (level != "Home")
                {
                    ModPhases.RunPhase("GameMod");
                }
                ModPhases.RunPhase(level + "Mod");
                return;

            case 5:  // Playing => Loaded
                if (ModPhases.LastPhase?.EndsWith("OnHide", StringComparison.Ordinal) == true)
                {
                    return;
                }
                ModPhases.RunPhase(level + "OnHide");
                if (level != "Home")
                {
                    ModPhases.RunPhase("GameOnHide");
                }
                return;

            case 2:  // Loaded => Playing, OR Loaded => Unloading
                if (newState != 5)
                {
                    return;
                }
                if (level == "Geoscape")
                {
                    FireGeoscapeOnShow = true;
                }
                else
                {
                    if (level != "Home")
                    {
                        ModPhases.RunPhase("GameOnShow");
                    }
                    ModPhases.RunPhase(level + "OnShow");
                }
                return;
            }
        }
Ejemplo n.º 5
0
 private static void MainPhase()
 {
     ModPhases.RunPhase("Init");       // PPML v0.1
     ModPhases.RunPhase("Initialize"); // PPML v0.2
     ModPhases.RunPhase("MainMod");    // Modnix 1 & 2
 }