Beispiel #1
0
        public bool LoadMissionScene(MissionEnum requestMission, LoadMissionBy loadmissionBy = LoadMissionBy.None)
        {
            //if (IsMissionSceneExist(requestMission))
            //{
            CoreContainer.Instance.SetPlayerDisable();
            string sceneName;

            if (requestMission != MissionEnum.None)
            {
                sceneName = GenerateSceneName(requestMission);
                SetCurrentMission(requestMission);
                SetIsAnonymousScene(false);
            }
            else
            {
                sceneName = ANONYMOUS_MISSION;
                SetIsAnonymousScene(true);
            }

            m_loadMissionBy = loadmissionBy;
            SceneLookupEnum sceneEnum = SceneLookup.GetEnum(sceneName, false);

            if (!m_currentMissionScene.LoadScene(sceneEnum))
            {
                return(false);
            }
            return(true);
        }
        private void CloseCGScene()
        {
            var config = m_model.SceneInfo;

            if (!string.IsNullOrEmpty(config.LoadSceneNameOnEnd))
            {
                GameSceneManager.Instance.LoadScene(SceneLookup.GetEnum(config.LoadSceneNameOnEnd, false));
            }

            if (!string.IsNullOrEmpty(config.LoadMissionIDOnEnd))
            {
                MissionSceneManager.Instance.LoadMissionScene(MissionSceneManager.Instance.GetMissionEnumBy(config.LoadMissionIDOnEnd, false));
                InvokeHidePanel();
                return;
            }

            if (m_model.PopScene())
            {
                RefreshInfo();
            }
            else
            {
                InvokeHidePanel();
            }
        }
        public override void Initialize(UIDataProvider uiDataProvider, UIPanelSettings settings)
        {
            base.Initialize(uiDataProvider, settings);
            m_model.Initialize(this);

            m_btn_exit_Button.onClick.AddListener(() =>
            {
                Application.Quit();
            });
            m_btn_back_Button.onClick.AddListener(() =>
            {
                var config = m_model.SceneInfo;
                if (!string.IsNullOrEmpty(config.LoadSceneNameOnEnd))
                {
                    GameSceneManager.Instance.LoadScene(SceneLookup.GetEnum(config.LoadSceneNameOnEnd, false));
                }

                if (!string.IsNullOrEmpty(config.LoadMissionIDOnEnd))
                {
                    MissionSceneManager.Instance.LoadMissionScene(MissionSceneManager.Instance.GetMissionEnumBy(config.LoadMissionIDOnEnd, false));
                }

                if (m_model.PopScene())
                {
                    RefreshInfo();
                }
                else
                {
                    InvokeHidePanel();
                }
            });
            EventManager.Instance.AddEventListener <CGScenePointInfoChangeEvent>(OnCGScenePointInfoChange);
        }
        protected override void Callback()
        {
            if (m_isCGScene)
            {
                UI.UIManager.Instance().ShowStaticPanel(UIPanelType.UICommonCgscenePanel, new CGSceneDataProvider()
                {
                    CGSceneID = m_cgSceneName
                });
                CoreContainer.Instance.SetPlayerPosition(transform.position + DirecitonMapping [m_spawnDirection] * m_lengthBetweenTriggerAndSpwanPoint + new Vector3(0.0f, 0.5f, 0.0f));
            }
            else
            {
                if (m_teleportedGameScene == "")
                {
                    Debug.LogError("Teleport scene is not set. Use [Update Teleported Game Scene] to modify the value");
                }
                SceneLookupEnum scene = SceneLookup.GetEnum(m_teleportedGameScene);

                UI.UIManager.Instance().ShowPanel(UIPanelType.UICommonGameplayTransitionPanel, new CommonGamePlayTransitionDataProvider
                {
                    m_animationTranstionType = UI.Panels.CommonGamePlayTransitionPanel.AnimationType.FadeIn,
                    m_teleportedSceneName    = m_sceneEnumMap[scene]
                });

                GameSceneManager.Instance.LoadScene(scene, m_specificTeleportName, delegate()
                {
                    MissionSceneManager.Instance.LoadCurrentMissionScene(MissionSceneManager.LoadMissionBy.Teleport);
                });
            }
        }
