屏幕问题

This commit is contained in:
2026-01-28 16:20:19 +08:00
parent 7464cd8b6c
commit 7d7e2fcdf0
20 changed files with 771 additions and 479 deletions
@@ -4,6 +4,7 @@ using AibisDream.Kit;
using AibisDream.Utility;
using System.Linq;
using AibisDream.Framework;
using System;
namespace AibisDream
{
@@ -107,8 +108,8 @@ namespace AibisDream
{
// 由面板触发
blockPuzzlePanel.Panel.OnDeviceSelected += OnPanelShapeSelected;
blockPuzzlePanel.OnSubmit += SubmitGameResult;
// blockPuzzlePanel.
blockPuzzlePanel.Panel.OnSubmit.AddListener(SubmitGameResult);
blockPuzzlePanel.Panel.OnPopUp.AddListener(PopUpShape);
// 由网格触发
grid.OnShapePlaced += PreCheckGameState;
@@ -116,7 +117,7 @@ namespace AibisDream
// 由Shape触发
shapeFactory.OnDragStart += OnShapeDragStart;
shapeFactory.OnDragEnd += OnShapeDragEnd;
// shapeFactory.OnDragUpdate += OnShapeRecycled;
shapeFactory.OnDragUpdate += OnShapeDragUpdate;
}
private void OnPanelShapeSelected(BlockShapeInfo shapeData)
@@ -139,19 +140,60 @@ namespace AibisDream
// 更新选中图形
// 回收抽屉高亮,半开
blockPuzzlePanel.Panel.SetRecycleAvailable(true);
shapeRecycleSlot.PreRecycle();
shapeRecycleSlot.SetRecycleAvaliable(true);
}
public void OnShapeDragEnd(IBlockShape blockShape, bool isPlaced)
{
if (isPlaced)
{
// 关闭回收抽屉
blockPuzzlePanel.Panel.SetRecycleAvailable(false);
}
//
// TODO: 如果吸附到回收处,应该播放动画,并提示回收成功
}
public void OnShapeDragUpdate(IBlockShape blockShape)
{
// 更新回收槽状态
shapeRecycleSlot.UpdateSlotState(blockShape);
}
public void PopUpShape()
{
if (selectedShapeName == null)
{
return;
}
// 弹出形状
var blockShape = shapeFactory.CreateBlockShape(selectedShapeName);
shapeRecycleSlot.PopUpShape(blockShape);
blockShape.GetComponent<ShapeDragger>().CurrentState = DragState.Idle;
// 删除按钮
blockPuzzlePanel.Panel.RemoveDeviceButton(selectedShapeName);
selectedShapeName = null;
blockPuzzlePanel.ClearShapeInScreen();
}
// --------------------- 吸附校验 ---------------------
public bool TrySnapToRecycleSlot(BlockShape blockShape)
{
// 先判断是否吸附到回收槽
if (shapeRecycleSlot.CurrentState == PositionState.Open)
{
shapeRecycleSlot.RecycleShape(blockShape);
// TODO: 向面板添加回收的形状
blockPuzzlePanel.Panel.OnDeviceRecycle(blockShape);
// 延时后进行销毁
ActionKit.Delay(1.0f, () => {
shapeFactory.RecycleBlockShape(blockShape);
}).Start(this);
return true;
}
return false;
}
// ---------------- 编辑器状态逻辑 ----------------
/// <summary>
@@ -201,6 +243,10 @@ namespace AibisDream
public void CreateShapeInEditor(string shapeKey)
{
if (shapeFactory == null)
{
shapeFactory = new ShapeFactory(shapeRoot);
}
shapeFactory.CreateBlockShape(shapeKey);
}
}