/// <summary> /// 任务接口实现对象的加载函数 /// </summary> partial void Load_INowTaskState() { iGameState = GameState.Instance.GetEntity <IGameState>(); iInteractiveState = GameState.Instance.GetEntity <IInteractiveState>(); iNowTaskStateEvent = GameState.Instance.GetEntity <INowTaskStateEvent>(); //metaTasksData = DataCenter.Instance.GetMetaData<MetaTasksData>(); //当前可以做的任务,包括正在做的和可以接取的 List <TaskMap.RunTimeTaskInfo> todoList = runtimeTaskData.GetAllToDoList(); //从中将其分类 runTimeTaskInfos_Start = todoList.Where(temp => temp.IsStart).ToList(); runTimeTaskInfos_Wait = todoList.Where(temp => !temp.IsStart).ToList(); //将正在做的任务分类(方便检测) checkPostionRunTimeDic = new Dictionary <int, TaskMap.RunTimeTaskInfo>(); checkNPCRunTimeDic = new Dictionary <int, TaskMap.RunTimeTaskInfo>(); checkMonsterRunTimeDic = new Dictionary <int, TaskMap.RunTimeTaskInfo>(); checkGoodsRunTimeDic = new Dictionary <int, TaskMap.RunTimeTaskInfo>(); checkSpecialRunTimeDic = new Dictionary <int, TaskMap.RunTimeTaskInfo>(); runTimeTaskInfos_Start.ForEach(temp => SetStartTaskCheckClassify(temp)); //触发事件 foreach (TaskMap.RunTimeTaskInfo runTimeTaskInfo in todoList) { iNowTaskStateEvent.TriggeringEvents(runTimeTaskInfo); } }
/// <summary> /// 初始化数据对象 /// </summary> private void InitDataTarget() { keyContactData = DataCenter.Instance.GetEntity <KeyContactData>(); iGameState = GameState.Instance.GetEntity <IGameState>(); iPlayerState = GameState.Instance.GetEntity <IPlayerState>(); iInteractiveState = GameState.Instance.GetEntity <IInteractiveState>(); }
/// <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; } }
protected virtual void Init() { goodsMetaInfoMations = DataCenter.Instance.GetMetaData <GoodsMetaInfoMations>(); playerState = DataCenter.Instance.GetEntity <PlayerState>(); businessmanStates = DataCenter.Instance.GetEntity <BusinessmanStates>(); npcData = DataCenter.Instance.GetMetaData <NPCData>(); iGameState = GameState.Instance.GetEntity <IGameState>(); iInteractiveState = GameState.Instance.GetEntity <IInteractiveState>(); iPlayerState = GameState.Instance.GetEntity <IPlayerState>(); uiShowTip.gameObject.SetActive(false); }
private void OnEnable() { isSaving = false; iGameState = GameState.Instance.GetEntity <IGameState>(); //压入状态 iGameState.PushEnumGameRunType(EnumGameRunType.Setting); UIManager.Instance.KeyUpHandle += Instance_KeyUpHandle; if (uiFocusPath) { nowTabPageFocus = uiFocusPath.GetFirstFocus() as UIFocusTabPage; if (nowTabPageFocus) { nowTabPageFocus.SetForcus(); if (nowTabPageFocus.panel) { nowTabPageFocus.panel.gameObject.SetActive(true); } } } //重新载入数据 //检测此时是否有点击地图的ID(如果是则载入地图标签) IInteractiveState iInteractiveState = GameState.Instance.GetEntity <IInteractiveState>(); NPCData npcData = DataCenter.Instance.GetMetaData <NPCData>(); NPCDataInfo npcDataInfo = npcData.GetNPCDataInfo(iGameState.SceneName, iInteractiveState.ClickInteractiveNPCID); if (npcDataInfo != null && npcDataInfo.NPCType == EnumNPCType.Street) { UIFocusTabPage[] tabPages = uiFocusPath.NewUIFocusArray.OfType <UIFocusTabPage>().ToArray(); var tempUIBigMaps = Enumerable.Range(0, tabPages.Length).Select(temp => new { index = temp, uiBigMap = tabPages[temp].panel.GetComponent <UIBigMap>() }).Where(temp => temp.uiBigMap != null).FirstOrDefault(); if (tempUIBigMaps != null) { ShowIndex(tempUIBigMaps.index); } else { ShowIndex(1);//第一个标签是地图则此处选取第二个标签(属性) } } else//如果不是则载入第一个标签 { ShowIndex(0); } //给任务系统填入状态 INowTaskState iNowTaskState = GameState.Instance.GetEntity <INowTaskState>(); iNowTaskState.CheckNowTask(EnumCheckTaskType.Special, (int)TaskMap.Enums.EnumTaskSpecialCheck.OpenMenuUI); }
private void Init() { if (runtimeTasksData == null) { runtimeTasksData = DataCenter.Instance.GetEntity <TaskMap.RunTimeTaskData>(); } if (iInteractiveState == null) { iInteractiveState = GameState.Instance.GetEntity <IInteractiveState>(); } if (iNowTaskState == null) { iNowTaskState = GameState.Instance.GetEntity <INowTaskState>(); } if (iGameState == null) { iGameState = GameState.Instance.GetEntity <IGameState>(); } }
private void Start() { iInteractiveState = GameState.Instance.GetEntity <IInteractiveState>(); iInteractiveState.InterludeObj = interludePanel; iInteractiveState.QueryObj = queryPanel; iInteractiveState.TalkShowObj = talkShowPanel; iInteractiveState.ShopShowObj = shopShowPanel; iGameState = GameState.Instance.GetEntity <IGameState>(); GameObject settingPanelObj = GameObject.Instantiate <GameObject>(settingPanelPrefab); settingPanel = settingPanelObj.GetComponent <Canvas>(); settingPanel.gameObject.SetActive(false); GameObject actionPanelObj = GameObject.Instantiate <GameObject>(actionPanelPrefab); actionPanel = actionPanelObj.GetComponent <Canvas>(); actionPanel.gameObject.SetActive(false); iInteractiveState.ActionObj = actionPanelObj; GameObject interludeAnimationPanelObj = GameObject.Instantiate <GameObject>(interludeAnimationPanelPrefab); interludeAnimationPanel = interludeAnimationPanelObj.GetComponent <Canvas>(); interludeAnimationPanel.enabled = false; //interludeAnimationPanel.gameObject.SetActive(false); iGameState.InterludesPanel = interludeAnimationPanel; mainPanel = GetComponent <Canvas>(); iGameState.SettingPanel = settingPanel; iGameState.ActionPanel = actionPanel; iGameState.MainPanel = mainPanel; //查找事件系统,如果存在则不用新建 EventSystem = GameObject.Find("EventSystem"); if (EventSystem == null) { GameObject eventSystemPrefab = Resources.Load <GameObject>("UI/EventSystem"); EventSystem = GameObject.Instantiate <GameObject>(eventSystemPrefab); } }
/// <summary> /// 更改场景 /// </summary> /// <param name="sceneName">场景名</param> /// <param name="playerLocation">玩家的位置</param> /// <param name="LoadResultAction">加载结果回调</param> public void ChangedScene(string sceneName, Vector3 playerLocation, Action <bool> LoadResultAction = null) { GameRunType = EnumGameRunType.Start;//切换场景时当前的状态为开始状态 //如果要切换的场景不是当前场景则加载场景 if (SceneName != sceneName) { //保存原来地形的遮罩图 if (!string.IsNullOrEmpty(SceneName)) { playerState.SaveGetSceneMapMaskData(SceneName); } //开始加载 UIChangeScene.Instance.LoadScene(sceneName, result => { //自身调用初始化数据 Debug.Log("需要调用自身的函数实现数据的初始化,如地图显示,npc位置等一系列的数据"); //加载地图的图片以及遮罩资源 IMapState iMapState = GetEntity <IMapState>(); MapData mapData = DataCenter.Instance.GetMetaData <MapData>(); MapDataInfo mapDataInfo = mapData[sceneName]; if (mapDataInfo != null) { mapDataInfo.Load(); iMapState.MapBackSprite = mapDataInfo.MapSprite; Sprite mapMaskSprite = playerState.GetSceneMapMaskSprite(sceneName, mapDataInfo.MapSprite); iMapState.MaskMapSprite = mapMaskSprite; iMapState.MapRectAtScene = mapDataInfo.SceneRect; } //初始化npc与npc的位置 NPCData npcData = DataCenter.Instance.GetMetaData <NPCData>(); NPCDataInfo[] npcDataInfos = npcData.GetNPCDataInfos(sceneName); foreach (NPCDataInfo npcDataInfo in npcDataInfos) { npcDataInfo.Load();//切换场景时有时候会导致游戏对象被删除,需要重新Load } //初始化采集点与采集点的位置 StuffData stuffData = DataCenter.Instance.GetMetaData <StuffData>(); StuffDataInfo[] stuffDataInfos = stuffData.GetStuffDataInfos(sceneName); foreach (StuffDataInfo stuffDataInfo in stuffDataInfos) { stuffDataInfo.Load();//切换场景时有时候会导致游戏对象被删除,需要重新Load } //初始化功能交互对象 ActionInteractiveData actionInteractiveData = DataCenter.Instance.GetMetaData <ActionInteractiveData>(); ActionInteractiveDataInfo[] actionInteractiveDataInfos = actionInteractiveData.GetActionInteractiveDataInfos(sceneName); foreach (ActionInteractiveDataInfo actionInteractiveDataInfo in actionInteractiveDataInfos) { actionInteractiveDataInfo.Load();//切换场景时有时候会导致游戏对象被删除,需要重新Load } //创建UI GameObject mainCanvasPrefab = Resources.Load <GameObject>("UI/MainCanvas"); GameObject.Instantiate(mainCanvasPrefab); //创建玩家操纵的游戏对象 GameObject playerPrefab = Resources.Load <GameObject>("Prefabs/Player"); GameObject.Instantiate(playerPrefab); //更改过后修改玩家位置 PlayerObj.transform.position = playerLocation; //回调 if (LoadResultAction != null) { LoadResultAction(result); } SceneName = sceneName; GameRunType = EnumGameRunType.Safe; //场景变换回调 Call <IGameState, Action <string, Vector3, Action <bool> > >(temp => temp.ChangedScene); }); } else//如果不需要切换场景则直接更改玩家位置即可 { UIChangeScene.Instance.MovePlayer(3, result => { GameRunType = EnumGameRunType.Safe; //场景变换回调 Call <IGameState, Action <string, Vector3, Action <bool> > >(temp => temp.ChangedScene); }); //更改过后修改玩家位置 PlayerObj.transform.position = playerLocation; //关闭当前按显示的UI IInteractiveState iInteractiveState = GameState.Instance.GetEntity <IInteractiveState>(); iInteractiveState.ActionObj.SetActive(false); } }