// 跳过情节 private void onStorySkip(EventBase e) { // 没有后续 情节结束 if (mCurRes == null || mCurRes.nextId < 0 || !DataManager.StoryTable.ContainsKey(mCurRes.nextId)) { StoryEnd(); return; } // 执行后续步骤的跳过触发器 StoryTableItem res = DataManager.StoryTable[mCurRes.nextId] as StoryTableItem; while (res != null) { if (!string.IsNullOrEmpty(res.skipTrigger)) { doFunciton(mCurRes.skipTrigger); } if (res.nextId < 0 || !DataManager.StoryTable.ContainsKey(res.nextId)) { break; } res = DataManager.StoryTable[res.nextId] as StoryTableItem; } // 情节结束 StoryEnd(); }
// 情节步骤开始 private void onStoryStepBegin(EventBase e) { StoryTableItem nextRes = StoryManager.Instance.GetCurStoryRes(); if (mRes != null) { // 需要关闭对侧的对话框 if (nextRes.closeOther > 0 && !isSamePos(mRes.headPos, nextRes.headPos)) { if (mRes.headPos == 0 || mRes.headPos == 1) { mTopDlg.Skip(); } else { mBottomDlg.Skip(); } } } mRes = nextRes; mSkipBtn.gameObject.SetActive(mRes.canSkipAll); if (mRes.headPos == 0 || mRes.headPos == 1) { mTopDlg.UpdateStory(mRes); } else { mBottomDlg.UpdateStory(mRes); } }
// 更新情节 public void UpdateStory(StoryTableItem res) { if (mRes == null) { mTimer = 0.0f; } else { mTimer = 3.0f; } mRes = res; mStepWaitTime = (float)(mRes.keepTime * 0.001); if (mRes.headAtlas.Equals("player")) { PlayerDataModule module = ModuleManager.Instance.FindModule <PlayerDataModule>(); if (module != null) { UIAtlasHelper.SetSpriteImage(mHead, "touxiang:player_" + module.GetResId().ToString()); } } else { UIAtlasHelper.SetSpriteImage(mHead, mRes.headAtlas); } if (mRes.headMirror < 1) { mHead.transform.localRotation = Quaternion.Euler(new Vector3(0.0f, 0.0f, 0.0f)); } else { mHead.transform.localRotation = Quaternion.Euler(new Vector3(0.0f, 180.0f, 0.0f)); } // mTitle.text = mRes.title; // mContent.text = mRes.content; mBtn.alpha = 0.0f; StopEffect(); if (mRes.headPos == 0 || mRes.headPos == 2) { LeftMode(); } else if (mRes.headPos == 1 || mRes.headPos == 3) { RightMode(); } else { MiddleMode(); } mState = UIState.STATE_0; }
protected override void OnClose() { mRes = null; EventDelegate.Remove(mSkipBtn.onClick, onSkipBtnClicked); EventDelegate.Remove(mMaskBtn.onClick, onMaskBtnClicked); EventSystem.Instance.removeEventListener(StoryEvent.STORY_STEP_BEGIN, onStoryStepBegin); EventSystem.Instance.removeEventListener(StoryEvent.STORY_END, onStoryEnd); }
// 跳过 public void Skip() { mRes = null; if (mState > UIState.STATE_ORIGINAL && mState < UIState.STATE_4) { mTimer = 0.0f; mState = UIState.STATE_4; } }
// 情节步骤结束 private void onStoryStepFinish(EventBase e) { // 没有后续 情节结束 if (mCurRes.nextId < 0 || !DataManager.StoryTable.ContainsKey(mCurRes.nextId)) { StoryEnd(); return; } // 更新当前情节 mCurRes = DataManager.StoryTable[mCurRes.nextId] as StoryTableItem; // 执行情节的功能触发器 doFunciton(mCurRes.normalTrigger); EventSystem.Instance.PushEvent(new StoryEvent(StoryEvent.STORY_STEP_BEGIN)); }
// 情节结束 private void StoryEnd() { BaseScene scene = SceneManager.Instance.GetCurScene(); if (scene != null) { scene.AddAllActionFlag(); } // BattleUnit unit = PlayerController.Instance.GetControlObj() as BattleUnit; // if (unit != null) // { // unit.SetLeague(LeagueDef.Red); // } mCurRes = null; mIsRunning = false; EventSystem.Instance.PushEvent(new StoryEvent(StoryEvent.STORY_END, mOriginalId)); mOriginalId = -1; }
// 启动情节 public bool StartStory(int id) { if (mIsRunning) { GameDebug.LogError("不要在一个未结束的情节中启动另一情节!"); return(false); } if (!DataManager.StoryTable.ContainsKey(id)) { return(false); } mCurRes = DataManager.StoryTable[id] as StoryTableItem; if (mCurRes == null) { return(false); } mOriginalId = id; WindowManager.Instance.OpenUI("story"); BaseScene scene = SceneManager.Instance.GetCurScene(); if (scene != null) { scene.RemoveAllActionFlag(); } // BattleUnit unit = PlayerController.Instance.GetControlObj() as BattleUnit; // if (unit != null) // { // unit.SetLeague(LeagueDef.Neutral); // } return(mIsRunning = true); }