Beispiel #5
0
 protected override void Callback()
 {
     if (m_isCGScene)
     {
         UI.UIManager.Instance().ShowStaticPanel(UIPanelType.UICommonCgscenePanel, new CGSceneDataProvider()
         {
             CGSceneID = m_cgSceneName
         });
         CoreContainer.Instance.SetPlayerPosition(transform.position + DirecitonMapping [m_spawnDirection] * m_lengthBetweenTriggerAndSpwanPoint + new Vector3(0.0f, 0.5f, 0.0f));
     }
     else
     {
         if (m_teleportGameScene == "")
         {
             Debug.LogError("Teleport scene is not set. Use [Update Teleported Game Scene] to modify the value");
         }
         SceneLookupEnum scene = SceneLookup.GetEnum(m_teleportGameScene);
         if (MissionSceneManager.Instance.IsGameSceneExistCurrentMission(scene))
         {
             GameSceneManager.Instance.LoadScene(scene);
             MissionSceneManager.Instance.LoadCurrentMissionScene();
         }
         else
         {
             Debug.LogError(m_teleportGameScene + " is not exist mission " + MissionSceneManager.Instance.GetCurrentMission().ToString());
         }
     }
 }
 private void PrintAllValidSceneName()
 {
     string [] sceneList = SceneLookup.GetAllSceneString();
     foreach (var sceneName in sceneList)
     {
         PrintLog(sceneName);
     }
 }
Beispiel #7
0
        public Scene Load(ProjectInfo projectInfo, SceneLookup scene)
        {
            var path = GetSceneFilePath(projectInfo, scene);

            CreateIfNotExists(path);
            var bytes = _fileService.ReadWithFile(path);

            return(_serializer.DeserializeData <Scene>(bytes));
        }
Beispiel #8
0
        protected void SaveScene(ProjectInfo projectInfo, Scene item)
        {
            var scenePath = GetSceneFilePath(projectInfo, SceneLookup.Create(item));

            CreateIfNotExists(scenePath);
            var bytes = _serializer.SerializeData(item);

            _fileService.SaveToFile(bytes, scenePath);
        }
        private void CloseCGScene()
        {
            var config = m_model.SceneInfo;

            string sceneName   = null;
            string missionName = null;

            if (m_storyInfo != null)
            {
                if (!m_isShowStory && !string.IsNullOrEmpty(m_storyInfo.config.StoryId))
                {
                    m_isShowStory = true;
                    InvokeShowPanel(UIPanelType.UICommonTalkPanel,
                                    new TalkDataProvider()
                    {
                        ID = m_storyInfo.config.StoryId, OnTalkEnd = CloseCGScene
                    });
                    return;
                }

                sceneName   = m_storyInfo.config.LoadSceneNameOnEnd;
                missionName = m_storyInfo.config.LoadMissionIDOnEnd;
                EvidenceDataManager.Instance.RemoveEvidenceStory(m_storyInfo);
                m_storyInfo = null;
            }

            if (!string.IsNullOrEmpty(config.LoadSceneNameOnEnd))
            {
                sceneName = config.LoadSceneNameOnEnd;
            }
            if (!string.IsNullOrEmpty(config.LoadMissionIDOnEnd))
            {
                missionName = config.LoadMissionIDOnEnd;
            }

            if (!string.IsNullOrEmpty(sceneName))
            {
                GameSceneManager.Instance.LoadScene(SceneLookup.GetEnum(sceneName, false));
            }

            if (!string.IsNullOrEmpty(missionName))
            {
                MissionSceneManager.Instance.LoadMissionScene(MissionSceneManager.Instance.GetMissionEnumBy(missionName, false));
                InvokeHidePanel();
                return;
            }

            if (m_model.PopScene())
            {
                RefreshInfo();
            }
            else
            {
                InvokeHidePanel();
            }
        }
 public SceneLookupEnum GetTeleportScene()
 {
     if (SceneLookup.IsSceneExist(m_teleportedGameScene, false))
     {
         return(SceneLookup.GetEnum(m_teleportedGameScene));
     }
     else
     {
         return(SceneLookupEnum.World_Invalid);
     }
 }
