//惰性获取静态实例 public static SceneManagerController GetInstance() { if (null == _instance) { _instance = new SceneManagerController(); } return _instance; }
//惰性获取静态实例 public static SceneManagerController GetInstance() { if (null == _instance) { _instance = new SceneManagerController(); } return(_instance); }
/// <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(); }); }