refactor(mission): 实现技能装备盒共享计数机制
1. 新增BoxCounter类统一管理技能和装备盒的槽位占用 2. 调整技能/装备槽位布局使用常量对齐 3. 任务开始时重置共享计数器 4. 添加槽位已满的拦截逻辑和提示 5. 槽位增减时同步更新计数器
This commit is contained in:
@@ -59,19 +59,15 @@ export class MissEquipComp extends CCComp {
|
||||
@property({ type: Prefab })
|
||||
private equip_box: Prefab = null;
|
||||
/**
|
||||
* 预定义的 10 个槽位坐标(2 行 × 5 列):
|
||||
* 第 1 行 y=240:x = -320, -240, -160, -80, 0
|
||||
* 第 2 行 y=320:x = -320, -240, -160, -80, 0
|
||||
* 预定义的 6 个槽位坐标(单行):
|
||||
*/
|
||||
private slots: SkillBoxSlot[] = [
|
||||
{ x: -310, y: BoxSet.GAME_LINE-100, used: false, node: null },
|
||||
{ x: -230, y: BoxSet.GAME_LINE-100, used: false, node: null },
|
||||
{ x: -150, y: BoxSet.GAME_LINE-100, used: false, node: null },
|
||||
{ x: -70, y: BoxSet.GAME_LINE-100, used: false, node: null },
|
||||
{ x: 10, y: BoxSet.GAME_LINE-100, used: false, node: null },
|
||||
{ x: 90, y: BoxSet.GAME_LINE-100, used: false, node: null },
|
||||
{ x: 170, y: BoxSet.GAME_LINE-100, used: false, node: null },
|
||||
{ x: 250, y: BoxSet.GAME_LINE-100, used: false, node: null },
|
||||
{ x: -310, y: BoxSet.GAME_LINE-70, used: false, node: null },
|
||||
{ x: -230, y: BoxSet.GAME_LINE-70, used: false, node: null },
|
||||
{ x: -150, y: BoxSet.GAME_LINE-70, used: false, node: null },
|
||||
{ x: -70, y: BoxSet.GAME_LINE-70, used: false, node: null },
|
||||
{ x: 10, y: BoxSet.GAME_LINE-70, used: false, node: null },
|
||||
{ x: 90, y: BoxSet.GAME_LINE-70, used: false, node: null },
|
||||
];
|
||||
|
||||
/** 注册事件监听 */
|
||||
@@ -171,6 +167,7 @@ export class MissEquipComp extends CCComp {
|
||||
const emptyIndex = this.slots.findIndex(slot => !slot.used);
|
||||
if (emptyIndex === -1) {
|
||||
mLogger.warn(this.debugMode, "MissEquipComp", "equip_box slots are full");
|
||||
oops.gui.toast("装备槽位已满");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/modu
|
||||
import { SBox } from "./SBox";
|
||||
import { oops } from "db://oops-framework/core/Oops";
|
||||
import { GameEvent } from "../common/config/GameEvent";
|
||||
import { BoxSet } from "../common/config/GameSet";
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
/** 技能槽位数据结构 */
|
||||
@@ -58,21 +59,15 @@ export class MissSkillsComp extends CCComp {
|
||||
private skill_box: Prefab = null;
|
||||
|
||||
/**
|
||||
* 预定义的 10 个槽位坐标(2 行 × 5 列):
|
||||
* 第 1 行 y=240:x = -320, -240, -160, -80, 0
|
||||
* 第 2 行 y=320:x = -320, -240, -160, -80, 0
|
||||
* 预定义的 6 个槽位坐标(单行):
|
||||
*/
|
||||
private slots: SkillBoxSlot[] = [
|
||||
{ x: -310, y: 300, used: false, node: null },
|
||||
{ x: -220, y: 300, used: false, node: null },
|
||||
{ x: -130, y: 300, used: false, node: null },
|
||||
{ x: -40, y: 300, used: false, node: null },
|
||||
{ x: 50, y: 300, used: false, node: null },
|
||||
{ x: -310, y: 400, used: false, node: null },
|
||||
{ x: -220, y: 400, used: false, node: null },
|
||||
{ x: -130, y: 400, used: false, node: null },
|
||||
{ x: -40, y: 400, used: false, node: null },
|
||||
{ x: 50, y: 400, used: false, node: null },
|
||||
{ x: -310, y: BoxSet.GAME_LINE+200, used: false, node: null },
|
||||
{ x: -230, y: BoxSet.GAME_LINE+200, used: false, node: null },
|
||||
{ x: -150, y: BoxSet.GAME_LINE+200, used: false, node: null },
|
||||
{ x: -70, y: BoxSet.GAME_LINE+200, used: false, node: null },
|
||||
{ x: 10, y: BoxSet.GAME_LINE+200, used: false, node: null },
|
||||
{ x: 90, y: BoxSet.GAME_LINE+200, used: false, node: null },
|
||||
];
|
||||
|
||||
/** 注册事件监听 */
|
||||
@@ -172,6 +167,7 @@ export class MissSkillsComp extends CCComp {
|
||||
const emptyIndex = this.slots.findIndex(slot => !slot.used);
|
||||
if (emptyIndex === -1) {
|
||||
mLogger.warn(this.debugMode, "MissSkillsComp", "skill_box slots are full");
|
||||
oops.gui.toast("技能槽位已满");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user