Beispiel #11
0
        public void LoadScene(SceneLookupEnum key, LoadSceneMode loadSceneMode)
        {
            var scene = Addressables.LoadScene(SceneLookup.GetString(key), loadSceneMode);

            scene.Completed += (result) =>
            {
                if (result.Status == AsyncOperationStatus.Succeeded)
                {
                    m_scene.Add(key, result.Result);
                }
                else
                {
                    Debug.LogError($"场景======{key} 加载失败!!!");
                }
            };
        }
Beispiel #12
0
    static void OnSceneOpened(UnityEngine.SceneManagement.Scene scene, UnityEditor.SceneManagement.OpenSceneMode mode)
    {
        CheckForSceneScript(scene, mode);

        string path = Application.dataPath + SCENE_ROOT_PATH;

        if (!Directory.Exists(path))
        {
            Debug.LogWarning("Can`t find Assets/Scene. Make sure already execute Assets/Framework/Initialize Framework Directory");
            Debug.LogWarning("Cuureent setted path: " + path);
            return;
        }


        string [] files = Directory.GetFiles(path, "*.unity", SearchOption.AllDirectories);


        EditorBuildSettingsScene [] scenes = new EditorBuildSettingsScene [files.Length];

        for (int i = 0; i < files.Length; ++i)
        {
            string scenePath = files [i];

            scenePath = scenePath.Replace("\\", "/");
            scenePath = scenePath.Substring(scenePath.IndexOf("Assets" + SCENE_ROOT_PATH));

            scenes [i]         = new EditorBuildSettingsScene(scenePath, true);
            scenes [i].enabled = false;

            if (files [i].Contains(SceneLookup.GetString(SceneLookupEnum.World_GameRoot)))               // == GameRoot
            {
                scenes [i].enabled = true;
            }
        }

        EditorBuildSettings.scenes = scenes;
        if (scenes.Length == 0)
        {
            Debug.LogWarning("Generated new build setting contain 0 scene, please check path of scene root");
        }
        Debug.Log("Generated new build setting for scenes");
        for (int i = 0; i < scenes.Length; ++i)
        {
            Debug.Log("No." + i + "-- Scene Path: " + scenes [i].path);
        }
    }
Beispiel #13
0
 public bool LoadScene(SceneLookupEnum requestSceneEnum)
 {
     if (SceneLookup.IsSceneExist(requestSceneEnum))
     {
         if (m_currentSceneEnum != SceneLookupEnum.World_GameRoot)
         {
             PrefabManager.Instance.UnloadScene(m_currentSceneEnum);
         }
         SetCurrentSceneEnum(requestSceneEnum);
         PrefabManager.Instance.LoadScene(requestSceneEnum, LoadSceneMode.Additive);
         StartCoroutine(CheckSceneIsLoaded());
         return(true);
     }
     else
     {
         return(false);
     }
 }
Beispiel #14
0
    static void LoadFirstSceneAtGameBegins()
    {
        LogPrinter.ShowSceneInfo();

        if (!isPlayFromGameRoot)
        {
            return;
        }

        if (EditorBuildSettings.scenes.Length == 0)
        {
            Debug.LogWarning("The scene build list is empty. Can't play from first scene.");
            return;
        }

        //SceneManager.GetSceneByName();
        SceneManager.LoadScene(SceneLookup.GetString(SceneLookupEnum.World_GameRoot), LoadSceneMode.Single);
    }
Beispiel #15
0
        private bool LoadScene(string sceneName)
        {
            bool isSceneExist = SceneLookup.IsSceneExistNoMatchCase(sceneName);

            if (isSceneExist)
            {
                SceneLookupEnum scene = SceneLookup.GetEnum(sceneName, false);
                GameSceneManager.Instance.LoadScene(scene);
                //StarPlatinum.PrefabManager.Instance.LoadScene(scene, UnityEngine.SceneManagement.LoadSceneMode.Additive);
                return(true);
            }
            else
            {
                PrintLog("Scene [" + sceneName + "] Is Not Exist! Please check scene name again!");

                PrintAllValidSceneName();
                return(false);
            }
        }
