Exemplo n.º 1
0
        private async void OnSceneLoaded(EventArgs arg)
        {
            FSceneLoadedEventArg eventArg = (FSceneLoadedEventArg)arg;

            CLevelConfiguration metadata = FindObjectOfType <CLevelConfiguration>();

            if (metadata == null)
            {
                FLog.Warning(CLASS_TYPE.Name, $"Cannot find scene metadata `S{eventArg.Scene.name}`");
            }
            else if (metadata.GameMode == null)
            {
                FLog.Warning(CLASS_TYPE.Name, $"GameMode is not sat for this level.");
            }
            else
            {
                _currentGameMode = Activator.CreateInstance(metadata.GameMode.Type) as IGameMode;

                await _currentGameMode?.PreInitializeAsync();

                await _currentGameMode?.InitializeAsync();

                await _currentGameMode?.BeginPlayAsync();

                FEventManager.Publish(FEventManager.ON_GAME_MODE_LOADED);
            }
        }
Exemplo n.º 2
0
        public async void StartUp()
        {
            await InitializeServicesAsync();

            FEventManager.Subscribe(FEventManager.ON_GAME_MODE_LOADED, OnGameModeLoaded);

            FEventManager.Subscribe(FEventManager.ON_SCENE_UNLOADED, OnSceneUnloaded);

            PublishFakeSceneLoadedEvent();
        }
Exemplo n.º 3
0
        protected async override Task InitializeComponentAsync()
        {
            await base.InitializeComponentAsync();

            name = CLASS_TYPE.Name;

            MakePersistent();

            FEventManager.Subscribe(FEventManager.ON_SCENE_LOADED, OnSceneLoaded);
            FEventManager.Subscribe(FEventManager.ON_SCENE_UNLOADED, OnSceneUnloaded);
        }
Exemplo n.º 4
0
 private void PublishFakeSceneLoadedEvent()
 {
     FEventManager.Publish(FEventManager.ON_SCENE_LOADED, new SceneManager.FSceneLoadedEventArg(SceneManager.FSceneManager.ActiveScene, UnityEngine.SceneManagement.LoadSceneMode.Single));
 }
Exemplo n.º 5
0
 private static void SceneUnloaded(Scene scene)
 {
     FEventManager.Publish(FEventManager.ON_SCENE_UNLOADED, new FSceneUnloadedEventArg(scene));
 }
Exemplo n.º 6
0
 private static void SceneLoaded(Scene scene, LoadSceneMode loadSceneMode)
 {
     FEventManager.Publish(FEventManager.ON_SCENE_LOADED, new FSceneLoadedEventArg(scene, loadSceneMode));
 }
Exemplo n.º 7
0
 private static void ActiveSceneChanged(Scene replacedScene, Scene nextScene)
 {
     FEventManager.Publish(FEventManager.ON_ACTIVE_SCENE_CHANGED, new FActiveSceneChangedEventArg(replacedScene, nextScene));
 }