Exemple #1
0
    /// <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>();
 }
Exemple #3
0
    /// <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;
        }
    }
Exemple #4
0
 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);
 }
Exemple #5
0
    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);
        }
    }
Exemple #8
0
 /// <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);
     }
 }