NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Camp/CampManager.cs

83 lines
1.6 KiB
C#

using Gameplay.Camp;
using Gameplay.Camp.Fsm;
using LTGame;
using PhxhSDK;
/// <summary>
/// 营地管理器
/// </summary>
public sealed class CampManager : Singlenton<CampManager>, IInitable, IUpdatable
{
/// <summary>
/// 营地数据
/// </summary>
private Camp camp;
/// <summary>
/// 营地状态机
/// </summary>
private NStateMachine<BaseCampState> fsm;
/// <summary>
/// 是否在营地中
/// </summary>
private bool isCamping;
/// <summary>
/// 营地
/// </summary>
public Camp Camp
{
get { return camp; }
}
public void Init()
{
fsm = new();
fsm.Add(new NormalCampState(camp));
fsm.Add(new BuildingCampState(camp));
fsm.Add(new ShootCampState(camp));
}
public void Update(float deltaTime)
{
if (!isCamping)
return;
fsm.LogicUpdate(deltaTime);
}
public void Release()
{
if (null != fsm)
{
fsm.Exit();
fsm = null;
}
}
/// <summary>
/// 加载营地数据
/// </summary>
public void Load()
{
// TODO 加载营地数据,加载场景,从服务器取得营地建筑数据加载到场景中
camp = new Camp(null);
isCamping = true;
}
/// <summary>
/// 进入普通模式
/// </summary>
public void EnterNormal()
{
fsm.SetForceChangeState((int)E_CampState.Normal);
}
/// <summary>
/// 进入编辑模式
/// </summary>
public void EnterEdit()
{
fsm.SetForceChangeState((int)E_CampState.Building);
}
}