/// @param data /// The json data /// public void Deserialize(object data) { var jsonData = data.AsDictionary(); if (jsonData.ContainsKey(k_keyLevels)) { int index = 0; var levelData = jsonData[k_keyLevels] as IEnumerable; foreach (var value in levelData) { LevelModel level = value.AsSerializable <LevelModel>(); level.m_index = index++; m_levels.Add(level); } } if (m_levels.Count == 0) { // Ensure the first level is accessible m_levels.Add(new LevelModel() { m_nodeState = NodeState.Open }); } m_loaded = true; }
/// @param localDirector /// The local director owner of the Controller /// @param view /// The view of the scene /// @param cameraController /// The camera controller /// public MapNodeController(LocalDirector localDirector, MapNodeView view) : base(localDirector, view) { m_audioService = GlobalDirector.Service <AudioService>(); m_popupService = GlobalDirector.Service <PopupService>(); m_levelService = GlobalDirector.Service <LevelService>(); MapNodeView = view; LevelModel = m_levelService.GetLevelModel(MapNodeView.LevelIndex); MapNodeView.SetName(MapNodeView.LevelIndex.ToString()); m_fsm.RegisterStateCallback(k_stateInit, EnterStateInit, null, null); m_fsm.RegisterStateCallback(k_stateIdle, EnterStateIdle, null, ExitStateIdle); m_fsm.RegisterStateCallback(k_stateLocked, EnterStateLocked, null, ExitStateLocked); m_fsm.RegisterStateCallback(k_stateUnlock, null, null, ExitStateUnlock); m_fsm.RegisterStateCallback(k_stateDone, EnterStateDone, null, ExitStateDone); m_fsm.ExecuteAction(k_actionNext); }