private void IMapStateChanged(IMapState iMapState, string fieldName) { if (string.Equals(fieldName, GameState.Instance.GetFieldName <IMapState, int>(temp => temp.MarkTaskID))) { ShowNowTask(); } }
/// <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; } }
void Start() { verticalLayoutGroup = GetComponent <VerticalLayoutGroup>(); iNowTaskState = GameState.Instance.GetEntity <INowTaskState>(); iMapState = GameState.Instance.GetEntity <IMapState>(); GameState.Instance.Registor <INowTaskState>(INowTaskStateChanged); GameState.Instance.Registor <IMapState>(IMapStateChanged); runTimeTasksData = DataCenter.Instance.GetEntity <TaskMap.RunTimeTaskData>(); ShowNowTask(); }
void Start() { iPlayerState = GameState.Instance.GetEntity <IPlayerState>(); iGameState = GameState.Instance.GetEntity <IGameState>(); iMapState = GameState.Instance.GetEntity <IMapState>(); iNowTaskState = GameState.Instance.GetEntity <INowTaskState>(); npcData = DataCenter.Instance.GetMetaData <NPCData>(); runTimeTasksData = DataCenter.Instance.GetEntity <RuntimeTasksData>(); ResetMap(); GameState.Instance.Registor <IGameState>(IGamgeStateChaged); }
private void OnEnable() { iMapState = GameState.Instance.GetEntity <IMapState>(); iNowTaskState = GameState.Instance.GetEntity <INowTaskState>(); UIManager.Instance.KeyUpHandle += Instance_KeyUpHandle; uiTaskList.Init(); //填充任务列表 TaskMap.RunTimeTaskInfo[] runTimeTaskInfoArray = iNowTaskState.GetStartTask(null); //runtimeTaskData.GetAllToDoList().Where(temp => temp.IsStart == true).ToArray(); foreach (TaskMap.RunTimeTaskInfo runTimeTaskInfo in runTimeTaskInfoArray) { TaskMap.TaskInfoStruct taskInfoStruct = runTimeTaskInfo.TaskInfoStruct; UIListItem uiListItem = uiTaskList.NewItem(); uiListItem.value = runTimeTaskInfo; uiListItem.childText.text = taskInfoStruct.TaskTitile; } uiTaskList.UpdateUI(); nowTaskItem = uiTaskList.FirstShowItem(); if (nowTaskItem) { uiTaskList.ShowItem(nowTaskItem); } ExplanNowItem(); }
public PhysicsEngine(IConfig config, IMapState mapState) { _config = config; _mapState = mapState; }
/// <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); } }
public GameHub(IGameEngine gameEngine, IConfig config, IMapState mapState) { _gameEngine = gameEngine; _config = config; _mapState = mapState; }