2025-01-02 12:15:45 +08:00
|
|
|
|
using CG.UTility;
|
|
|
|
|
|
using System.Collections;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
using DG.Tweening;
|
|
|
|
|
|
using UnityEngine.Playables;
|
|
|
|
|
|
using CG.Framework;
|
|
|
|
|
|
using System;
|
|
|
|
|
|
using UnityEngine.UI;
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
|
|
*Create By CG
|
|
|
|
|
|
*Function
|
|
|
|
|
|
*******************************************************************************/
|
|
|
|
|
|
namespace ZXK.LouDiXvMuNiu
|
|
|
|
|
|
{
|
|
|
|
|
|
public class NiuSceneMng : MonoBehaviour
|
|
|
|
|
|
{
|
|
|
|
|
|
public static NiuSceneMng _Instance = null;
|
|
|
|
|
|
//<2F><>Ʒչʾ
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private Transform _toolContain = null;
|
|
|
|
|
|
private List<Transform> _curModuleToolArray = new List<Transform>();//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-01-02 14:13:47 +08:00
|
|
|
|
public NiuData _CurSceneStep;//Ϊ<>˷<EFBFBD><CBB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Աȣ<D4B1><C8A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>浱ǰ<E6B5B1><C7B0><EFBFBD><EFBFBD>
|
2025-01-02 12:15:45 +08:00
|
|
|
|
private Dictionary<bool, List<GameObject>> _curStepUseBTDic;//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>壬true<75><65>ʾ<EFBFBD><CABE>ȷѡ<C8B7>false<73><65>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>
|
|
|
|
|
|
private List<OutLineRender> _currentHighlights = new List<OutLineRender>();
|
|
|
|
|
|
private PlayableDirector _curTimeLine = null;
|
|
|
|
|
|
private TimelineDirectorCtrl _curTimeLineCtrl = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private PlayableAsset _peoplePlanTimeLineClip = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private PlayableAsset _CSPLCLTimeLineClip = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private PlayableAsset _TQFQCLTimeLineClip = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private PlayableAsset _JZLVJCTimeLineClip = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private PlayableAsset _RGSJTimeLineClip = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private PlayableAsset _CPTimeLineClip = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private PlayableAsset _PTXZTimeLineClip = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private PlayableAsset _PTYZTimeLineClip = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private PlayableAsset _YYZDTimeLineClip = null;
|
|
|
|
|
|
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private Transform _TQFQTran = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private Transform _CSPLTran = null;
|
|
|
|
|
|
[SerializeField]
|
|
|
|
|
|
private Transform _RGSJTran = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[ReadOnly]//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2>Ŷ<EFBFBD><C5B6><EFBFBD>
|
|
|
|
|
|
public bool _IsPlayAnm = false;
|
|
|
|
|
|
|
|
|
|
|
|
private void Awake()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_Instance == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
_Instance = this;
|
|
|
|
|
|
}
|
|
|
|
|
|
_curTimeLine = GetComponent<PlayableDirector>();
|
|
|
|
|
|
_curTimeLineCtrl = GetComponent<TimelineDirectorCtrl>();
|
|
|
|
|
|
|
|
|
|
|
|
GameManager.Instance._EventManager.AddListener<ClickToolArgs>(OnClickToolEvent);
|
|
|
|
|
|
}
|
|
|
|
|
|
private void Start()
|
|
|
|
|
|
{
|
|
|
|
|
|
GetCurModuleTools();
|
|
|
|
|
|
UseToolsActive(true);
|
|
|
|
|
|
InitPlayAnmState(null,null);
|
|
|
|
|
|
StartCoroutine("InitScene");
|
|
|
|
|
|
}
|
|
|
|
|
|
private IEnumerator InitScene()
|
|
|
|
|
|
{
|
|
|
|
|
|
yield return new WaitForSeconds(0.1f);
|
|
|
|
|
|
List<NiuData> tempData = GameManager.Instance._DataNiuHandler.NiuStepTypeDic[GameManager.Instance._CurModelType];
|
|
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < tempData.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (tempData[i].TaskType == ConstCtrl.TASKTYPE_ShowGeo)
|
|
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
_CurSceneStep = tempData[i];
|
2025-01-02 12:15:45 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
_CurSceneStep = tempData[0];
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-01-02 14:13:47 +08:00
|
|
|
|
GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = _CurSceneStep;
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
private void Update()
|
|
|
|
|
|
{
|
|
|
|
|
|
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
|
|
|
|
|
|
RaycastHit rayHit;
|
|
|
|
|
|
|
2025-01-02 14:13:47 +08:00
|
|
|
|
if (PopUpMng._TriAble&& _CurSceneStep != null)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
if (_CurSceneStep.TaskType.Equals(ConstCtrl.TASKTYPE_ShowGeo))
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒչʾ
|
|
|
|
|
|
UI_Manage.Instance.HidePanel("TooltipBoxTip");
|
|
|
|
|
|
if (Physics.Raycast(ray, out rayHit, Mathf.Infinity))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_curModuleToolArray.Contains(rayHit.transform))
|
|
|
|
|
|
{
|
|
|
|
|
|
Vector3 worldPos = rayHit.point;
|
|
|
|
|
|
|
|
|
|
|
|
PopUpMng.ShowToolInfoTip(rayHit.transform.name, worldPos + Vector3.up * 0.05f, -1);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-01-02 14:13:47 +08:00
|
|
|
|
else if (_CurSceneStep.TaskType.Equals(ConstCtrl.TASKTYPE_Anim))
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{//timeline<6E><65><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (Input.GetMouseButtonUp(0) && Physics.Raycast(ray, out rayHit, Mathf.Infinity))
|
|
|
|
|
|
{
|
|
|
|
|
|
ClickToolCallInTrainState(rayHit.transform.gameObject, () =>
|
|
|
|
|
|
{
|
|
|
|
|
|
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(), false);
|
|
|
|
|
|
});
|
|
|
|
|
|
ClickToolCallInExamState(rayHit.transform.gameObject, () =>
|
|
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(_CurSceneStep.QNextNum), false);
|
2025-01-02 12:15:45 +08:00
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-01-02 14:13:47 +08:00
|
|
|
|
else if (_CurSceneStep.TaskType.Equals(ConstCtrl.TASKTYPE_Video))
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (Input.GetMouseButtonUp(0) && Physics.Raycast(ray, out rayHit, Mathf.Infinity))
|
|
|
|
|
|
{
|
|
|
|
|
|
ClickToolCallInTrainState(rayHit.transform.gameObject, () =>
|
|
|
|
|
|
{
|
2025-01-03 08:42:56 +08:00
|
|
|
|
GameObject videoGeo = UI_Manage.Instance.ShowPanel("VideoShowNoCtrlPanel", Type.GetType("ZXK.LouDiXvMuNiu.VideoShowPanel"), UIGroup.Tip);
|
2025-01-02 14:13:47 +08:00
|
|
|
|
videoGeo.GetComponent<VideoShowPanel>().PlayVideoClip(_CurSceneStep.VideoPath, () =>
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = GameManager.Instance._DataNiuHandler.GetNextStep();
|
|
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OnDestroy()
|
|
|
|
|
|
{
|
|
|
|
|
|
_curTimeLineCtrl?.Stop();
|
|
|
|
|
|
GameManager.Instance._EventManager.RemoveListener<ClickToolArgs>(OnClickToolEvent);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OnClickToolEvent(ClickToolArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject toolGeo = UtilitiesMng.GetGeoByName(new Transform[1] { _toolContain }, e.SelectTool, true);
|
|
|
|
|
|
toolGeo.SetActive(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public void InitPlayAnmState(NiuData curObj, NiuData previousObj)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (Transform t in _TQFQTran)
|
|
|
|
|
|
{
|
|
|
|
|
|
t.gameObject.SetActive(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
foreach (Transform t in _CSPLTran)
|
|
|
|
|
|
{
|
|
|
|
|
|
t.gameObject.SetActive(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
foreach (Transform t in _RGSJTran)
|
|
|
|
|
|
{
|
|
|
|
|
|
t.gameObject.SetActive(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_TQFAQCL))
|
|
|
|
|
|
{
|
|
|
|
|
|
_TQFQTran.Find("SM_Niu_CaShi_an01").gameObject.SetActive(true);
|
|
|
|
|
|
SetTimeLineCtrl(curObj, previousObj, _TQFQCLTimeLineClip);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_CSPLCL))
|
|
|
|
|
|
{
|
|
|
|
|
|
_CSPLTran.Find("SM_Niu_ZhusheB_Bozi_an02renG").gameObject.SetActive(true);
|
|
|
|
|
|
SetTimeLineCtrl(curObj, previousObj, _CSPLCLTimeLineClip);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_JZLVJC))
|
|
|
|
|
|
{
|
|
|
|
|
|
SetTimeLineCtrl(curObj, previousObj, _JZLVJCTimeLineClip);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_RGSJ))
|
|
|
|
|
|
{
|
|
|
|
|
|
_RGSJTran.Find("SM_Niu_RenGongSouJing01").gameObject.SetActive(true);
|
|
|
|
|
|
GameObject ytgGeo = UtilitiesMng.GetGeoByName(new Transform[1] { _toolContain }, "Һ<><D2BA><EFBFBD><EFBFBD>", true);
|
|
|
|
|
|
GameObject gjj2Geo = UtilitiesMng.GetGeoByName(new Transform[1] { _toolContain }, "<22><><EFBFBD><EFBFBD>2", true);
|
|
|
|
|
|
ytgGeo.gameObject.SetActive(true);
|
|
|
|
|
|
gjj2Geo.gameObject.SetActive(true);
|
|
|
|
|
|
SetTimeLineCtrl(curObj, previousObj, _RGSJTimeLineClip);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_CP))
|
|
|
|
|
|
{
|
|
|
|
|
|
SetTimeLineCtrl(curObj, previousObj, _CPTimeLineClip);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_PTXZ))
|
|
|
|
|
|
{
|
|
|
|
|
|
SetTimeLineCtrl(curObj, previousObj, _PTXZTimeLineClip);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_PTYZ))
|
|
|
|
|
|
{
|
|
|
|
|
|
_RGSJTran.Find("SM_Niu_RenGongSouJing01").gameObject.SetActive(true);
|
|
|
|
|
|
SetTimeLineCtrl(curObj, previousObj, _PTYZTimeLineClip);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._CurModelType.Equals(ConstCtrl.ModuleName_YYZD))
|
|
|
|
|
|
{
|
|
|
|
|
|
SetTimeLineCtrl(curObj, previousObj, _YYZDTimeLineClip);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD>ݲ<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private void SetTimeLineCtrl(NiuData curObj, NiuData previousObj, PlayableAsset timeAsset)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (curObj!=null&& previousObj!=null&&!curObj.TaskName.Equals(previousObj.TaskName))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (curObj.TaskName.Equals(ConstCtrl.TaskName_ActualOperation))
|
|
|
|
|
|
{
|
|
|
|
|
|
_curTimeLine.playableAsset = timeAsset;
|
|
|
|
|
|
_curTimeLineCtrl.SetDuration();
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (curObj.TaskName.Equals(ConstCtrl.TaskName_OperationPlan))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_curTimeLine.playableAsset != _peoplePlanTimeLineClip)
|
|
|
|
|
|
{
|
|
|
|
|
|
_curTimeLine.playableAsset = _peoplePlanTimeLineClip;
|
|
|
|
|
|
_curTimeLineCtrl.SetDuration();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
_curTimeLineCtrl.Stop();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><>ȡ<EFBFBD><C8A1>ǰģ<C7B0><C4A3><EFBFBD><EFBFBD>Ҫ<EFBFBD>õ<EFBFBD><C3B5>Ĺ<EFBFBD><C4B9><EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
private void GetCurModuleTools()
|
|
|
|
|
|
{
|
|
|
|
|
|
List<string> toolArray = new List<string>();
|
|
|
|
|
|
List<NiuData> tempData = GameManager.Instance._DataNiuHandler.NiuStepTypeDic[GameManager.Instance._CurModelType];
|
|
|
|
|
|
for (int i = 0; i < tempData.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (string.IsNullOrEmpty(tempData[i].ToolsName)) continue;
|
|
|
|
|
|
string[] tools = tempData[i].ToolsName.Split("|");
|
|
|
|
|
|
for (int j = 0; j < tools.Length; j++)
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject toolGeo = UtilitiesMng.GetGeoByName(new Transform[1] { _toolContain }, tools[j], true);
|
|
|
|
|
|
if (toolGeo&&!toolArray.Contains(tools[j]))
|
|
|
|
|
|
{
|
|
|
|
|
|
toolArray.Add(tools[j]);
|
|
|
|
|
|
_curModuleToolArray.Add(toolGeo.transform);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><>ģ<EFBFBD><C4A3><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD>ʾ״̬
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="showAble"></param>
|
|
|
|
|
|
public void UseToolsActive(bool showAble)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < _curModuleToolArray.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
_curModuleToolArray[i].gameObject.SetActive(showAble);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><>ȡ<EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="step"></param>
|
|
|
|
|
|
public List<GameObject> GetNeedClickTools(NiuData step)
|
|
|
|
|
|
{
|
2025-01-03 12:00:33 +08:00
|
|
|
|
List<GameObject> triGeos = new List<GameObject>();
|
|
|
|
|
|
List<NiuData> tempData = GameManager.Instance._DataNiuHandler.NiuStepTypeDic[GameManager.Instance._CurModelType];
|
|
|
|
|
|
for (int i = 0; i < tempData.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (tempData[i].TaskType==ConstCtrl.TASKTYPE_Tran) continue;
|
|
|
|
|
|
string[] tris = tempData[i].ModelBT.Split("|");
|
|
|
|
|
|
for (int j = 0; j < tris.Length; j++)
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject toolGeo = UtilitiesMng.GetGeoByName(new Transform[1] { transform }, tris[j], true);
|
|
|
|
|
|
if (toolGeo && !triGeos.Contains(toolGeo))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (toolGeo.name.Contains("sign"))
|
|
|
|
|
|
{
|
|
|
|
|
|
toolGeo.SetActive(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
triGeos.Add(toolGeo);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-01-02 12:15:45 +08:00
|
|
|
|
_curStepUseBTDic = new Dictionary<bool, List<GameObject>>();
|
|
|
|
|
|
List<GameObject> toolTemp = new List<GameObject>();
|
|
|
|
|
|
string[] tempBtArray = step.ModelBT.Split("+");
|
|
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState")
|
|
|
|
|
|
&&!string.IsNullOrEmpty(step.ExamModelBT))
|
|
|
|
|
|
{
|
|
|
|
|
|
tempBtArray = step.ExamModelBT.Split("+");
|
|
|
|
|
|
}
|
|
|
|
|
|
for (int i = 0; i < tempBtArray.Length; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
string[] tempBts = tempBtArray[i].Split("|");
|
|
|
|
|
|
int count = 0;
|
|
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
|
|
|
|
|
{
|
|
|
|
|
|
count = tempBts.Length;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
count = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
for (int j = 0; j < count; j++)
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject tempGeo = UtilitiesMng.GetGeoByName(new Transform[1] { transform }, tempBts[j], true);
|
|
|
|
|
|
if (tempGeo == null) continue;
|
|
|
|
|
|
tempGeo.SetActive(true);
|
|
|
|
|
|
toolTemp.Add(tempGeo);
|
|
|
|
|
|
if (_curStepUseBTDic.ContainsKey(j == 0))
|
|
|
|
|
|
{
|
|
|
|
|
|
_curStepUseBTDic[j == 0].Add(tempGeo);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
List<GameObject> tempList = new List<GameObject>();
|
|
|
|
|
|
tempList.Add(tempGeo);
|
|
|
|
|
|
_curStepUseBTDic.Add(j == 0, tempList);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return toolTemp;
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20>ô˲<C3B4><CBB2><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="model"><3E><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
|
public void OnlyShowBTGeo(GameObject[] modelBTsName)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < _currentHighlights.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
_currentHighlights[i].enabled = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
for (int i = 0; i < modelBTsName.Length; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
string modelBTName = modelBTsName[i].name;
|
|
|
|
|
|
if (!modelBTName.Contains("_sign"))
|
|
|
|
|
|
{
|
|
|
|
|
|
OutLineRender outlineRender;
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>û<EFBFBD>з<EFBFBD><D0B7><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>µ<EFBFBD>
|
|
|
|
|
|
if (!modelBTsName[i].TryGetComponent(out outlineRender))
|
|
|
|
|
|
{
|
|
|
|
|
|
outlineRender = modelBTsName[i].AddComponent<OutLineRender>();
|
|
|
|
|
|
}
|
|
|
|
|
|
// <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>ǿ<EFBFBD>Ⱥ<EFBFBD>Ĭ<EFBFBD>Ͻ<EFBFBD><CFBD>÷<EFBFBD><C3B7><EFBFBD>Ч<EFBFBD><D0A7>
|
|
|
|
|
|
outlineRender.OutLineStrength = 1;
|
|
|
|
|
|
outlineRender.enabled = true;
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>
|
|
|
|
|
|
_currentHighlights.Add(outlineRender);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// ѵ<><D1B5>ģʽ<C4A3>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>崥<EFBFBD><E5B4A5><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="triGeo"></param>
|
|
|
|
|
|
/// <param name="clickFinishCall"></param>
|
|
|
|
|
|
private void ClickToolCallInTrainState(GameObject triGeo,Action clickFinishCall)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("TrainState"))
|
|
|
|
|
|
{
|
|
|
|
|
|
List<GameObject> useBts = _curStepUseBTDic[true];
|
|
|
|
|
|
if (useBts.Contains(triGeo))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (triGeo.GetComponent<OutLineRender>())
|
|
|
|
|
|
{
|
|
|
|
|
|
triGeo.GetComponent<OutLineRender>().enabled = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
triGeo.SetActive(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
useBts.Remove(triGeo);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (useBts.Count == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var item in _curStepUseBTDic)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < item.Value.Count; i++)
|
|
|
|
|
|
{
|
2025-01-02 19:36:17 +08:00
|
|
|
|
if (item.Value[i].tag != ConstCtrl.SceneTool_Tag)
|
|
|
|
|
|
{
|
|
|
|
|
|
item.Value[i].SetActive(false);
|
|
|
|
|
|
}
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
_curStepUseBTDic.Clear();
|
|
|
|
|
|
|
|
|
|
|
|
clickFinishCall?.Invoke();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD>ģʽ<C4A3>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>崥<EFBFBD><E5B4A5><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="triGeo"></param>
|
|
|
|
|
|
/// <param name="clickFinishCall"></param>
|
|
|
|
|
|
private void ClickToolCallInExamState(GameObject triGeo, Action clickFinishCall)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
|
|
|
|
|
{
|
|
|
|
|
|
bool addScoreTemp = true;
|
|
|
|
|
|
List<GameObject> useBts = _curStepUseBTDic[true];
|
|
|
|
|
|
if (useBts.Contains(triGeo))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (triGeo.GetComponent<OutLineRender>())
|
|
|
|
|
|
{
|
|
|
|
|
|
triGeo.GetComponent<OutLineRender>().enabled = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
triGeo.SetActive(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
useBts.Remove(triGeo);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
PopUpMng.PopChoseErrowToast(_CurSceneStep.ExamEvvr, 2.0f);
|
2025-01-02 12:15:45 +08:00
|
|
|
|
addScoreTemp = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (useBts.Count == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var item in _curStepUseBTDic)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < item.Value.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
item.Value[i].SetActive(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
_curStepUseBTDic.Clear();
|
|
|
|
|
|
|
|
|
|
|
|
if (addScoreTemp)
|
|
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
GameManager.Instance._DataNiuHandler.AddScore(_CurSceneStep.ModuleName, _CurSceneStep.ThreeTaskName, _CurSceneStep.Score);
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
clickFinishCall?.Invoke();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD>͵Ĵ<CDB5><C4B4><EFBFBD><EFBFBD><EFBFBD>ʽ
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="step"></param>
|
|
|
|
|
|
public void AnswerSystemInStep(NiuData step)
|
|
|
|
|
|
{
|
|
|
|
|
|
string[] answers = step.OptionsAll.Split("|");
|
|
|
|
|
|
PopUpMng.PopAnswerQuestions(step.Question, answers, GetOptionIndex(step.OptionRight), () =>
|
|
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(_CurSceneStep.QNextNum), false);
|
2025-01-02 12:15:45 +08:00
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵Ĵ<CDB5><C4B4><EFBFBD><EFBFBD><EFBFBD>ʽ
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="step"></param>
|
|
|
|
|
|
public void TimeTranInStep(NiuData step)
|
|
|
|
|
|
{
|
|
|
|
|
|
_IsPlayAnm = true;
|
|
|
|
|
|
string[] msg = step.ModelBT.Split("|");
|
|
|
|
|
|
string timeFixMsg = msg[0];
|
|
|
|
|
|
string[] timepoints = msg[1].Split("-");
|
|
|
|
|
|
int startTime = int.Parse(timepoints[0]);
|
|
|
|
|
|
int endTime = int.Parse(timepoints[1]);
|
|
|
|
|
|
PopUpMng.PopTimeIntCount(timeFixMsg, startTime, endTime, 3.0f, endTime >= startTime, () =>
|
|
|
|
|
|
{
|
|
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("TrainState"))
|
|
|
|
|
|
{
|
|
|
|
|
|
GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = GameManager.Instance._DataNiuHandler.GetNextStep();
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
|
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = GameManager.Instance._DataNiuHandler.GetNextStep(_CurSceneStep.QNextNum);
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
_IsPlayAnm = true;
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><C7B9>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵Ĵ<CDB5><C4B4><EFBFBD><EFBFBD><EFBFBD>ʽ
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="step"></param>
|
|
|
|
|
|
public void TimeTranAnmInStep(NiuData step)
|
|
|
|
|
|
{
|
|
|
|
|
|
_IsPlayAnm = true;
|
|
|
|
|
|
string[] msg = step.ModelBT.Split("|");
|
|
|
|
|
|
string timeFixMsg = msg[0];
|
|
|
|
|
|
string[] timepoints = msg[1].Split("-");
|
|
|
|
|
|
int startTime = int.Parse(timepoints[0]);
|
|
|
|
|
|
int endTime = int.Parse(timepoints[1]);
|
|
|
|
|
|
|
|
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("TrainState"))
|
|
|
|
|
|
{
|
|
|
|
|
|
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(), false);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
|
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(_CurSceneStep.QNextNum), false);
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
float durTime = step.TimelineLength / 60.0f;
|
|
|
|
|
|
PopUpMng.PopTimeIntCount(timeFixMsg, startTime, endTime, durTime, endTime >= startTime, null);
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// ͼƬѡ<C6AC><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
/// Ŀǰֻ<C7B0><D6BB><EFBFBD><EFBFBD>̥ѡ<CCA5><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ҫ
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="temp"></param>
|
2025-01-02 14:13:47 +08:00
|
|
|
|
public void ChoiceImgInStep(string[] temp)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (GameManager.Instance._StateContext.GetState().Name.Equals("TrainState"))
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject tempGeo = UtilitiesMng.GetGeoByName(new Transform[1] { transform }, temp[0], true);
|
|
|
|
|
|
tempGeo.SetActive(true);
|
|
|
|
|
|
tempGeo.GetComponent<Toggle>().isOn = false;
|
|
|
|
|
|
tempGeo.GetComponent<Toggle>().onValueChanged.AddListener((isOn) =>
|
|
|
|
|
|
{
|
|
|
|
|
|
if (isOn)
|
|
|
|
|
|
{
|
|
|
|
|
|
tempGeo.transform.GetChild(0).gameObject.SetActive(true);
|
|
|
|
|
|
float a = 0.0f;
|
|
|
|
|
|
DOTween.To(() => a, x => x = a, 1.0f, 2.0f).OnComplete(() =>
|
|
|
|
|
|
{
|
|
|
|
|
|
tempGeo.SetActive(false);
|
|
|
|
|
|
});
|
|
|
|
|
|
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(), false);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (GameManager.Instance._StateContext.GetState().Name.Equals("ExamState"))
|
|
|
|
|
|
{
|
|
|
|
|
|
List<GameObject> togs = new List<GameObject>();
|
|
|
|
|
|
for (int i = 0; i < temp.Length; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject tempGeo = UtilitiesMng.GetGeoByName(new Transform[1] { transform }, temp[i], true);
|
|
|
|
|
|
tempGeo.transform.GetChild(0).gameObject.SetActive(false);
|
|
|
|
|
|
togs.Add(tempGeo);
|
|
|
|
|
|
tempGeo.SetActive(true);
|
|
|
|
|
|
tempGeo.GetComponent<Toggle>().isOn = false;
|
|
|
|
|
|
tempGeo.GetComponent<Toggle>().onValueChanged.AddListener((isOn) =>
|
|
|
|
|
|
{
|
|
|
|
|
|
if (isOn)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < togs.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
togs[i].transform.GetChild(0).gameObject.SetActive(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
float a = 0.0f;
|
|
|
|
|
|
DOTween.To(() => a, x => x = a, 1.0f, 2.0f).OnComplete(() =>
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < togs.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
togs[i].SetActive(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
JumpTimeline(GameManager.Instance._DataNiuHandler.GetNextStep(), false);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-01-02 19:54:22 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Timeline<6E><65><EFBFBD><EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public void TimelineContinue()
|
|
|
|
|
|
{
|
|
|
|
|
|
_curTimeLineCtrl.Continue();
|
|
|
|
|
|
}
|
2025-01-02 12:15:45 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="partData"></param>
|
|
|
|
|
|
public void JumpTimeline(NiuData partData,bool jumpStepAble)
|
|
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
if (_CurSceneStep == null) _CurSceneStep = partData;
|
|
|
|
|
|
if (_CurSceneStep.id == partData.id)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{//<2F><>ͬ<EFBFBD><CDAC><EFBFBD>費<EFBFBD><E8B2BB>ת
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{//<2F><>ת<EFBFBD><D7AA>ͬ<EFBFBD><CDAC><EFBFBD>裬<EFBFBD><E8A3AC><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>ÿ<EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><C2B2><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>һ<EFBFBD><D2BB>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
_IsPlayAnm = true;
|
2025-01-02 14:13:47 +08:00
|
|
|
|
if (_CurSceneStep.id > partData.id)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (!jumpStepAble)
|
|
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
_curTimeLineCtrl.ContinuePlayBackwardByPausePoint(GetPlayTime(partData, jumpStepAble), () =>
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
NegativeJumpStep(partData);
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
_curTimeLineCtrl.StopInTime(GetPlayTime(partData, jumpStepAble));
|
2025-01-02 12:15:45 +08:00
|
|
|
|
NegativeJumpStep(partData);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-01-02 14:13:47 +08:00
|
|
|
|
else if (_CurSceneStep.id < partData.id)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{//˳<><CBB3><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (!jumpStepAble)
|
|
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
_curTimeLineCtrl.ContinuePlayForwardByPausePoint(GetPlayTime(partData, jumpStepAble), () =>
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
PositiveJumpStep(partData);
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
_curTimeLineCtrl.StopInTime(GetPlayTime(partData, jumpStepAble));
|
2025-01-02 12:15:45 +08:00
|
|
|
|
PositiveJumpStep(partData);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="partData"></param>
|
|
|
|
|
|
private void PositiveJumpStep(NiuData partData)
|
|
|
|
|
|
{
|
|
|
|
|
|
_IsPlayAnm = false;
|
2025-01-02 14:13:47 +08:00
|
|
|
|
_CurSceneStep = partData;
|
2025-01-02 12:15:45 +08:00
|
|
|
|
GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = partData;
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="partData"></param>
|
|
|
|
|
|
private void NegativeJumpStep(NiuData partData)
|
|
|
|
|
|
{
|
|
|
|
|
|
_IsPlayAnm = false;
|
2025-01-02 14:13:47 +08:00
|
|
|
|
_CurSceneStep = partData;
|
2025-01-02 12:15:45 +08:00
|
|
|
|
GameManager.Instance._DataNiuHandler.CurNiuHandler.Value = partData;
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><>ȡ<EFBFBD><C8A1>ǰҪ<C7B0><D2AA><EFBFBD>ŵĶ<C5B5><C4B6><EFBFBD>Ƭ<EFBFBD>εĿ<CEB5>ʼʱ<CABC><CAB1>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="step"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2025-01-02 14:13:47 +08:00
|
|
|
|
private float GetPlayTime(NiuData step, bool jumpStepAble)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
int allFrame = 0;
|
|
|
|
|
|
List<NiuData> modelInfos = GameManager.Instance._DataNiuHandler.NiuStepTypeDic[GameManager.Instance._CurModelType];
|
2025-01-02 14:13:47 +08:00
|
|
|
|
|
2025-01-02 12:15:45 +08:00
|
|
|
|
string addAbleTaskName = null;
|
2025-01-02 14:13:47 +08:00
|
|
|
|
if (jumpStepAble)
|
|
|
|
|
|
{
|
|
|
|
|
|
addAbleTaskName = step.TaskName;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
for (int a = 0; a < modelInfos.Count; a++)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
if (step.id == modelInfos[a].id)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
2025-01-02 14:13:47 +08:00
|
|
|
|
if (step.TaskName != modelInfos[a - 1].TaskName)
|
|
|
|
|
|
{
|
|
|
|
|
|
addAbleTaskName = modelInfos[a - 1].TaskName;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
addAbleTaskName = step.TaskName;
|
|
|
|
|
|
}
|
2025-01-02 12:15:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
for (int a = 0; a < modelInfos.Count; a++)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (modelInfos[a].TaskName.Equals(addAbleTaskName) && modelInfos[a].id < step.id)
|
|
|
|
|
|
{
|
|
|
|
|
|
allFrame += modelInfos[a].TimelineLength;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return allFrame / 60.0f;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-01-02 14:13:47 +08:00
|
|
|
|
public int GetOptionIndex(string OptionMsg)
|
2025-01-02 12:15:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
switch (OptionMsg)
|
|
|
|
|
|
{
|
|
|
|
|
|
case "A":
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
case "B":
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
case "C":
|
|
|
|
|
|
return 2;
|
|
|
|
|
|
case "D":
|
|
|
|
|
|
return 3;
|
|
|
|
|
|
default:
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|