Beispiel #16
0
        public bool IsGameSceneExistCurrentMission(SceneLookupEnum gameSceneEnum)
        {
            if (gameSceneEnum == SceneLookupEnum.World_GameRoot)
            {
                Debug.LogError("Game scene enum is invalid");
                return(false);
            }
            string missionSceneName = GenerateSceneName(m_currentMission, gameSceneEnum);

            if (SceneLookup.IsSceneExistNoMatchCase(missionSceneName))
            {
                return(true);
            }
            else
            {
                Debug.LogError("Request scene is not exist: " + missionSceneName);
                return(false);
            }
        }
Beispiel #17
0
        //For runtime
        public bool IsMissionSceneExist(MissionEnum mission)
        {
            if (GameSceneManager.Instance.GetCurrentSceneEnum() == SceneLookupEnum.World_GameRoot)
            {
                Debug.LogError("Current game scene is invalid");
                return(false);
            }
            string missionSceneName = GenerateSceneName(mission);

            if (SceneLookup.IsSceneExistNoMatchCase(missionSceneName))
            {
                return(true);
            }
            else
            {
                Debug.LogError("Request mission scene is not exist: " + mission);
                return(false);
            }
        }
Beispiel #18
0
        public bool LoadMissionScene(MissionEnum requestMission)
        {
            if (IsMissionSceneExist(requestMission))
            {
                CoreContainer.Instance.SetPlayerDisable();
                string          sceneName = GenerateSceneName(requestMission);
                SceneLookupEnum sceneEnum = SceneLookup.GetEnum(sceneName, false);
                SetCurrentMission(requestMission);

                if (!m_currentMissionScene.LoadScene(sceneEnum))
                {
                    return(false);
                }
                return(true);
            }
            else
            {
                return(false);
            }
        }
    private void LoadCameraRange()
    {
        string[]   sceneList = SceneLookup.GetAllSceneString();
        string     scene     = "";
        GameObject cameraRange;
        Collider   collider;

        for (int i = 0; i < sceneList.Length; i++)
        {
            scene       = sceneList[i];
            cameraRange = GameObject.Find(scene);
            if (cameraRange != null)
            {
                collider = cameraRange.GetComponent <Collider>();
                m_moveRangeDic.Add(scene, collider);
            }
            else
            {
                m_moveRangeDic.Add(scene, null);
            }
        }
    }
Beispiel #20
0
    private void ParseCommand(string text)
    {
        bool isReadyChangeScene = false;

        text = text.ToLower();
        string [] words = text.Split(' ');

        foreach (string word in words)
        {
            if (word == "loadscene")
            {
                isReadyChangeScene = true;
                continue;
            }
            if (isReadyChangeScene)
            {
                isReadyChangeScene = false;

                bool isSceneExist = SceneLookup.IsSceneExist(word, false);
                if (isSceneExist)
                {
                    StarPlatinum.PrefabManager.Instance.LoadScene(SceneLookup.GetEnum(word, false), UnityEngine.SceneManagement.LoadSceneMode.Additive);
                }
                else
                {
                    PrintLog("Scene [" + word + "] Is Not Exist! Please check scene name again!");
                    PrintLog("All Available Scene");
                    PrintAllValidSceneName();
                }
                continue;
            }
        }
        if (isReadyChangeScene)
        {
            isReadyChangeScene = false;
            PrintLog("All Available Scene");
            PrintAllValidSceneName();
        }
    }
