예제 #1
0
        // Use this for initialization
        void Start()
        {
            /**
             * Register as observer to ContextManager
             * * List.add
             * Prepare Allies
             * Prepare Enemies
             * Send SET_CHARACTERS event to ContextManager
             * * Set Enemies, Set Allies
             * Notify Event ENCOUNTER_STARTED (sent to all listeners/allies/ through ContextManager)
             * * Notify Characters
             * * * Send message for each observer inside observerslist
             * * Notify Observers (like this GameLoop instance)
             * * Loop
             * * * Send message for each observer inside observerslist
             *
             * * Context Manager uses the SendMessage unity method, which invokes the given method if it exists such as  "ENCOUNTER_STARTED()" for Characters that may
             * * do something special for such event.
             */
            contextManager = ContextManager.GetInstance();

            //Mind the order of execution.
            contextManager.AddObserver(gameObject);
            contextManager.FlipEnemies(true);

            charactersPool.InitMap();

            //Building allies and enemies from the characters pool.
            Dictionary <string, object> previousContext = TransitionWithParameters.parameters;
            object pEnemies = "NA";

            previousContext.TryGetValue("enemies", out pEnemies);
            object ppreviousSceneNameO;

            if (previousContext.TryGetValue("previousSceneName", out ppreviousSceneNameO))
            {
                ppreviousSceneName = (string)ppreviousSceneNameO;
            }
            else
            {
                ppreviousSceneName = SceneManager.GetActiveScene().name;
            }

            //context.Add("previousScene", SceneManager.GetActiveScene().name); //This context must be string to obj maybe?
            //context.Add("enemies", new string[]{"cat", "cat", "cat"}); //This context must be string to obj maybe?

            Debug.Log("previousScene: " + ppreviousSceneName);
            PrepareAllies();

            PrepareEnemies((string[])pEnemies);

            PrepareBattle();

            //Starts the Event Notifier.
            DoneLoading();

            presetTargets();
        }
예제 #2
0
 void Start()
 {
     contextManager = ContextManager.GetInstance();
     //Mind the order of execution.
     contextManager.AddObserver(gameObject);
 }