|
@@ -407,6 +407,11 @@ namespace GFGGame
|
|
_ui.m_list.visible = false;
|
|
_ui.m_list.visible = false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 初始化对话框/语音/CG等
|
|
|
|
+ /// </summary>
|
|
|
|
+ /// <param name="storyDialogCfg"></param>
|
|
|
|
+ /// <returns></returns>
|
|
private IEnumerator ShowDialog(StoryDialogCfg storyDialogCfg)
|
|
private IEnumerator ShowDialog(StoryDialogCfg storyDialogCfg)
|
|
{
|
|
{
|
|
if (storyDialogCfg.showChangeName == 1 && StorageDataManager.Instance.GetStorageValue(ConstStorageId.CHANGE_NAME) == 0)
|
|
if (storyDialogCfg.showChangeName == 1 && StorageDataManager.Instance.GetStorageValue(ConstStorageId.CHANGE_NAME) == 0)
|
|
@@ -432,139 +437,152 @@ namespace GFGGame
|
|
string roleName = storyDialogCfg.name;
|
|
string roleName = storyDialogCfg.name;
|
|
string headRes = storyDialogCfg.head;
|
|
string headRes = storyDialogCfg.head;
|
|
string headAniRes = storyDialogCfg.headAni;
|
|
string headAniRes = storyDialogCfg.headAni;
|
|
|
|
+ string[] effectInfo = storyDialogCfg.effectInfoArr;
|
|
|
|
|
|
VoiceManager.Instance.StopVoice();
|
|
VoiceManager.Instance.StopVoice();
|
|
// 如果配置了语音,读取语音
|
|
// 如果配置了语音,读取语音
|
|
VoiceManager.Instance.LoadRes(ResPathUtil.GetCardSoundPath("test", "wav"));
|
|
VoiceManager.Instance.LoadRes(ResPathUtil.GetCardSoundPath("test", "wav"));
|
|
|
|
+ _wordList = Regex.Split(words, "&&");
|
|
|
|
|
|
- if (roleName == "self")
|
|
|
|
|
|
+ if (effectInfo.Length > 0)
|
|
{
|
|
{
|
|
- roleName = RoleDataManager.roleName;
|
|
|
|
|
|
+ // 等待CG播放完毕直接进入下一段
|
|
|
|
+ Timers.inst.StartCoroutine(WaitCGAnimFinish(int.Parse(effectInfo[1])));
|
|
}
|
|
}
|
|
- //回顾
|
|
|
|
- if (roleName != null)
|
|
|
|
- {
|
|
|
|
- _dialogListLookBack.Add("[color=#FDA2B1]" + roleName + "[/color]");
|
|
|
|
- }
|
|
|
|
- if (!string.IsNullOrEmpty(headAniRes) || storyDialogCfg.suitId > 0)
|
|
|
|
- {
|
|
|
|
- //显示对话框半身像
|
|
|
|
- _ui.m_dialogHead.target.visible = true;
|
|
|
|
- _ui.m_dialogHead.m_txtName.text = roleName;
|
|
|
|
- _ui.m_dialogHead.m_comphead.m_head.visible = false;
|
|
|
|
- _ui.m_dialogHead.m_comphead.m_holder.visible = true;
|
|
|
|
|
|
|
|
- var headAniCfg = HeadAniCfgArray.Instance.GetCfg(headAniRes);
|
|
|
|
- if (headAniCfg != null && !string.IsNullOrEmpty(headAniCfg.headAni))
|
|
|
|
|
|
+ // 有对话
|
|
|
|
+ if (_wordList.Length > 0)
|
|
|
|
+ {
|
|
|
|
+ if (roleName == "self")
|
|
{
|
|
{
|
|
- //独立动画
|
|
|
|
- _ui.m_dialogHead.m_compDressUp.target.visible = false;
|
|
|
|
- _ui.m_dialogHead.m_comphead.target.visible = true;
|
|
|
|
- _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_dialogHead.m_comphead.m_holder, "ui_nzbq", headAniCfg.headAni);
|
|
|
|
|
|
+ roleName = RoleDataManager.roleName;
|
|
}
|
|
}
|
|
- else
|
|
|
|
|
|
+ //回顾
|
|
|
|
+ if (roleName != null)
|
|
|
|
+ {
|
|
|
|
+ _dialogListLookBack.Add("[color=#FDA2B1]" + roleName + "[/color]");
|
|
|
|
+ }
|
|
|
|
+ if (!string.IsNullOrEmpty(headAniRes) || storyDialogCfg.suitId > 0)
|
|
{
|
|
{
|
|
- //换装
|
|
|
|
- _ui.m_dialogHead.m_compDressUp.target.visible = true;
|
|
|
|
- _ui.m_dialogHead.m_comphead.target.visible = false;
|
|
|
|
- _dressUpObjUI.ResetSceneObj(80, true, false, null, false);
|
|
|
|
- if (storyDialogCfg.suitId > 0)
|
|
|
|
|
|
+ //显示对话框半身像
|
|
|
|
+ _ui.m_dialogHead.target.visible = true;
|
|
|
|
+ _ui.m_dialogHead.m_txtName.text = roleName;
|
|
|
|
+ _ui.m_dialogHead.m_comphead.m_head.visible = false;
|
|
|
|
+ _ui.m_dialogHead.m_comphead.m_holder.visible = true;
|
|
|
|
+
|
|
|
|
+ var headAniCfg = HeadAniCfgArray.Instance.GetCfg(headAniRes);
|
|
|
|
+ if (headAniCfg != null && !string.IsNullOrEmpty(headAniCfg.headAni))
|
|
{
|
|
{
|
|
- _dressUpObjUI.dressUpObj.PutOnSuitCfg(storyDialogCfg.suitId, false, new int[] { ConstDressUpItemType.SHOU_CHI_WU }, false, false);
|
|
|
|
|
|
+ //独立动画
|
|
|
|
+ _ui.m_dialogHead.m_compDressUp.target.visible = false;
|
|
|
|
+ _ui.m_dialogHead.m_comphead.target.visible = true;
|
|
|
|
+ _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_dialogHead.m_comphead.m_holder, "ui_nzbq", headAniCfg.headAni);
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- _dressUpObjUI.dressUpObj.PutOnDressUpData(CustomSuitDataManager.GetCurrentSuitData().dressUpData, new int[] { ConstDressUpItemType.SHOU_CHI_WU });
|
|
|
|
- if (_dressUpObjUI.dressUpObj.actionId > 0)
|
|
|
|
|
|
+ //换装
|
|
|
|
+ _ui.m_dialogHead.m_compDressUp.target.visible = true;
|
|
|
|
+ _ui.m_dialogHead.m_comphead.target.visible = false;
|
|
|
|
+ _dressUpObjUI.ResetSceneObj(80, true, false, null, false);
|
|
|
|
+ if (storyDialogCfg.suitId > 0)
|
|
{
|
|
{
|
|
- _dressUpObjUI.dressUpObj.CancelAction(true, new int[] { ConstDressUpItemType.SHOU_CHI_WU });
|
|
|
|
|
|
+ _dressUpObjUI.dressUpObj.PutOnSuitCfg(storyDialogCfg.suitId, false, new int[] { ConstDressUpItemType.SHOU_CHI_WU }, false, false);
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ _dressUpObjUI.dressUpObj.PutOnDressUpData(CustomSuitDataManager.GetCurrentSuitData().dressUpData, new int[] { ConstDressUpItemType.SHOU_CHI_WU });
|
|
|
|
+ if (_dressUpObjUI.dressUpObj.actionId > 0)
|
|
|
|
+ {
|
|
|
|
+ _dressUpObjUI.dressUpObj.CancelAction(true, new int[] { ConstDressUpItemType.SHOU_CHI_WU });
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (headAniCfg != null && headAniCfg.faceId > 0)
|
|
|
|
+ {
|
|
|
|
+ //表情
|
|
|
|
+ _dressUpObjUI.dressUpObj.AddOrRemove(headAniCfg.faceId, true);
|
|
|
|
+ _dressUpObjUI.UpdateWrapper(_ui.m_dialogHead.m_compDressUp.m_holder);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if (headAniCfg != null && headAniCfg.faceId > 0)
|
|
|
|
- {
|
|
|
|
- //表情
|
|
|
|
- _dressUpObjUI.dressUpObj.AddOrRemove(headAniCfg.faceId, true);
|
|
|
|
- _dressUpObjUI.UpdateWrapper(_ui.m_dialogHead.m_compDressUp.m_holder);
|
|
|
|
- }
|
|
|
|
|
|
+ _wordTextField = _ui.m_dialogHead.m_txtContent;
|
|
|
|
+ _arrow = _ui.m_dialogHead.m_iconNext;
|
|
|
|
+ lastTextFieldType = "head";
|
|
}
|
|
}
|
|
- _wordTextField = _ui.m_dialogHead.m_txtContent;
|
|
|
|
- _arrow = _ui.m_dialogHead.m_iconNext;
|
|
|
|
- lastTextFieldType = "head";
|
|
|
|
- }
|
|
|
|
- else if (!string.IsNullOrEmpty(headRes))
|
|
|
|
- {
|
|
|
|
- _ui.m_dialogHead.target.visible = true;
|
|
|
|
- _ui.m_dialogHead.m_txtName.text = roleName;
|
|
|
|
- _ui.m_dialogHead.m_comphead.m_head.visible = true;
|
|
|
|
- _ui.m_dialogHead.m_comphead.m_holder.visible = false;
|
|
|
|
-
|
|
|
|
- _ui.m_dialogHead.m_comphead.m_head.url = ResPathUtil.GetNpcHeadPath(headRes);
|
|
|
|
- _wordTextField = _ui.m_dialogHead.m_txtContent;
|
|
|
|
- _arrow = _ui.m_dialogHead.m_iconNext;
|
|
|
|
- lastTextFieldType = "head";
|
|
|
|
- }
|
|
|
|
- else if (!string.IsNullOrEmpty(roleName))
|
|
|
|
- {
|
|
|
|
- _ui.m_dialogName.target.visible = true;
|
|
|
|
- if (IsTeaParty)
|
|
|
|
|
|
+ else if (!string.IsNullOrEmpty(headRes))
|
|
{
|
|
{
|
|
- var roleContainerList = LeagueDataManager.Instance.RoleContainerList;
|
|
|
|
- var teapartyRoleCfg = TeapartyRoleCfgArray.Instance.GetCfgsByid(LeagueDataManager.Instance.TeaPartyId);
|
|
|
|
- int roleIndex = Convert.ToInt32(roleName);
|
|
|
|
- _ui.m_dialogName.m_txtName.text = teapartyRoleCfg[roleIndex - 1].name;
|
|
|
|
- _ui.m_dialogName.m_bgType.selectedIndex = 1;
|
|
|
|
- _ui.m_dialogName.m_showArrow.selectedIndex = 1;
|
|
|
|
-
|
|
|
|
- if (roleIndex <= roleContainerList.Count && roleContainerList[roleIndex - 1].MaxScoreRoleName != null && roleContainerList[roleIndex - 1].MaxScoreRoleName != "" && _ui.m_dialogName.m_txtName.text != "")
|
|
|
|
|
|
+ _ui.m_dialogHead.target.visible = true;
|
|
|
|
+ _ui.m_dialogHead.m_txtName.text = roleName;
|
|
|
|
+ _ui.m_dialogHead.m_comphead.m_head.visible = true;
|
|
|
|
+ _ui.m_dialogHead.m_comphead.m_holder.visible = false;
|
|
|
|
+
|
|
|
|
+ _ui.m_dialogHead.m_comphead.m_head.url = ResPathUtil.GetNpcHeadPath(headRes);
|
|
|
|
+ _wordTextField = _ui.m_dialogHead.m_txtContent;
|
|
|
|
+ _arrow = _ui.m_dialogHead.m_iconNext;
|
|
|
|
+ lastTextFieldType = "head";
|
|
|
|
+ }
|
|
|
|
+ else if (!string.IsNullOrEmpty(roleName))
|
|
|
|
+ {
|
|
|
|
+ _ui.m_dialogName.target.visible = true;
|
|
|
|
+ if (IsTeaParty)
|
|
{
|
|
{
|
|
- _ui.m_comPlayName.visible = true;
|
|
|
|
- _ui.m_txtPlayName.text = roleContainerList[roleIndex - 1].MaxScoreRoleName;
|
|
|
|
|
|
+ var roleContainerList = LeagueDataManager.Instance.RoleContainerList;
|
|
|
|
+ var teapartyRoleCfg = TeapartyRoleCfgArray.Instance.GetCfgsByid(LeagueDataManager.Instance.TeaPartyId);
|
|
|
|
+ int roleIndex = Convert.ToInt32(roleName);
|
|
|
|
+ _ui.m_dialogName.m_txtName.text = teapartyRoleCfg[roleIndex - 1].name;
|
|
|
|
+ _ui.m_dialogName.m_bgType.selectedIndex = 1;
|
|
|
|
+ _ui.m_dialogName.m_showArrow.selectedIndex = 1;
|
|
|
|
+
|
|
|
|
+ if (roleIndex <= roleContainerList.Count && roleContainerList[roleIndex - 1].MaxScoreRoleName != null && roleContainerList[roleIndex - 1].MaxScoreRoleName != "" && _ui.m_dialogName.m_txtName.text != "")
|
|
|
|
+ {
|
|
|
|
+ _ui.m_comPlayName.visible = true;
|
|
|
|
+ _ui.m_txtPlayName.text = roleContainerList[roleIndex - 1].MaxScoreRoleName;
|
|
|
|
|
|
- if (_ui.m_txtPlayName.text == RoleDataManager.roleName)
|
|
|
|
- _ui.m_dialogName.m_bgType.selectedIndex = 0;
|
|
|
|
|
|
+ if (_ui.m_txtPlayName.text == RoleDataManager.roleName)
|
|
|
|
+ _ui.m_dialogName.m_bgType.selectedIndex = 0;
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ _ui.m_comPlayName.visible = false;
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ _ui.m_dialogName.m_bgType.selectedIndex = 0;
|
|
|
|
+ _ui.m_dialogName.m_showArrow.selectedIndex = 0;
|
|
|
|
+ _ui.m_dialogName.m_txtName.text = roleName;
|
|
}
|
|
}
|
|
- else
|
|
|
|
- _ui.m_comPlayName.visible = false;
|
|
|
|
- }
|
|
|
|
- else {
|
|
|
|
- _ui.m_dialogName.m_bgType.selectedIndex = 0;
|
|
|
|
- _ui.m_dialogName.m_showArrow.selectedIndex = 0;
|
|
|
|
- _ui.m_dialogName.m_txtName.text = roleName;
|
|
|
|
- }
|
|
|
|
|
|
|
|
- _wordTextField = _ui.m_dialogName.m_txtContent;
|
|
|
|
- _arrow = _ui.m_dialogName.m_iconNext;
|
|
|
|
|
|
+ _wordTextField = _ui.m_dialogName.m_txtContent;
|
|
|
|
+ _arrow = _ui.m_dialogName.m_iconNext;
|
|
|
|
|
|
- if (!lastTextFieldType.Equals("name"))
|
|
|
|
- {
|
|
|
|
- lastTextFieldType = "name";
|
|
|
|
- StoryDialogDataManager.Instance.waiting = true;
|
|
|
|
- _ui.m_t0.Play(()=>
|
|
|
|
|
|
+ if (!lastTextFieldType.Equals("name"))
|
|
{
|
|
{
|
|
- StoryDialogDataManager.Instance.waiting = false;
|
|
|
|
- });
|
|
|
|
|
|
+ lastTextFieldType = "name";
|
|
|
|
+ StoryDialogDataManager.Instance.waiting = true;
|
|
|
|
+ _ui.m_t0.Play(() =>
|
|
|
|
+ {
|
|
|
|
+ StoryDialogDataManager.Instance.waiting = false;
|
|
|
|
+ });
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- }
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- if (IsTeaParty)
|
|
|
|
- _ui.m_dialogText.m_showArrow.selectedIndex = 1;
|
|
|
|
else
|
|
else
|
|
- _ui.m_dialogText.m_showArrow.selectedIndex = 0;
|
|
|
|
|
|
+ {
|
|
|
|
+ if (IsTeaParty)
|
|
|
|
+ _ui.m_dialogText.m_showArrow.selectedIndex = 1;
|
|
|
|
+ else
|
|
|
|
+ _ui.m_dialogText.m_showArrow.selectedIndex = 0;
|
|
|
|
|
|
- _ui.m_dialogText.target.visible = true;
|
|
|
|
- _wordTextField = _ui.m_dialogText.m_txtContent;
|
|
|
|
- _arrow = _ui.m_dialogText.m_iconNext;
|
|
|
|
- lastTextFieldType = "text";
|
|
|
|
- _ui.m_comPlayName.visible = false;
|
|
|
|
- }
|
|
|
|
- _wordList = Regex.Split(words, "&&");
|
|
|
|
- _wordIndex = 0;
|
|
|
|
|
|
+ _ui.m_dialogText.target.visible = true;
|
|
|
|
+ _wordTextField = _ui.m_dialogText.m_txtContent;
|
|
|
|
+ _arrow = _ui.m_dialogText.m_iconNext;
|
|
|
|
+ lastTextFieldType = "text";
|
|
|
|
+ _ui.m_comPlayName.visible = false;
|
|
|
|
+ }
|
|
|
|
+ _wordIndex = 0;
|
|
|
|
+
|
|
|
|
+ _typingEffect = new TypingFadeEffectPro(_wordTextField);
|
|
|
|
+ _typingEffect.typeFinishedAction = ShowCurrentWords;
|
|
|
|
|
|
- _typingEffect = new TypingFadeEffectPro(_wordTextField);
|
|
|
|
- _typingEffect.typeFinishedAction = ShowCurrentWords;
|
|
|
|
|
|
+ ShowNextDialog();
|
|
|
|
+ }
|
|
|
|
|
|
- ShowNextDialog();
|
|
|
|
}
|
|
}
|
|
|
|
|
|
private void ShowNextDialog()
|
|
private void ShowNextDialog()
|
|
@@ -637,7 +655,6 @@ namespace GFGGame
|
|
_arrow.target.visible = false;
|
|
_arrow.target.visible = false;
|
|
_wordTextField.verticalAlign = VertAlignType.Top;
|
|
_wordTextField.verticalAlign = VertAlignType.Top;
|
|
_wordTextField.text = "";
|
|
_wordTextField.text = "";
|
|
- ArrayList letters = StoryUtil.GetLettersList(_currentWords);
|
|
|
|
_canClickBtnNext = false;
|
|
_canClickBtnNext = false;
|
|
|
|
|
|
while (StoryDialogDataManager.Instance.waitPicFade || StoryDialogDataManager.Instance.waiting)
|
|
while (StoryDialogDataManager.Instance.waitPicFade || StoryDialogDataManager.Instance.waiting)
|
|
@@ -808,5 +825,22 @@ namespace GFGGame
|
|
_ui.m_btnAutoPlay.selected = false;
|
|
_ui.m_btnAutoPlay.selected = false;
|
|
Timers.inst.Remove(ShowNextWords);
|
|
Timers.inst.Remove(ShowNextWords);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ private IEnumerator WaitCGAnimFinish(int times = 1)
|
|
|
|
+ {
|
|
|
|
+ GameObject cg = PrefabManager.Instance.InstantiateSync(ResPathUtil.GetStoryDialogCGPath("cg_libeihe"));
|
|
|
|
+ Animator animator = cg.GetComponentInChildren<Animator>();
|
|
|
|
+ AnimatorStateInfo info = animator.GetCurrentAnimatorStateInfo(0);
|
|
|
|
+
|
|
|
|
+ yield return new WaitForSeconds(info.length * times);
|
|
|
|
+ //while (info.normalizedTime < 0.95)
|
|
|
|
+ //{
|
|
|
|
+ // info = animator.GetCurrentAnimatorStateInfo(0);
|
|
|
|
+ // yield return new WaitForSeconds(0.1f);
|
|
|
|
+ //}
|
|
|
|
+
|
|
|
|
+ PrefabManager.Instance.Restore(cg);
|
|
|
|
+ OnStepComplete();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|