Beispiel #21
0
        private void SetNextAction(StoryAction storyAction)
        {
            if (storyAction == null)
            {
                EventManager.Instance.SendEvent(new LabelEndEvent()
                {
                    LabelID = m_currentID
                });
                m_currentID = null;
                SetActionState(ActionState.Waiting);
                if (m_nextIDQueue.Count > 0)
                {
                    return;
                }
                if (RecoverRecord())
                {
                    return;
                }
                InvokeHidePanel();
                UIPanelDataProvider.OnTalkEnd?.Invoke();
                return;
            }
            m_actionType = storyAction.Type;
            m_curAction  = storyAction;
            SetActionState(ActionState.Actioning);
            Debug.LogWarning($"当前行为:{m_actionType}");

            switch (storyAction.Type)
            {
            case StoryActionType.WaitClick:
                WaitClickEnd();
                break;

            case StoryActionType.Name:
                SetNameContent(storyAction.Content);
                break;

            case StoryActionType.Content:
                if (m_typewriterCoroutine != null)
                {
                    StopCoroutine(m_typewriterCoroutine);
                }
                m_typewriterCoroutine = StartCoroutine(Typewriter(storyAction.Content));
                break;

            case StoryActionType.Color:
                m_textHelp.PushColor(storyAction.Content);
                SetActionState(ActionState.End);
                break;

            case StoryActionType.Font:
                m_textHelp.PushFont(storyAction.Content);
                SetActionState(ActionState.End);
                break;

            case StoryActionType.Jump:
                var jumpAction = storyAction as StoryJumpAction;
                if (jumpAction == null)
                {
                    Debug.LogError("JumpAction null!!!!!!!Please check");
                    SetActionState(ActionState.End);
                    return;
                }
                Debug.Log($"=== options:{jumpAction.Options}");
                ShowJumpOption(jumpAction.Options);
                break;

            case StoryActionType.Picture:
                var pictureAction = storyAction as StoryShowPictureAction;
                if (pictureAction == null)
                {
                    Debug.LogError("pictureAction null!!!!!!!Please check");
                    SetActionState(ActionState.End);
                    return;
                }

                ShowPicture(pictureAction.Content, pictureAction.Pos);
                SetActionState(ActionState.End);
                break;

            case StoryActionType.Waiting:
                SetActionState(ActionState.Actioning);
                if (m_skip == false)
                {
                    CallbackTime(float.Parse(storyAction.Content), () => { SetActionState(ActionState.End); });
                }
                else
                {
                    SetActionState(ActionState.End);
                }
                break;

            case StoryActionType.PictureMove:
                var pictureMoveAction = storyAction as StoryPictureMoveAction;
                MovePicture(pictureMoveAction.PicID, pictureMoveAction.StartX, pictureMoveAction.StartY, pictureMoveAction.EndX, pictureMoveAction.EndY, pictureMoveAction.Ease, pictureMoveAction.Duration);
                break;

            case StoryActionType.FontSize:
                m_textHelp.PushFontSize(storyAction.Content);
                SetActionState(ActionState.End);
                break;

            case StoryActionType.Bold:
                m_textHelp.PushBold();
                SetActionState(ActionState.End);
                break;

            case StoryActionType.ChangeBGM:
                SetBgm(storyAction.Content);
                break;

            case StoryActionType.ChangeEffectMusic:
                PlayEffectMusic(storyAction.Content);
                break;

            case StoryActionType.TypewriterInterval:
                m_textHelp.TypewriterInterval = float.Parse(storyAction.Content);
                SetActionState(ActionState.End);
                break;

            case StoryActionType.ShowEvidence:
                InvokeShowPanel(UIPanelType.UICommonDetectiveNotesPanel, new EvidenceDataProvider()
                {
                    OnShowEvidence  = OnSelectEvidenceEnd,
                    IsOnEvidence    = true,
                    CurState        = CommonMapsTipsEvidencesPanel.ShowState.Evidences,
                    IsShowSelectBtn = true
                });
                return;

            case StoryActionType.LoadGameScene:
                GameSceneManager.Instance.LoadScene(SceneLookup.GetEnum(m_curAction.Content, false));
                bool result = MissionSceneManager.Instance.LoadCurrentMissionScene();
                if (result == false)
                {
                    Debug.LogError("Current Game Scene: " + m_curAction.Content + " doesn`t contain Mission Scene " +
                                   MissionSceneManager.Instance.GetCurrentMissionEnum().ToString());
                }
                SetActionState(ActionState.End);
                break;

            case StoryActionType.LoadMission:
                var action = m_curAction as StoryLoadMissionAction;
                MissionSceneManager.Instance.SetCurrentMission(action.Mission);
                MissionSceneManager.Instance.LoadCurrentMissionScene();
                //if (MissionSceneManager.Instance.IsMissionSceneExist(action.Mission))
                //{
                //    MissionSceneManager.Instance.LoadMissionScene(action.Mission);
                //}
                //else
                //{
                //    MissionSceneManager.Instance.LoadMissionScene(MissionEnum.None);
                //}
                SetActionState(ActionState.End);
                break;

            case StoryActionType.LoadCgScene:
                UI.UIManager.Instance().ShowStaticPanel(UIPanelType.UICommonCgscenePanel, new CGSceneDataProvider()
                {
                    CGSceneID = m_curAction.Content
                });
                SetActionState(ActionState.End);
                break;

            case StoryActionType.CloseCgScene:
                if (UIManager.Instance().IsPanelShow(UIPanelType.UICommonCgscenePanel))
                {
                    StarPlatinum.TimerService.Instance.AddTimer(0.01f, () =>
                    {
                        EventManager.Instance.SendEvent(new CGSceneCloseEvent()
                        {
                            m_cgSceneId = m_curAction.Content
                        });
                    });
                }
                SetActionState(ActionState.End);
                break;

            case StoryActionType.TriggerEvent:
                var triggerAction = m_curAction as StoryEventAction;
                EventManager.Instance.SendEvent(triggerAction.Event);
                SetActionState(ActionState.End);
                break;

            case StoryActionType.PlayAnimation:
                SetActionState(ActionState.End);
                //TODO:播放动画
                break;

            case StoryActionType.PlayInteractionAnimation:
                EventManager.Instance.SendEvent(new PlayInteractionAnimationEvent()
                {
                    m_itemName = m_curAction.Content
                });
                SetActionState(ActionState.End);
                break;

            case StoryActionType.ChangeBackground:
                ShowBG(storyAction.Content);
                SetActionState(ActionState.End);
                break;

            case StoryActionType.Wrap:
                m_txtPro_content_TextMeshProUGUI.text += '\n';
                SetActionState(ActionState.End);
                break;

            case StoryActionType.ChangeSoundVolume:
                int volume = int.Parse(m_curAction.Content);
                SoundService.Instance.SetVolumePercentage(volume);
                SetActionState(ActionState.End);
                break;

            case StoryActionType.EnterControversy:
                UIManager.Instance().ShowPanel(UIPanelType.UIJudgmentControversyPanel, new ControversyDataProvider()
                {
                    ID = m_curAction.Content
                });
                SetActionState(ActionState.End);
                break;

            case StoryActionType.CutIn:
                UIManager.Instance().ShowPanel(UIPanelType.UICommonBreaktheoryPanel, new BreakTheoryDataProvider()
                {
                    Type = EnumBreakTheoryType.CutIn, ImgKey = m_curAction.Content, CloseCallback =
                        () =>
                    {
                        SetActionState(ActionState.End);
                    }
                });
                break;

            case StoryActionType.LoadSkybox:
            {
                StoryLoadSkyboxAction skyboxAction = m_curAction as StoryLoadSkyboxAction;
                SkyboxManager.Instance().UpdateSkybox(skyboxAction.m_skyEnum);
                SetActionState(ActionState.End);
            }
            break;

            case StoryActionType.ChangeTalkPanelType:
                SetTalkPanelType(m_curAction.Content);
                break;

            case StoryActionType.ChangeFrontImg:
                SetFrontImg(m_curAction.Content);
                break;

            case StoryActionType.RemoveAllExhibit:
                EvidenceDataManager.Instance.RemoveAllEvidence();
                SetActionState(ActionState.End);
                break;

            case StoryActionType.TimeLine:
                PrefabManager.Instance.LoadAssetAsync <TimelineAsset>(m_curAction.Content, (res) =>
                {
                    if (res.status != RequestStatus.FAIL)
                    {
                        gameObject.SetActive(false);
                        TimelineManager.Instance().PlayTimeline(res.result as TimelineAsset, null, () =>
                        {
                            gameObject.SetActive(true);
                            SetActionState(ActionState.End);
                        });
                    }
                    else
                    {
                        SetActionState(ActionState.End);
                    }
                });
                break;

            case StoryActionType.AddEvidence:
                EvidenceDataManager.Instance.AddEvidence(m_curAction.Content);
                SetActionState(ActionState.End);
                break;

            case StoryActionType.RemoveEvidence:
                EvidenceDataManager.Instance.RemoveEvidence(m_curAction.Content);
                SetActionState(ActionState.End);
                break;

            case StoryActionType.AddTip:
                Tips.TipsManager.Instance.UnlockTip(m_curAction.Content, Tips.TipsManager.ConvertDateTimeToLong(System.DateTime.Now));      // 添加tip 数据
                SetActionState(ActionState.End);
                break;

            case StoryActionType.Position:
            {
                StoryVector3Action vector3Action = m_curAction as StoryVector3Action;
                CoreContainer.Instance.SetPlayerPosition(vector3Action.m_vector);
                SetActionState(ActionState.End);
            }
            break;

            case StoryActionType.Rotation:
            {
                StoryVector3Action vector3Action = m_curAction as StoryVector3Action;
                VMCameraManager.Instance().SetLookAtRotation(vector3Action.m_vector.x, vector3Action.m_vector.y, vector3Action.m_vector.z);
                SetActionState(ActionState.End);
            }
            break;

            case StoryActionType.GameEvent:
            {
                EventManager.Instance.SendEvent(new GameEvent()
                    {
                        EventName = m_curAction.Content
                    });
                SetActionState(ActionState.End);
            }
            break;

            default:
                Debug.LogError($"未处理对话行为:{storyAction.Type}");
                break;
            }
        }
