UI和场景跳转步骤区分设置
This commit is contained in:
parent
f7e683d099
commit
49dc7f114f
@ -22,8 +22,7 @@ namespace ZXK.LouDiXvMuNiu
|
||||
private List<Transform> _curModuleToolArray = new List<Transform>();//当前步骤需要用到的所有工具
|
||||
|
||||
//动画交互
|
||||
private NiuData _curStep;//为了方便做对比,临时保存当前步骤
|
||||
private NiuData _previousStep;//为了方便做对比,临时保存当前步骤
|
||||
public NiuData _CurSceneStep;//为了方便做对比,临时保存当前步骤
|
||||
private Dictionary<bool, List<GameObject>> _curStepUseBTDic;//当前步骤要点击的所有物体,true表示正确选项,false表示错误选项
|
||||
private List<OutLineRender> _currentHighlights = new List<OutLineRender>();
|
||||
private PlayableDirector _curTimeLine = null;
|
||||
@ -67,7 +66,6 @@ namespace ZXK.LouDiXvMuNiu
|
||||
_curTimeLine = GetComponent<PlayableDirector>();
|
||||
_curTimeLineCtrl = GetComponent<TimelineDirectorCtrl>();
|
||||
|
||||
GameManager.Instance._DataNiuHandler.CurNiuHandler.OnValueChanged += OnValueChanged;
|
||||
GameManager.Instance._EventManager.AddListener<ClickToolArgs>(OnClickToolEvent);
|
||||
}
|
||||
private void Start()
|
||||
@ -87,84 +85,26 @@ namespace ZXK.LouDiXvMuNiu
|
||||
{
|
||||
if (tempData[i].TaskType == ConstCtrl.TASKTYPE_ShowGeo)
|
||||
{
|
||||
_curStep = tempData[i];
|
||||
_previousStep = tempData[i];
|
||||
_CurSceneStep = tempData[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_curStep = tempData[0];
|
||||
_previousStep = tempData[0];
|
||||
_CurSceneStep = tempData[0];
|
||||
}
|
||||
|
||||
GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = _curStep;
|
||||
}
|
||||
/// <summary>
|
||||
/// 步骤放生变化调用
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
private void OnValueChanged(NiuData obj)
|
||||
{
|
||||
if (obj.TaskType.Equals(ConstCtrl.TASKTYPE_Anim))
|
||||
{
|
||||
if (_curStep != obj)
|
||||
{//区分是否是点击UI,直接进行的步骤跳转
|
||||
JumpTimeline(obj, true);
|
||||
}
|
||||
if (GameManager.Instance._StateContext.GetState().Name.Equals("TrainState"))
|
||||
{
|
||||
List<GameObject> tempToolArray = GetNeedClickTools(obj);
|
||||
OnlyShowBTGeo(tempToolArray.ToArray());
|
||||
}
|
||||
else if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
||||
{
|
||||
if (string.IsNullOrEmpty(obj.Question))
|
||||
{
|
||||
GetNeedClickTools(obj);
|
||||
}
|
||||
else
|
||||
{
|
||||
AnswerSystemInStep(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (obj.TaskType.Equals(ConstCtrl.TASKTYPE_ChoiceVideoQuestion))
|
||||
{
|
||||
if (_curStep != obj)
|
||||
{//区分是否是点击UI,直接进行的步骤跳转
|
||||
JumpTimeline(obj, true);
|
||||
}
|
||||
bool isExam = GameManager.Instance._StateContext.GetState().Name.Equals("ExamState");
|
||||
string[] answers = obj.OptionsAll.Split("|");
|
||||
if (answers.Length % 2 != 0)
|
||||
{
|
||||
PopUpMng.ThreeVideoChoicePanel(obj.Question, answers, answers, GetOptionIndex(obj.OptionRight), isExam, () =>
|
||||
{
|
||||
GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = GameManager.Instance._DataNiuHandler.GetNextStep();
|
||||
});
|
||||
}
|
||||
}
|
||||
if (obj.TaskType.Equals(ConstCtrl.TASKTYPE_ChoicePicQuestion))
|
||||
{
|
||||
if (_curStep != obj)
|
||||
{//区分是否是点击UI,直接进行的步骤跳转
|
||||
JumpTimeline(obj, true);
|
||||
}
|
||||
ChoiceImgInStep(obj.ModelBT.Split("|"));
|
||||
}
|
||||
_previousStep = obj;
|
||||
_curStep = obj;
|
||||
GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = _CurSceneStep;
|
||||
}
|
||||
private void Update()
|
||||
{
|
||||
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
|
||||
RaycastHit rayHit;
|
||||
|
||||
if (PopUpMng._TriAble&& _curStep!=null)
|
||||
if (PopUpMng._TriAble&& _CurSceneStep != null)
|
||||
{
|
||||
if (_curStep.TaskType.Equals(ConstCtrl.TASKTYPE_ShowGeo))
|
||||
if (_CurSceneStep.TaskType.Equals(ConstCtrl.TASKTYPE_ShowGeo))
|
||||
{//工具物品展示
|
||||
UI_Manage.Instance.HidePanel("TooltipBoxTip");
|
||||
if (Physics.Raycast(ray, out rayHit, Mathf.Infinity))
|
||||
@ -177,7 +117,7 @@ namespace ZXK.LouDiXvMuNiu
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (_curStep.TaskType.Equals(ConstCtrl.TASKTYPE_Anim))
|
||||
else if (_CurSceneStep.TaskType.Equals(ConstCtrl.TASKTYPE_Anim))
|
||||
{//timeline动画
|
||||
if (Input.GetMouseButtonUp(0) && Physics.Raycast(ray, out rayHit, Mathf.Infinity))
|
||||
{
|
||||
@ -187,47 +127,24 @@ namespace ZXK.LouDiXvMuNiu
|
||||
});
|
||||
ClickToolCallInExamState(rayHit.transform.gameObject, () =>
|
||||
{
|
||||
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(_curStep.QNextNum), false);
|
||||
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(_CurSceneStep.QNextNum), false);
|
||||
});
|
||||
}
|
||||
}
|
||||
else if (_curStep.TaskType.Equals(ConstCtrl.TASKTYPE_Video))
|
||||
else if (_CurSceneStep.TaskType.Equals(ConstCtrl.TASKTYPE_Video))
|
||||
{
|
||||
if (Input.GetMouseButtonUp(0) && Physics.Raycast(ray, out rayHit, Mathf.Infinity))
|
||||
{
|
||||
ClickToolCallInTrainState(rayHit.transform.gameObject, () =>
|
||||
{
|
||||
GameObject videoGeo = UI_Manage.Instance.ShowPanel("VideoShowPanel", Type.GetType("ZXK.LouDiXvMuNiu.VideoShowPanel"), UIGroup.Tip);
|
||||
videoGeo.GetComponent<VideoShowPanel>().PlayVideoClip(_curStep.VideoPath, () =>
|
||||
videoGeo.GetComponent<VideoShowPanel>().PlayVideoClip(_CurSceneStep.VideoPath, () =>
|
||||
{
|
||||
GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = GameManager.Instance._DataNiuHandler.GetNextStep();
|
||||
});
|
||||
});
|
||||
if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
||||
{
|
||||
//bool addScoreTemp = true;
|
||||
//if (_curStepUseBTs.Contains(rayHit.transform.name))
|
||||
//{
|
||||
// _curStepUseBTs.Remove(rayHit.transform.name);
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// PopUpMng.PopChoseErrowToast(_curStep.ExamEvvr, 2.0f);
|
||||
// addScoreTemp = false;
|
||||
//}
|
||||
//if (_curStepUseBTs.Count == 0)
|
||||
//{
|
||||
// if (addScoreTemp)
|
||||
// {
|
||||
// GameManager.Instance._DataNiuHandler.AddScore(_curStep.ModuleName, _curStep.ThreeTaskName, _curStep.Score);
|
||||
// }
|
||||
// for (int i = 0; i < _curSignArray.Count; i++)
|
||||
// {
|
||||
// _curSignArray[i].SetActive(false);
|
||||
// }
|
||||
// _curSignArray.Clear();
|
||||
// JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(_curStep.QNextNum), false);
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
@ -238,13 +155,11 @@ namespace ZXK.LouDiXvMuNiu
|
||||
private void OnDestroy()
|
||||
{
|
||||
_curTimeLineCtrl?.Stop();
|
||||
GameManager.Instance._DataNiuHandler.CurNiuHandler.OnValueChanged -= OnValueChanged;
|
||||
GameManager.Instance._EventManager.RemoveListener<ClickToolArgs>(OnClickToolEvent);
|
||||
}
|
||||
|
||||
private void OnClickToolEvent(ClickToolArgs e)
|
||||
{
|
||||
WDebug.Log("点击到:" + e.SelectTool);
|
||||
if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
||||
{
|
||||
GameObject toolGeo = UtilitiesMng.GetGeoByName(new Transform[1] { _toolContain }, e.SelectTool, true);
|
||||
@ -508,7 +423,7 @@ namespace ZXK.LouDiXvMuNiu
|
||||
}
|
||||
else
|
||||
{
|
||||
PopUpMng.PopChoseErrowToast(_curStep.ExamEvvr, 2.0f);
|
||||
PopUpMng.PopChoseErrowToast(_CurSceneStep.ExamEvvr, 2.0f);
|
||||
addScoreTemp = false;
|
||||
}
|
||||
|
||||
@ -525,7 +440,7 @@ namespace ZXK.LouDiXvMuNiu
|
||||
|
||||
if (addScoreTemp)
|
||||
{
|
||||
GameManager.Instance._DataNiuHandler.AddScore(_curStep.ModuleName, _curStep.ThreeTaskName, _curStep.Score);
|
||||
GameManager.Instance._DataNiuHandler.AddScore(_CurSceneStep.ModuleName, _CurSceneStep.ThreeTaskName, _CurSceneStep.Score);
|
||||
}
|
||||
|
||||
clickFinishCall?.Invoke();
|
||||
@ -541,7 +456,7 @@ namespace ZXK.LouDiXvMuNiu
|
||||
string[] answers = step.OptionsAll.Split("|");
|
||||
PopUpMng.PopAnswerQuestions(step.Question, answers, GetOptionIndex(step.OptionRight), () =>
|
||||
{
|
||||
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(_curStep.QNextNum), false);
|
||||
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(_CurSceneStep.QNextNum), false);
|
||||
});
|
||||
}
|
||||
/// <summary>
|
||||
@ -564,7 +479,7 @@ namespace ZXK.LouDiXvMuNiu
|
||||
}
|
||||
else if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
||||
{
|
||||
GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = GameManager.Instance._DataNiuHandler.GetNextStep(_curStep.QNextNum);
|
||||
GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = GameManager.Instance._DataNiuHandler.GetNextStep(_CurSceneStep.QNextNum);
|
||||
}
|
||||
_IsPlayAnm = true;
|
||||
});
|
||||
@ -588,7 +503,7 @@ namespace ZXK.LouDiXvMuNiu
|
||||
}
|
||||
else if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
||||
{
|
||||
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(_curStep.QNextNum), false);
|
||||
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(_CurSceneStep.QNextNum), false);
|
||||
}
|
||||
|
||||
float durTime = step.TimelineLength / 60.0f;
|
||||
@ -599,7 +514,7 @@ namespace ZXK.LouDiXvMuNiu
|
||||
/// 目前只有胚胎选择最后一步需要
|
||||
/// </summary>
|
||||
/// <param name="temp"></param>
|
||||
private void ChoiceImgInStep(string[] temp)
|
||||
public void ChoiceImgInStep(string[] temp)
|
||||
{
|
||||
if (GameManager.Instance._StateContext.GetState().Name.Equals("TrainState"))
|
||||
{
|
||||
@ -659,40 +574,40 @@ namespace ZXK.LouDiXvMuNiu
|
||||
/// <param name="partData"></param>
|
||||
public void JumpTimeline(NiuData partData,bool jumpStepAble)
|
||||
{
|
||||
if (_curStep == null) _curStep = partData;
|
||||
if (_curStep.id == partData.id)
|
||||
if (_CurSceneStep == null) _CurSceneStep = partData;
|
||||
if (_CurSceneStep.id == partData.id)
|
||||
{//相同步骤不跳转
|
||||
}
|
||||
else
|
||||
{//跳转不同步骤,可能是点击上下步产生的,每次点击上下步对应的跳转是上下步里面的第一个小步骤
|
||||
_IsPlayAnm = true;
|
||||
if (_curStep.id > partData.id)
|
||||
if (_CurSceneStep.id > partData.id)
|
||||
{//逆序跳转,倒播
|
||||
if (!jumpStepAble)
|
||||
{
|
||||
_curTimeLineCtrl.ContinuePlayBackwardByPausePoint(GetPlayTime(partData), () =>
|
||||
_curTimeLineCtrl.ContinuePlayBackwardByPausePoint(GetPlayTime(partData, jumpStepAble), () =>
|
||||
{
|
||||
NegativeJumpStep(partData);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
_curTimeLineCtrl.StopInTime(GetPlayTime(partData));
|
||||
_curTimeLineCtrl.StopInTime(GetPlayTime(partData, jumpStepAble));
|
||||
NegativeJumpStep(partData);
|
||||
}
|
||||
}
|
||||
else if (_curStep.id < partData.id)
|
||||
else if (_CurSceneStep.id < partData.id)
|
||||
{//顺序跳转,正播
|
||||
if (!jumpStepAble)
|
||||
{
|
||||
_curTimeLineCtrl.ContinuePlayForwardByPausePoint(GetPlayTime(partData), () =>
|
||||
_curTimeLineCtrl.ContinuePlayForwardByPausePoint(GetPlayTime(partData, jumpStepAble), () =>
|
||||
{
|
||||
PositiveJumpStep(partData);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
_curTimeLineCtrl.StopInTime(GetPlayTime(partData));
|
||||
_curTimeLineCtrl.StopInTime(GetPlayTime(partData, jumpStepAble));
|
||||
PositiveJumpStep(partData);
|
||||
}
|
||||
}
|
||||
@ -705,7 +620,7 @@ namespace ZXK.LouDiXvMuNiu
|
||||
private void PositiveJumpStep(NiuData partData)
|
||||
{
|
||||
_IsPlayAnm = false;
|
||||
_curStep = partData;
|
||||
_CurSceneStep = partData;
|
||||
GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = partData;
|
||||
}
|
||||
/// <summary>
|
||||
@ -715,7 +630,7 @@ namespace ZXK.LouDiXvMuNiu
|
||||
private void NegativeJumpStep(NiuData partData)
|
||||
{
|
||||
_IsPlayAnm = false;
|
||||
_curStep = partData;
|
||||
_CurSceneStep = partData;
|
||||
GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = partData;
|
||||
}
|
||||
/// <summary>
|
||||
@ -723,33 +638,33 @@ namespace ZXK.LouDiXvMuNiu
|
||||
/// </summary>
|
||||
/// <param name="step"></param>
|
||||
/// <returns></returns>
|
||||
private float GetPlayTime(NiuData step)
|
||||
private float GetPlayTime(NiuData step, bool jumpStepAble)
|
||||
{
|
||||
int allFrame = 0;
|
||||
List<NiuData> modelInfos = GameManager.Instance._DataNiuHandler.NiuStepTypeDic[GameManager.Instance._CurModelType];
|
||||
|
||||
string addAbleTaskName = null;
|
||||
for (int a = 0; a < modelInfos.Count; a++)
|
||||
if (jumpStepAble)
|
||||
{
|
||||
if (step.id == modelInfos[a].id)
|
||||
addAbleTaskName = step.TaskName;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int a = 0; a < modelInfos.Count; a++)
|
||||
{
|
||||
//if(step.TaskName!= modelInfos[a - 1].TaskName)
|
||||
//{
|
||||
// addAbleTaskName = modelInfos[a - 1].TaskName;
|
||||
//}
|
||||
//else
|
||||
if (step.id == modelInfos[a].id)
|
||||
{
|
||||
addAbleTaskName = step.TaskName;
|
||||
if (step.TaskName != modelInfos[a - 1].TaskName)
|
||||
{
|
||||
addAbleTaskName = modelInfos[a - 1].TaskName;
|
||||
}
|
||||
else
|
||||
{
|
||||
addAbleTaskName = step.TaskName;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//if (_curStep != null && step.TaskName != _curStep.TaskName)
|
||||
//{
|
||||
// addAbleTaskName = _curStep.TaskName;
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// addAbleTaskName = step.TaskName;
|
||||
//}
|
||||
for (int a = 0; a < modelInfos.Count; a++)
|
||||
{
|
||||
if (modelInfos[a].TaskName.Equals(addAbleTaskName) && modelInfos[a].id < step.id)
|
||||
@ -760,7 +675,7 @@ namespace ZXK.LouDiXvMuNiu
|
||||
return allFrame / 60.0f;
|
||||
}
|
||||
|
||||
private int GetOptionIndex(string OptionMsg)
|
||||
public int GetOptionIndex(string OptionMsg)
|
||||
{
|
||||
switch (OptionMsg)
|
||||
{
|
||||
|
||||
@ -207,7 +207,7 @@ namespace ZXK.LouDiXvMuNiu
|
||||
{//前后任务名字不同
|
||||
NiuSceneMng._Instance.InitPlayAnmState(obj, GameManager.Instance._DataNiuHandler.CurNiuHandler.PreviousValue);
|
||||
}
|
||||
else if(obj.ThreeTaskName != GameManager.Instance._DataNiuHandler.CurNiuHandler.PreviousValue.ThreeTaskName)
|
||||
if(obj.ThreeTaskName != GameManager.Instance._DataNiuHandler.CurNiuHandler.PreviousValue.ThreeTaskName)
|
||||
{//前后三级人物名字不同
|
||||
_defaultCameraTRTog.isOn = true;
|
||||
|
||||
@ -289,6 +289,53 @@ namespace ZXK.LouDiXvMuNiu
|
||||
/// <param name="obj"></param>
|
||||
private void UpdateTaskType(NiuData obj)
|
||||
{
|
||||
if (obj.TaskType.Equals(ConstCtrl.TASKTYPE_Anim))
|
||||
{
|
||||
if (NiuSceneMng._Instance._CurSceneStep != obj)
|
||||
{//区分是否是点击UI,直接进行的步骤跳转
|
||||
NiuSceneMng._Instance.JumpTimeline(obj, true);
|
||||
}
|
||||
if (GameManager.Instance._StateContext.GetState().Name.Equals("TrainState"))
|
||||
{
|
||||
List<GameObject> tempToolArray = NiuSceneMng._Instance.GetNeedClickTools(obj);
|
||||
NiuSceneMng._Instance.OnlyShowBTGeo(tempToolArray.ToArray());
|
||||
}
|
||||
else if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
||||
{
|
||||
if (string.IsNullOrEmpty(obj.Question))
|
||||
{
|
||||
NiuSceneMng._Instance.GetNeedClickTools(obj);
|
||||
}
|
||||
else
|
||||
{
|
||||
NiuSceneMng._Instance.AnswerSystemInStep(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (obj.TaskType.Equals(ConstCtrl.TASKTYPE_ChoiceVideoQuestion))
|
||||
{
|
||||
if (NiuSceneMng._Instance._CurSceneStep != obj)
|
||||
{//区分是否是点击UI,直接进行的步骤跳转
|
||||
NiuSceneMng._Instance.JumpTimeline(obj, true);
|
||||
}
|
||||
bool isExam = GameManager.Instance._StateContext.GetState().Name.Equals("ExamState");
|
||||
string[] answers = obj.OptionsAll.Split("|");
|
||||
if (answers.Length % 2 != 0)
|
||||
{
|
||||
PopUpMng.ThreeVideoChoicePanel(obj.Question, answers, answers, NiuSceneMng._Instance.GetOptionIndex(obj.OptionRight), isExam, () =>
|
||||
{
|
||||
GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = GameManager.Instance._DataNiuHandler.GetNextStep();
|
||||
});
|
||||
}
|
||||
}
|
||||
if (obj.TaskType.Equals(ConstCtrl.TASKTYPE_ChoicePicQuestion))
|
||||
{
|
||||
if (NiuSceneMng._Instance._CurSceneStep != obj)
|
||||
{//区分是否是点击UI,直接进行的步骤跳转
|
||||
NiuSceneMng._Instance.JumpTimeline(obj, true);
|
||||
}
|
||||
NiuSceneMng._Instance.ChoiceImgInStep(obj.ModelBT.Split("|"));
|
||||
}
|
||||
if (obj.TaskType.Equals(ConstCtrl.TASKTYPE_Video))
|
||||
{
|
||||
if (GameManager.Instance._StateContext.GetState().Name.Equals("TrainState"))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user