Example #1
0
 private void ValidateDependencies()
 {
     for (int i = 0; i < InitActions.Count; i++)
     {
         InitAction initAction = InitActions[i];
         RecursiveValidateAction(initAction, initAction.GetType(), initAction.ActionName);
     }
 }
Example #2
0
 private void RecursiveValidateAction(InitAction action, Type dependencyType, string breadcrumbs)
 {
     if (action.TopologicalDependencies.Contains(dependencyType.ToString()))
     {
         string message = "[ValidateDependencies] Found Circular Dependency: " + breadcrumbs;
         Logger.LogFatal(this, message, Logger.TagFlags.INIT);
         throw new ApplicationException(message);
     }
     foreach (string antecedentName in action.TopologicalDependencies)
     {
         List <InitAction>      initActions = InitActions;
         Predicate <InitAction> match       = (InitAction a) => a.GetType().ToString() == antecedentName;
         InitAction             initAction  = initActions.Find(match);
         if (initAction == null)
         {
             string message = "[ValidateDependencies] Missing Dependency: " + breadcrumbs + " -> " + antecedentName;
             Logger.LogFatal(this, message, Logger.TagFlags.INIT);
             throw new ApplicationException(message);
         }
         RecursiveValidateAction(initAction, dependencyType, breadcrumbs + " -> " + initAction.ActionName);
     }
 }
Example #3
0
 private IEnumerator ExecuteReadyActionsCoroutine()
 {
     while (InitActions.Count > 0)
     {
         InitAction action = InitActions[0];
         if (action.CanStart())
         {
             action.Initialize(this, m_eventDispatcher, m_configurator);
             Logger.LogDebug(this, "Starting init action: " + action.ActionName, Logger.TagFlags.INIT);
             InitActions.RemoveAt(0);
             action.Start();
             if (m_runAsCoroutine)
             {
                 yield return(BaseGameController.Instance.StartCoroutine(action.Perform()));
             }
             else
             {
                 CoroutineHelper.RunCoroutineToCompletion(action.Perform());
             }
             yield return(null);
         }
     }
 }
Example #4
0
 public void AddInitAction(InitAction action)
 {
     InitActions.Add(action);
 }