石头串通
This commit is contained in:
@@ -21,7 +21,7 @@ namespace AibisDream
|
||||
private SpriteRenderer _cover;
|
||||
private Transform _coverStick;
|
||||
private Transform _needle;
|
||||
|
||||
|
||||
private ShaftGraph _shaftGraph;
|
||||
|
||||
#endregion
|
||||
@@ -35,9 +35,10 @@ namespace AibisDream
|
||||
public Vector3 needleEmptyPos;
|
||||
public Vector3[] needlePosArr;
|
||||
public float needleDuration;
|
||||
|
||||
|
||||
private bool _isTargetReached;
|
||||
private bool _isDiscReady;
|
||||
public bool isAvailable;
|
||||
|
||||
public float initSpeed = 1;
|
||||
|
||||
@@ -55,23 +56,37 @@ namespace AibisDream
|
||||
_coverStick = transform.Find("Cover Stick");
|
||||
_panel = transform.Find("Empty Shafts Panel");
|
||||
_needle = transform.Find("Needle");
|
||||
|
||||
|
||||
// 注册相机
|
||||
var virtualCam = transform.Find("Gear Camera").GetComponent<ICinemachineCamera>();
|
||||
CameraKit.Instance.RegisterCamera(CameraEnum.Gear, virtualCam);
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
InitShaftGraph();
|
||||
LinkEngineSpeed();
|
||||
}
|
||||
|
||||
private void InitShaftGraph()
|
||||
{
|
||||
var shafts = transform.Find("Shafts").GetComponentsInChildren<Shaft>();
|
||||
var panelShafts = _panel.GetComponentsInChildren<Shaft>();
|
||||
_shaftGraph = new ShaftGraph(shafts, panelShafts);
|
||||
}
|
||||
|
||||
private void LinkEngineSpeed()
|
||||
{
|
||||
var engine = FixSystemCenter.SystemDic.Get<EngineSystem>();
|
||||
_shaftGraph.StartRotate(initSpeed);
|
||||
engine.updateSpeedEvent.AddListener(_shaftGraph.Accelerate);
|
||||
}
|
||||
|
||||
_panel.gameObject.SetActive(false);
|
||||
private void UnlinkEngineSpeed()
|
||||
{
|
||||
var engine = FixSystemCenter.SystemDic.Get<EngineSystem>();
|
||||
_shaftGraph.StartRotate(initSpeed);
|
||||
engine.updateSpeedEvent.RemoveListener(_shaftGraph.Accelerate);
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
@@ -112,6 +127,18 @@ namespace AibisDream
|
||||
_shaftGraph?.ChangeVertex(shaftId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 按轴名称弹出齿轮
|
||||
/// </summary>
|
||||
/// <param name="shaftName">轴名称</param>
|
||||
/// <returns></returns>
|
||||
public void PopupGearByShaftName(string shaftName)
|
||||
{
|
||||
var shafts = transform.Find("Shafts").GetComponentsInChildren<Shaft>();
|
||||
var target = Array.Find(shafts, shaft => shaft.gameObject.name == shaftName);
|
||||
target.PopupGear();
|
||||
}
|
||||
|
||||
#region 胜利状况判断
|
||||
|
||||
public void CheckGearSystemState()
|
||||
@@ -124,9 +151,13 @@ namespace AibisDream
|
||||
{
|
||||
AudioManager.PauseLoop3Audio();
|
||||
}
|
||||
DialogController.Instance.StartDialogNode("齿轮系统状态变化");
|
||||
|
||||
if (_shaftGraph.AllRunning())
|
||||
{
|
||||
DialogController.Instance?.StartDialogNode("AllGearsRunning");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void ReachTargetSpeed()
|
||||
{
|
||||
if (!_isTargetReached)
|
||||
@@ -157,10 +188,12 @@ namespace AibisDream
|
||||
sq.Join(_cover.transform.DOLocalMove(coverUpPos, 1.5f));
|
||||
sq.Join(_cover.DOFade(0, 1.5f));
|
||||
yield return sq.WaitForCompletion();
|
||||
isAvailable = true;
|
||||
}
|
||||
|
||||
public IEnumerator CloseCover()
|
||||
{
|
||||
isAvailable = false;
|
||||
AudioManager.PauseLoopAudio();
|
||||
AudioManager.PauseLoop2Audio();
|
||||
AudioManager.PauseLoop3Audio();
|
||||
@@ -184,7 +217,7 @@ namespace AibisDream
|
||||
yield return _panel.DOLocalMove(panelClosePos, 1f).WaitForCompletion();
|
||||
_panel.gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
|
||||
public IEnumerator MoveNeedle(int discIdx)
|
||||
{
|
||||
Vector3 target;
|
||||
@@ -196,7 +229,7 @@ namespace AibisDream
|
||||
{
|
||||
target = needlePosArr[discIdx - 1];
|
||||
}
|
||||
|
||||
|
||||
yield return _needle.DORotate(target, needleDuration).WaitForCompletion();
|
||||
}
|
||||
|
||||
@@ -282,7 +315,9 @@ namespace AibisDream
|
||||
#if UNITY_EDITOR
|
||||
if (!EditorApplication.isPlaying) return;
|
||||
#endif
|
||||
UnlinkEngineSpeed();
|
||||
_shaftGraph = new ShaftGraph(shafts, panelShafts);
|
||||
LinkEngineSpeed();
|
||||
}
|
||||
|
||||
public override void SaveLevel()
|
||||
@@ -290,11 +325,6 @@ namespace AibisDream
|
||||
if (string.IsNullOrEmpty(CurDataKey)) return;
|
||||
|
||||
SaveByKey(CurDataKey);
|
||||
if (!_keyOptions.Contains(CurDataKey))
|
||||
{
|
||||
// 重新读取key
|
||||
_keyOptions = ConfigUtil.Instance.GetFileNames(DataPath);
|
||||
}
|
||||
}
|
||||
|
||||
private void SaveByKey(string key)
|
||||
@@ -323,6 +353,35 @@ namespace AibisDream
|
||||
Instantiate(shaftPrefab, shaftRoot);
|
||||
}
|
||||
|
||||
public void LoadPanelShaft(string dataKey)
|
||||
{
|
||||
// 查询
|
||||
if (!ConfigUtil.Instance.TryLoadConfig<GearSystemData>(DataPath + dataKey, out var data))
|
||||
{
|
||||
Debug.Log("没有找到配置项");
|
||||
return;
|
||||
}
|
||||
|
||||
// 删除面板上的齿轮
|
||||
var panelShafts = transform.Find("Empty Shafts Panel").GetComponentsInChildren<Shaft>();
|
||||
foreach (var shaftItem in panelShafts)
|
||||
{
|
||||
Destroy(shaftItem);
|
||||
}
|
||||
|
||||
// 读取数据
|
||||
var panelShaftRoot = transform.Find("Empty Shafts Panel");
|
||||
var newPanelShafts = new Shaft[data.panelShaftArray.Length];
|
||||
for (int i = 0; i < data.panelShaftArray.Length; i++)
|
||||
{
|
||||
var newShaft = Instantiate(shaftPrefab, panelShaftRoot).GetComponent<Shaft>();
|
||||
newShaft.Load(data.panelShaftArray[i]);
|
||||
newPanelShafts[i] = newShaft;
|
||||
}
|
||||
|
||||
_shaftGraph.UpdatePanel(newPanelShafts);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user