Beispiel #22
0
 public void LoadScene(SceneLookupEnum sceneName, SceneLoadMode loadMode, object sceneData = null)
 {
     m_currentScene = sceneName;
     LoadScene(SceneLookup.GetString(sceneName), loadMode, sceneData);
     CameraService.Instance.UpdateCurrentCamera();
 }
Beispiel #23
0
        public void Remove(ProjectInfo projectInfo, SceneLookup item)
        {
            var sceneDirectory = GetSceneFolder(projectInfo, item);

            _fileService.RemoveDirectory(sceneDirectory);
        }
Beispiel #24
0
        private void SetNextAction(StoryAction storyAction)
        {
            if (storyAction == null)
            {
                EventManager.Instance.SendEvent(new LabelEndEvent()
                {
                    LabelID = m_currentID
                });
                m_currentID = null;
                SetActionState(ActionState.Waiting);
                if (m_nextIDQueue.Count > 0)
                {
                    return;
                }
                if (RecoverRecord())
                {
                    return;
                }
                InvokeHidePanel();
                UIPanelDataProvider.OnTalkEnd?.Invoke();
                return;
            }
            m_actionType = storyAction.Type;
            m_curAction  = storyAction;
            SetActionState(ActionState.Actioning);
            Debug.LogWarning($"当前行为:{m_actionType}");

            switch (storyAction.Type)
            {
            case StoryActionType.WaitClick:
                WaitClickEnd();
                break;

            case StoryActionType.Name:
                SetNameContent(storyAction.Content);
                break;

            case StoryActionType.Content:
                if (m_typewriterCoroutine != null)
                {
                    StopCoroutine(m_typewriterCoroutine);
                }
                m_typewriterCoroutine = StartCoroutine(Typewriter(storyAction.Content));
                break;

            case StoryActionType.Color:
                m_textHelp.PushColor(storyAction.Content);
                SetActionState(ActionState.End);
                break;

            case StoryActionType.Font:
                m_textHelp.PushFont(storyAction.Content);
                SetActionState(ActionState.End);
                break;

            case StoryActionType.Jump:
                var jumpAction = storyAction as StoryJumpAction;
                if (jumpAction == null)
                {
                    Debug.LogError("JumpAction null!!!!!!!Please check");
                    SetActionState(ActionState.End);
                    return;
                }
                Debug.Log($"=== options:{jumpAction.Options}");
                ShowJumpOption(jumpAction.Options);
                break;

            case StoryActionType.Picture:
                var pictureAction = storyAction as StoryShowPictureAction;
                if (pictureAction == null)
                {
                    Debug.LogError("pictureAction null!!!!!!!Please check");
                    SetActionState(ActionState.End);
                    return;
                }

                ShowPicture(pictureAction.Content, pictureAction.Pos);
                SetActionState(ActionState.End);
                break;

            case StoryActionType.Waiting:
                SetActionState(ActionState.Actioning);
                if (m_skip == false)
                {
                    CallbackTime(float.Parse(storyAction.Content), () => { SetActionState(ActionState.End); });
                }
                else
                {
                    SetActionState(ActionState.End);
                }
                break;

            case StoryActionType.PictureMove:
                var pictureMoveAction = storyAction as StoryPictureMoveAction;
                MovePicture(pictureMoveAction.PicID, pictureMoveAction.StartX, pictureMoveAction.StartY, pictureMoveAction.EndX, pictureMoveAction.EndY, pictureMoveAction.Ease, pictureMoveAction.Duration);
                break;

            case StoryActionType.FontSize:
                m_textHelp.PushFontSize(storyAction.Content);
                SetActionState(ActionState.End);
                break;

            case StoryActionType.Bold:
                m_textHelp.PushBold();
                SetActionState(ActionState.End);
                break;

            case StoryActionType.ChangeBGM:
                SetBgm(storyAction.Content);
                break;

            case StoryActionType.ChangeEffectMusic:
                PlayEffectMusic(storyAction.Content);
                break;

            case StoryActionType.TypewriterInterval:
                m_textHelp.TypewriterInterval = float.Parse(storyAction.Content);
                SetActionState(ActionState.End);
                break;

            case StoryActionType.ShowEvidence:
                InvokeShowPanel(UIPanelType.UICommonMapsTipsEvidencesPanel, new EvidenceDataProvider()
                {
                    OnShowEvidence = OnSelectEvidenceEnd,
                    IsOnEvidence   = true,
                    CurState       = CommonMapsTipsEvidencesPanel.ShowState.Evidences
                });
                return;

            case StoryActionType.LoadGameScene:
                GameSceneManager.Instance.LoadScene(SceneLookup.GetEnum(m_curAction.Content, false));
                bool result = MissionSceneManager.Instance.LoadCurrentMissionScene();
                if (result == false)
                {
                    Debug.LogError("Current Game Scene: " + m_curAction.Content + " doesn`t contain Mission Scene " +
                                   MissionSceneManager.Instance.GetCurrentMission().ToString());
                }
                break;

            case StoryActionType.LoadMission:
                var action = m_curAction as StoryLoadMissionAction;
                MissionSceneManager.Instance.LoadMissionScene(action.Mission);
                break;

            case StoryActionType.TriggerEvent:
                var triggerAction = m_curAction as StoryEventAction;
                EventManager.Instance.SendEvent(triggerAction.Event);
                SetActionState(ActionState.End);
                return;

            case StoryActionType.PlayAnimation:
                SetActionState(ActionState.End);
                //TODO:播放动画
                return;

            case StoryActionType.ChangeBackground:
                ShowBG(storyAction.Content);
                SetActionState(ActionState.End);
                break;

            case StoryActionType.Wrap:
                m_content.text += '\n';
                SetActionState(ActionState.End);
                break;

            case StoryActionType.ChangeSoundVolume:
                int volume = int.Parse(m_curAction.Content);
                SoundService.Instance.SetVolumePercentage(volume);
                SetActionState(ActionState.End);
                break;

            default:
                Debug.LogError($"未处理对话行为:{storyAction.Type}");
                break;
            }
        }
Beispiel #25
0
        protected virtual string GetSceneFolder(ProjectInfo projectInfo, SceneLookup lookup)
        {
            var scenesFolder = GetSceneFolder(projectInfo);

            return(_fileService.CombinePath(scenesFolder, lookup.Id.ToString()));
        }
Beispiel #26
0
        protected virtual string GetSceneFilePath(ProjectInfo projectInfo, SceneLookup lookup)
        {
            var sceneFolder = GetSceneFolder(projectInfo, lookup);

            return(_fileService.CombinePath(sceneFolder, SceneFileName));
        }
Beispiel #27
0
 public void LoadScene(SceneLookupEnum key, LoadSceneMode loadSceneMode)
 {
     Addressables.LoadScene(SceneLookup.GetString(key), loadSceneMode);
     SceneManager.Instance().SetCurrentScene(key);
 }
Beispiel #28
0
 public SceneLookupEnum GetTeleportScene()
 {
     return(SceneLookup.GetEnum(m_teleportGameScene));
 }