NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Level/State/LevelBaseState.cs

66 lines
2.1 KiB
C#

using System;
using Framework;
using Gameplay.Guide;
using TGS;
using UnityEngine;
namespace Gameplay.Level
{
public abstract class LevelBaseState : IState
{
protected Level _level;
public LevelBaseState(Level level)
{
_level = level;
}
public void OnEnter()
{
//InputManager.Instance.OnClick += _OnClick;
EventManager.Instance.Unregister(EventManager.EventName.Level_OnClick, (Action<Vector2>) _OnClick);
EventManager.Instance.Register(EventManager.EventName.Level_OnClick, (Action<Vector2>) _OnClick);
_OnEnter();
}
public void OnUpdate(float deltaTime)
{
_OnUpdate(deltaTime);
}
public void OnExit()
{
_OnExit();
// _level.Map.TerrainGridSystem.OnCellClick -= _OnCellClick;
//InputManager.Instance.OnClick -= _OnClick;
EventManager.Instance.Unregister(EventManager.EventName.Level_OnClick, (Action<Vector2>) _OnClick);
}
protected abstract void _OnEnter();
protected abstract void _OnUpdate(float deltaTime);
protected abstract void _OnExit();
protected abstract void _OnCellClick(TerrainGridSystem tgs, int cellIndex, int buttonIndex);
protected abstract void _OnClick(Vector2 screenPosition);
/// <summary>
/// 检查能否点击地板
/// </summary>
protected void CheckCellClick(TerrainGridSystem tgs, int cellIndex, int buttonIndex)
{
if (GuideManager.Instance.IsGuiding && // 在新手引导中
GuideManager.Instance.IsControlFloor && // 是否控制地板点击
GuideManager.Instance.FloorIndex != cellIndex) // 点击的不是指定地板
{
return;
}
EventManager.Instance.Send(EventManager.EventName.Guide_ClickFloor);
DebugUtil.LogG($"用户点击格子:{cellIndex}");
_OnCellClick(tgs, cellIndex, buttonIndex);
}
}
}