refactor: 重构 BlockPuzzle 迷你游戏系统
Made-with: Cursor
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine;
|
||||
using Cinemachine;
|
||||
using AibisDream.Kit;
|
||||
using AibisDream.Utility;
|
||||
@@ -15,7 +15,7 @@ namespace AibisDream
|
||||
// 物体索引
|
||||
[SerializeField] public BlockPuzzleGrid grid;
|
||||
[SerializeField] private Transform shapeRoot;
|
||||
[SerializeField] public BlockPuzzlePart blockPuzzlePart;
|
||||
[SerializeField] public BlockPuzzlePanel blockPuzzlePanel;
|
||||
[SerializeField] private ShapeRecycleSlot shapeRecycleSlot;
|
||||
|
||||
[Header("数据")]
|
||||
@@ -81,11 +81,11 @@ namespace AibisDream
|
||||
|
||||
// 加载验证器
|
||||
validator = ResourceKit.LoadAssetSync<BlockPuzzleValidator>(puzzleData.validatorName);
|
||||
blockPuzzlePart.SetProgressMaxValue(validator.CollectThresholds());
|
||||
blockPuzzlePanel.SetProgressMaxValue(validator.CollectThresholds());
|
||||
|
||||
// 初始化侧边栏
|
||||
var deviceDatas = BlockPuzzleKit.LoadBlockShapeDataBatch(puzzleData.shapeInRack);
|
||||
blockPuzzlePart.DeviceButtonDatas = deviceDatas.Values.ToArray();
|
||||
blockPuzzlePanel.DeviceButtonDatas = deviceDatas.Values.ToArray();
|
||||
|
||||
|
||||
// 组装事件逻辑
|
||||
@@ -150,15 +150,15 @@ namespace AibisDream
|
||||
}
|
||||
|
||||
// 更新按钮的交互状态
|
||||
if (blockPuzzlePart != null)
|
||||
if (blockPuzzlePanel != null)
|
||||
{
|
||||
if (blockPuzzlePart.LockButton != null)
|
||||
if (blockPuzzlePanel.LockButton != null)
|
||||
{
|
||||
blockPuzzlePart.LockButton.GetComponent<BlockSubmitHander>().SetLockedState(IsLocked);
|
||||
blockPuzzlePanel.LockButton.GetComponent<BlockSubmitHander>().SetLockedState(IsLocked);
|
||||
}
|
||||
if (blockPuzzlePart.PopUpButton != null)
|
||||
if (blockPuzzlePanel.PopUpButton != null)
|
||||
{
|
||||
blockPuzzlePart.PopUpButton.interactable = !IsLocked;
|
||||
blockPuzzlePanel.PopUpButton.interactable = !IsLocked;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -176,7 +176,7 @@ namespace AibisDream
|
||||
|
||||
public void LoadShapeRack()
|
||||
{
|
||||
blockPuzzlePart.LoadBackupDevices();
|
||||
blockPuzzlePanel.LoadBackupDevices();
|
||||
}
|
||||
|
||||
// --------------------- 维修面板同步 -------------------
|
||||
@@ -189,9 +189,9 @@ namespace AibisDream
|
||||
private void AssembleEventLogic()
|
||||
{
|
||||
// 由面板触发
|
||||
blockPuzzlePart.OnDeviceSelected += OnPanelShapeSelected;
|
||||
blockPuzzlePart.OnSubmit.AddListener(SubmitGameResult);
|
||||
blockPuzzlePart.OnPopUp.AddListener(PopUpShape);
|
||||
blockPuzzlePanel.OnDeviceSelected += OnPanelShapeSelected;
|
||||
blockPuzzlePanel.OnSubmit.AddListener(SubmitGameResult);
|
||||
blockPuzzlePanel.OnPopUp.AddListener(PopUpShape);
|
||||
|
||||
// 由Shape触发 - 使用新的事件系统
|
||||
shapeFactory.OnDragStartDetailed += OnShapeDragStartDetailed;
|
||||
@@ -200,15 +200,15 @@ namespace AibisDream
|
||||
shapeFactory.OnClick += OnShapeClick;
|
||||
|
||||
// 由系统触发
|
||||
validator.OnValidate.AddListener(blockPuzzlePart.SetVaildState);
|
||||
validator.OnValidate.AddListener(blockPuzzlePart.OnProgressChanged);
|
||||
validator.OnValidate.AddListener(blockPuzzlePanel.SetVaildState);
|
||||
validator.OnValidate.AddListener(blockPuzzlePanel.OnProgressChanged);
|
||||
}
|
||||
|
||||
private void OnPanelShapeSelected(BlockShapeInfo shapeData)
|
||||
{
|
||||
// 在屏幕上更新选中的图形
|
||||
selectedShapeName = shapeData.shapeName;
|
||||
blockPuzzlePart.ShowShapeInScreen(shapeData);
|
||||
blockPuzzlePanel.ShowShapeInScreen(shapeData);
|
||||
}
|
||||
|
||||
// 旧的事件处理方法已迁移到新的详细事件处理器
|
||||
@@ -219,7 +219,7 @@ namespace AibisDream
|
||||
public void OnShapeClick(BlockShape blockShape)
|
||||
{
|
||||
// 点击形状
|
||||
blockPuzzlePart.ShowShapeInScreen(blockShape.BlockShapeData.blockShapeInfo);
|
||||
blockPuzzlePanel.ShowShapeInScreen(blockShape.BlockShapeData.blockShapeInfo);
|
||||
}
|
||||
|
||||
#region 新的事件驱动处理器
|
||||
@@ -238,7 +238,7 @@ namespace AibisDream
|
||||
// 显示Info
|
||||
if (blockShape?.BlockShapeData.blockShapeInfo.shapeName != null)
|
||||
{
|
||||
blockPuzzlePart.ShowShapeInScreen(blockShape.BlockShapeData.blockShapeInfo);
|
||||
blockPuzzlePanel.ShowShapeInScreen(blockShape.BlockShapeData.blockShapeInfo);
|
||||
EventSystem.current.SetSelectedGameObject(null);
|
||||
selectedShapeName = null;
|
||||
}
|
||||
@@ -308,11 +308,11 @@ namespace AibisDream
|
||||
shapeRecycleSlot.RecycleShape(args.Shape);
|
||||
|
||||
// 清空屏幕并切换回LogScreen
|
||||
blockPuzzlePart.ClearShapeInScreen();
|
||||
blockPuzzlePart.SwitchToLogScreen();
|
||||
blockPuzzlePanel.ClearShapeInScreen();
|
||||
blockPuzzlePanel.SwitchToLogScreen();
|
||||
|
||||
// 向面板添加回收的形状
|
||||
blockPuzzlePart.OnDeviceRecycle(args.Shape);
|
||||
blockPuzzlePanel.OnDeviceRecycle(args.Shape);
|
||||
|
||||
// 更新事件参数
|
||||
args.IsHandled = true;
|
||||
@@ -390,7 +390,7 @@ namespace AibisDream
|
||||
blockShape.GetComponent<ShapeDragger>().CurrentState = DragState.Idle;
|
||||
|
||||
// 删除按钮
|
||||
blockPuzzlePart.RemoveDeviceButton(selectedShapeName);
|
||||
blockPuzzlePanel.RemoveDeviceButton(selectedShapeName);
|
||||
selectedShapeName = null;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user