//惰性获取静态实例
 public static SceneManagerController GetInstance()
 {
     if (null == _instance) {
         _instance = new SceneManagerController();
     }
     return _instance;
 }
Example #2
0
 //惰性获取静态实例
 public static SceneManagerController GetInstance()
 {
     if (null == _instance)
     {
         _instance = new SceneManagerController();
     }
     return(_instance);
 }
Example #3
0
        /// <summary>
        /// Scenes the notify init.
        /// </summary>
        public static void SceneNotifyInit()
        {
            Messenger.AddListener <string>(NotifyTypes.GoToScene, (sceneName) => {
                SceneManagerController.GetInstance().ChangeScene(sceneName);
            });

            Messenger.AddListener <string>(NotifyTypes.DealSceneEvent, (eventId) => {
//				EventData eventData = JsonManager.GetInstance().GetMapping<EventData>("AreaEventDatas", eventId);
                EventData eventData = null;
                if (AreaMain.StaticAreaEventsMapping.ContainsKey(eventId))
                {
                    //判断静态事件是否禁用
                    if (!AreaMain.DisableEventIdMapping.ContainsKey(eventId))
                    {
                        eventData = AreaMain.StaticAreaEventsMapping[eventId];
                    }
                }
                else if (AreaMain.ActiveAreaEventsMapping.ContainsKey(eventId))
                {
                    eventData = AreaMain.ActiveAreaEventsMapping[eventId];
                }
                if (eventData != null)
                {
                    string[] fen;
                    switch (eventData.Type)
                    {
                    case SceneEventType.EnterArea:
                        fen = eventData.EventId.Split(new char[] { '_' });
                        if (fen.Length >= 3)
                        {
                            string areaName = fen[0];
                            int x           = int.Parse(fen[1]);
                            int y           = int.Parse(fen[2]);
                            Messenger.Broadcast <string, Vector2, System.Action <UserData> >(NotifyTypes.UpdateUserDataAreaInfo, areaName, new Vector2(x, y), (userData) => {
                                Messenger.Broadcast <string>(NotifyTypes.GoToScene, userData.CurrentAreaSceneName);
                                //清空临时事件
                                Messenger.Broadcast <List <SceneEventType> >(NotifyTypes.ClearDisableEventIdMapping, new List <SceneEventType>()
                                {
                                    SceneEventType.DisablePagoda
                                });
                            });
                        }
                        break;

                    case SceneEventType.Battle:
                    case SceneEventType.Pagoda:
                        Messenger.Broadcast <string>(NotifyTypes.CreateBattle, eventData.EventId);
                        break;

                    case SceneEventType.EnterCity:
                        Messenger.Broadcast <string>(NotifyTypes.UpdateUserDataCityInfo, eventData.EventId);
                        Messenger.Broadcast <System.Action <UserData> >(NotifyTypes.UpdateUserData, (userData) => {
//							Messenger.Broadcast<string>(NotifyTypes.EnterCityScene, userData.CurrentCitySceneId);
                            Messenger.Broadcast <string>(NotifyTypes.EnterCityScene, eventData.EventId);
                        });
                        break;

                    case SceneEventType.Task:
                        Messenger.Broadcast <string>(NotifyTypes.GetTaslDetailInfoData, eventData.EventId);
                        break;

                    case SceneEventType.EatFood:
                        Messenger.Broadcast <int>(NotifyTypes.EatFood, eventData.IntValue);
                        fen = eventData.Id.Split(new char[] { '_' });
                        if (fen.Length >= 3)
                        {
                            string areaName = fen[0];
                            int x           = int.Parse(fen[1]);
                            int y           = int.Parse(fen[2]);
                            //处理静态事件的预禁用操作
                            EventData disableEvent = new EventData();
                            disableEvent.Id        = eventData.Id;
                            disableEvent.Type      = SceneEventType.DisableEvent;
                            disableEvent.X         = x;
                            disableEvent.Y         = y;
                            Messenger.Broadcast <string, EventData>(NotifyTypes.PushDisableEvent, disableEvent.Id, disableEvent);
                        }
                        break;

                    case SceneEventType.Dialog:
                        switch (eventData.EventId)
                        {
                        case "dialog0001":
                            Messenger.Broadcast(NotifyTypes.OpenTowerGuiderPanel);
                            break;

                        default:
                            break;
                        }
                        break;

                    case SceneEventType.Store:
                        DbManager.Instance.GetStoreData(eventData.EventId);
                        break;

                    default:
                        break;
                    }
                }
            });

            Messenger.AddListener(NotifyTypes.FromCitySceneBackToArea, () => {
                if (UserModel.CurrentUserData != null)
                {
                    Messenger.Broadcast <string, Vector2, System.Action <UserData> >(NotifyTypes.UpdateUserDataAreaInfo,
                                                                                     UserModel.CurrentUserData.CurrentAreaSceneName,
                                                                                     new Vector2(UserModel.CurrentUserData.CurrentAreaX, UserModel.CurrentUserData.CurrentAreaY),
                                                                                     (userData) => {
                        UserModel.CurrentFoodNums    = userData.AreaFood.MaxNum;
                        UserModel.CurrentRebornTimes = 0;
                        //播放大地图背景音乐
                        Messenger.Broadcast(NotifyTypes.PlayBgm);
                    }
                                                                                     );
                }
                //清空临时事件
                Messenger.Broadcast <List <SceneEventType> >(NotifyTypes.ClearDisableEventIdMapping, new List <SceneEventType>()
                {
                    SceneEventType.DisablePagoda
                });
            });

            Messenger.AddListener <string>(NotifyTypes.EnterCityScene, (cityId) => {
                DbManager.Instance.CheckEnterCity(cityId);
                DbManager.Instance.GetCitySceneMenuData(cityId);
                Messenger.Broadcast(NotifyTypes.GetTasksInCityScene);
                Messenger.Broadcast(NotifyTypes.MakeTaskListHide);
            });

            Messenger.AddListener(NotifyTypes.GetTasksInCityScene, () => {
                CityScenePanelCtrl.GetTasksInCityScene();
            });

            Messenger.AddListener(NotifyTypes.HideCityScenePanel, () => {
                CityScenePanelCtrl.MakeFadeOut();
            });

            Messenger.AddListener <string>(NotifyTypes.GetStorePanelData, (cityId) => {
                DbManager.Instance.GetStorePanelData(cityId);
            });

            Messenger.AddListener <List <ItemData>, double>(NotifyTypes.GetStorePanelDataEcho, (items, silver) => {
                StorePanelCtrl.Show(items, silver);
            });

            Messenger.AddListener <string>(NotifyTypes.BuyItem, (itemId) => {
                DbManager.Instance.BuyItem(itemId);
            });

            Messenger.AddListener <string, double>(NotifyTypes.BuyItemEcho, (msg, silver) => {
                StorePanelCtrl.MakeBuyItemEcho(msg, silver);
                SoundManager.GetInstance().PushSound("ui0006");
            });

            Messenger.AddListener(NotifyTypes.MakeCheckNewFlags, () => {
                CityScenePanelCtrl.MakeCheckNewFlags();
            });
        }