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; _OnEnter(); } public void OnUpdate(float deltaTime) { _OnUpdate(deltaTime); } public void OnExit() { _OnExit(); // _level.Map.TerrainGridSystem.OnCellClick -= _OnCellClick; InputManager.Instance.OnClick -= _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); /// /// 检查能否点击地板 /// 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); } } }