Advertisement
Mad_Joker

GameLoader

Apr 28th, 2023
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.54 KB | None | 0 0
  1.     public class GameLoader : MonoBehaviour//, IHostable, ILateInitializable
  2.     {
  3.  
  4.         /// <summary>
  5.         /// Determines the conditions when a load should be attempted from the drive / server. If Not Yet Attempted is              default
  6.         /// </summary>
  7.         public LoadDataOptions loadDataWhen = LoadDataOptions.LoadNotYetAttempted;
  8.  
  9.         /// <summary>
  10.         /// Determines if LateInitialize should be declared
  11.         /// </summary>
  12.         public bool lateInitialization = true;
  13.  
  14.         /// <summary>
  15.         /// Determines whether or not this class can host initialization, late initialization, save/load and other ProSaver         operations. True by default.
  16.         /// </summary>
  17.         public bool CanHost { get; set; } = true;
  18.  
  19.  
  20.          /// <summary>
  21.          /// Subscribes to when initialiation finished with a function that loads data and/or starts late initialization            depending on settings.
  22.          /// </summary>
  23.         public virtual void Awake()
  24.         {  
  25.             if(CanHost)
  26.                 if(ProSaver.CoroutineHost == null)
  27.                     ProSaver.CoroutineHost = this;
  28.  
  29.             ProSaver.WhenInitializationFinished += PrepLoadAndLateLoad;
  30.         }
  31.  
  32.         private void PrepLoadAndLateLoad()
  33.         {
  34.             ProSaver.WhenInitializationFinished -= PrepLoadAndLateLoad;
  35.  
  36.  
  37.             switch(loadDataWhen)
  38.             {
  39.                 case LoadDataOptions.Never:
  40.                     if(lateInitialization)
  41.                         ProSaver.StartLateInitializationNow();
  42.                     else
  43.                         ProSaver.FinishScenePrepNow();    
  44.                     return;
  45.                
  46.                 case LoadDataOptions.Always:
  47.                     if(lateInitialization)
  48.                         ProSaver.StartLateInitializationAfterLoad();
  49.                     else
  50.                         ProSaver.SkipLateInitializationAfterLoad();
  51.  
  52.                     ProSaver.LoadGame();
  53.                     return;
  54.  
  55.                
  56.                 case LoadDataOptions.LoadNotYetAttempted:
  57.  
  58.                     if(ProSaver.LoadAttempted)
  59.                     {
  60.                         if(lateInitialization)
  61.                             ProSaver.StartLateInitializationNow();
  62.                         else
  63.                             ProSaver.FinishScenePrepNow();
  64.                     }
  65.                     else
  66.                     {
  67.                        
  68.                         if(lateInitialization)
  69.                             ProSaver.StartLateInitializationAfterLoad();
  70.                         else
  71.                              ProSaver.SkipLateInitializationAfterLoad();
  72.  
  73.                         ProSaver.LoadGame();
  74.                     }
  75.                     return;
  76.                
  77.                 case LoadDataOptions.LoadNotYetSuccessful:
  78.                  
  79.                     if(ProSaver.LoadSuccessful)
  80.                     {
  81.                         if(lateInitialization)
  82.                             ProSaver.StartLateInitializationNow();
  83.                         else
  84.                             ProSaver.FinishScenePrepNow();
  85.                     }
  86.                     else
  87.                     {
  88.                         if(lateInitialization)
  89.                             ProSaver.StartLateInitializationAfterLoad();
  90.                         else
  91.                              ProSaver.SkipLateInitializationAfterLoad();
  92.  
  93.                          ProSaver.LoadGame();
  94.                     }
  95.                 return;
  96.             }
  97.         }
  98.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement