Files
aibis-dream/Assets/Scripts/MiniGame/Gear/GearController.cs
T
2024-11-23 21:20:10 +08:00

123 lines
2.9 KiB
C#

using AibisDream.Framework;
using Framework.Core;
using UnityEngine;
namespace AibisDream
{
public class GearController : MonoBehaviour, ISystem
{
#region 索引
private GameObject _gearPrefab;
[FindComponentsInChildren] private Shaft[] _shafts;
[FindComponentsInChildren] private Gear[] _gears;
#endregion
private ShaftGraph _shaftGraph;
private GearSysTemLevelData _levelData;
public RunType runType;
private void Awake()
{
Init();
}
private void OnEnable()
{
Enable();
}
private void OnDisable()
{
Disable();
}
#region 生命周期管理
public void Init()
{
this.FindComponents();
_gearPrefab = Resources.Load<GameObject>("Prefabs/Gear System/Gear");
}
public void Enable()
{
if (runType == RunType.Editor)
{
}
_shaftGraph = new ShaftGraph(_shafts);
}
public void Disable()
{
_shaftGraph = null;
}
public void Deinit()
{
throw new System.NotImplementedException();
}
#endregion
/// <summary>
/// 判断吸附位置
/// </summary>
/// <param name="pos">齿轮当前位置</param>
/// <param name="gearRadius">齿轮半径</param>
/// <returns>能够被吸附的轴</returns>
public Shaft CheckClosestShaft(Vector3 pos, float gearRadius)
{
return _shaftGraph.QuerySnapShaft(pos, gearRadius);
}
/// <summary>
/// 生成齿轮
/// </summary>
/// <param name="pos">位置</param>
/// <param name="gearModel">齿轮数据</param>
/// <param name="speed">速度</param>
/// <returns>齿轮Obj</returns>
public GameObject InitGear(Vector3 pos, GearModel gearModel, float speed)
{
GameObject gear = Instantiate(_gearPrefab, pos, Quaternion.identity);
gear.transform.parent = transform.GetChild(0).transform;
gear.GetComponent<Gear>().Data = gearModel;
return gear;
}
/// <summary>
/// 某个轴上齿轮发生变化时更新临接关系
/// </summary>
/// <param name="shaftId">轴ID</param>
public void ChangeGraphVertex(int shaftId)
{
_shaftGraph?.ChangeVertex(shaftId);
}
public void Succeed()
{
Debug.Log("达成目标");
}
/// <summary>
/// 加载关卡配置
/// </summary>
public void LoadLevelData()
{
}
/// <summary>
/// 保存关卡配置
/// </summary>
public void SaveLevelData()
{
}
}
}