using System; using Framework; using Gameplay.Guide; using LTGame; using TGS; using UnityEngine; namespace Gameplay.Level { public abstract class BaseLevelState : NBaseState { protected Level _level; public BaseLevelState(Level level, int stateId) : base(stateId) { _level = level; } protected override void _OnEnter(NBaseState exitState, object param) { EventManager.Instance.Unregister(EventManager.EventName.Level_OnClick, (Action) _OnClick); EventManager.Instance.Register(EventManager.EventName.Level_OnClick, (Action) _OnClick); } protected override void _OnRunning() { } protected override void _OnExit(NBaseState exitState, object param) { EventManager.Instance.Unregister(EventManager.EventName.Level_OnClick, (Action) _OnClick); } 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) // 点击的不是指定地板 { EventManager.Instance.Send(EventManager.EventName.ToFightModelDragSuc, false); return; } EventManager.Instance.Send(EventManager.EventName.Guide_ClickFloor, cellIndex); DebugUtil.LogG($"用户点击格子:{cellIndex}"); _OnCellClick(tgs, cellIndex, buttonIndex); } } }