/// <summary> /// 点击退出设置按钮 /// </summary> public void ExitSetting_Click() { if (nowUIFocus) { nowUIFocus.LostForcus(); } bigMapOperateState = EnumBigMapOperateState.OperateMap; //根据当前的设置更新状态 UIFocusDropdown thisFocus = uiFocusPath.NewUIFocusArray.Where(temp => string.Equals(temp.Tag, "SceneDropDown")).FirstOrDefault() as UIFocusDropdown; if (thisFocus != null) { int index = thisFocus.dropdown.value; if (index >= 0) { SceneData sceneData = DataCenter.Instance.GetMetaData <SceneData>(); SceneDataInfo[] sceneDataInfos = sceneData.GetAllSceneData(); List <string> sceneNameList = sceneDataInfos.Where(temp => temp.SceneAction == EnumSceneAction.Game).Select(temp => temp.SceneName).ToList(); string selectSceneName = sceneNameList[index]; if (!string.Equals(nowSceneName, selectSceneName))//当前地图显示的和选择的场景不一致则重新载入 { MapData mapData = DataCenter.Instance.GetMetaData <MapData>(); MapDataInfo mapDataInfo = mapData[selectSceneName]; if (mapDataInfo != null) { mapDataInfo.Load(); PlayerState playerState = DataCenter.Instance.GetEntity <PlayerState>(); Sprite mapMaskSprite = playerState.GetSceneMapMaskSprite(selectSceneName, mapDataInfo.MapSprite); ResetMap(mapDataInfo.MapSprite, mapMaskSprite, mapDataInfo.SceneRect, selectSceneName); } } } } }
/// <summary> /// 控件激活时 /// </summary> private void OnEnable() { fisrtKeyUP = false; iGameState = GameState.Instance.GetEntity <IGameState>(); iPlayerState = GameState.Instance.GetEntity <IPlayerState>(); iMapState = GameState.Instance.GetEntity <IMapState>(); iNowTaskState = GameState.Instance.GetEntity <INowTaskState>(); npcData = DataCenter.Instance.GetMetaData <NPCData>(); PlayerState playerState = DataCenter.Instance.GetEntity <PlayerState>(); playerState.UpdateMapMaskData(iGameState.SceneName); runTimeTasksData = DataCenter.Instance.GetEntity <RuntimeTasksData>(); UIManager.Instance.KeyUpHandle += Instance_KeyUpHandle; UIManager.Instance.KeyPressHandle += Instance_KeyPressHandle; bigMapOperateState = EnumBigMapOperateState.OperateMap; showSettingPanel.gameObject.SetActive(false); ResetSceneDropDown(); //ResetMap(iMapState.MapBackSprite, iMapState.MaskMapSprite, iMapState.MapRectAtScene, iGameState.SceneName); StartCoroutine(NextFrameInit()); //判断是否是点击路牌打开的该界面.如果是才可以传送 IInteractiveState iInteractiveState = GameState.Instance.GetEntity <IInteractiveState>(); NPCDataInfo npcDataInfo = npcData.GetNPCDataInfo(iGameState.SceneName, iInteractiveState.ClickInteractiveNPCID); if (npcDataInfo != null && npcDataInfo.NPCType == EnumNPCType.Street) { canTransport = true; } else { canTransport = false; } }
/// <summary> /// 按键检测(功能键) /// </summary> /// <param name="keyType"></param> /// <param name="rockValue"></param> private void Instance_KeyUpHandle(UIManager.KeyType keyType, Vector2 rockValue) { if (!fisrtKeyUP) { fisrtKeyUP = true; return; } switch (bigMapOperateState) { case EnumBigMapOperateState.OperateMap: //操作地图 switch (keyType) { case UIManager.KeyType.A: Vector2 handlePos = uiMapControl.GetHandlePosInTerrain(); ActionAtTerrain(handlePos); break; case UIManager.KeyType.Y: bigMapOperateState = EnumBigMapOperateState.CheckSetting; showSettingPanel.gameObject.SetActive(true); if (uiFocusPath) { nowUIFocus = uiFocusPath.GetFirstFocus(); } if (nowUIFocus) { nowUIFocus.SetForcus(); } break; } break; case EnumBigMapOperateState.CheckSetting: //操作设置 if (!nowUIFocus) { if (uiFocusPath) { nowUIFocus = uiFocusPath.GetFirstFocus(); } } if (nowUIFocus) { Action <UIFocusPath.MoveType> MoveUIFocusAction = (moveType) => { UIFocus nextUIFocus = uiFocusPath.GetNewNextFocus(nowUIFocus, moveType); //uiFocusPath.GetNextFocus(nowUIFocus, moveType); if (nextUIFocus != null) { nowUIFocus.LostForcus(); nowUIFocus = nextUIFocus; nowUIFocus.SetForcus(); } }; switch (keyType) { case UIManager.KeyType.A: if (nowUIFocus.GetType().Equals(typeof(UIFocusButton))) { ((UIFocusButton)nowUIFocus).ClickThisButton(); } else if (nowUIFocus.GetType().Equals(typeof(UIFocusToggle))) { ((UIFocusToggle)nowUIFocus).MoveChild(UIFocusPath.MoveType.OK); } break; case UIManager.KeyType.B: ExitSetting_Click(); break; case UIManager.KeyType.LEFT: MoveUIFocusAction(UIFocusPath.MoveType.LEFT); break; case UIManager.KeyType.RIGHT: MoveUIFocusAction(UIFocusPath.MoveType.RIGHT); break; case UIManager.KeyType.UP: case UIManager.KeyType.DOWN: if (string.Equals(nowUIFocus.Tag, "SceneDropDown")) { UIFocusDropdown uiFocusDropDown = nowUIFocus as UIFocusDropdown; if (uiFocusDropDown != null) { uiFocusDropDown.MoveChild(keyType == UIManager.KeyType.UP ? UIFocusPath.MoveType.UP : UIFocusPath.MoveType.DOWN); } } break; } } break; } }