diff --git a/packages-user/data-state/src/replay/commands.ts b/packages-user/data-state/src/replay/commands.ts index ac6b5be..65c8fa7 100644 --- a/packages-user/data-state/src/replay/commands.ts +++ b/packages-user/data-state/src/replay/commands.ts @@ -54,11 +54,6 @@ class ReplayUpCommand implements IReplayCommand { ); } - execute(step: IReplayStepHandler): Promise { - if (step.params.length !== 0) return Promise.resolve(false); - return Promise.resolve(this.moveHero()); - } - private moveHero(): boolean { const mover = this.state.hero.location.mover; if (mover.moving) return false; @@ -67,6 +62,11 @@ class ReplayUpCommand implements IReplayCommand { if (!controller) return false; return true; } + + execute(step: IReplayStepHandler): Promise { + if (step.params.length !== 0) return Promise.resolve(false); + return Promise.resolve(this.moveHero()); + } } class ReplayRightCommand implements IReplayCommand { @@ -82,11 +82,6 @@ class ReplayRightCommand implements IReplayCommand { ); } - execute(step: IReplayStepHandler): Promise { - if (step.params.length !== 0) return Promise.resolve(false); - return Promise.resolve(this.moveHero()); - } - private moveHero(): boolean { const mover = this.state.hero.location.mover; if (mover.moving) return false; @@ -95,6 +90,11 @@ class ReplayRightCommand implements IReplayCommand { if (!controller) return false; return true; } + + execute(step: IReplayStepHandler): Promise { + if (step.params.length !== 0) return Promise.resolve(false); + return Promise.resolve(this.moveHero()); + } } class ReplayDownCommand implements IReplayCommand { @@ -110,11 +110,6 @@ class ReplayDownCommand implements IReplayCommand { ); } - execute(step: IReplayStepHandler): Promise { - if (step.params.length !== 0) return Promise.resolve(false); - return Promise.resolve(this.moveHero()); - } - private moveHero(): boolean { const mover = this.state.hero.location.mover; if (mover.moving) return false; @@ -123,6 +118,11 @@ class ReplayDownCommand implements IReplayCommand { if (!controller) return false; return true; } + + execute(step: IReplayStepHandler): Promise { + if (step.params.length !== 0) return Promise.resolve(false); + return Promise.resolve(this.moveHero()); + } } class ReplayLeftCommand implements IReplayCommand { @@ -138,11 +138,6 @@ class ReplayLeftCommand implements IReplayCommand { ); } - execute(step: IReplayStepHandler): Promise { - if (step.params.length !== 0) return Promise.resolve(false); - return Promise.resolve(this.moveHero()); - } - private moveHero(): boolean { const mover = this.state.hero.location.mover; if (mover.moving) return false; @@ -151,6 +146,11 @@ class ReplayLeftCommand implements IReplayCommand { if (!controller) return false; return true; } + + execute(step: IReplayStepHandler): Promise { + if (step.params.length !== 0) return Promise.resolve(false); + return Promise.resolve(this.moveHero()); + } } class ReplayAutoPathfindCommand implements IReplayCommand { @@ -170,6 +170,12 @@ class ReplayAutoPathfindCommand implements IReplayCommand { ); } + private moveToPoint(x: number, y: number): boolean { + const result = this.state.pathfinding.moveTo({ x, y }); + if (!result) return false; + return true; + } + execute(step: IReplayStepHandler): Promise { if (step.params.length !== 2) return Promise.resolve(false); const x = step.params[0]; @@ -177,12 +183,6 @@ class ReplayAutoPathfindCommand implements IReplayCommand { if (!isNumber(x) || !isNumber(y)) return Promise.resolve(false); return Promise.resolve(this.moveToPoint(x, y)); } - - private moveToPoint(x: number, y: number): boolean { - const result = this.state.pathfinding.moveTo({ x, y }); - if (!result) return false; - return true; - } } class ReplayUseItemCommand implements IReplayCommand { @@ -195,16 +195,16 @@ class ReplayUseItemCommand implements IReplayCommand { >); } + private useItem(item: number | string): boolean { + return this.state.hero.items.useItem(item); + } + execute(step: IReplayStepHandler): Promise { if (step.params.length !== 1) return Promise.resolve(false); const item = step.params[0]; if (!isItem(item)) return Promise.resolve(false); return Promise.resolve(this.useItem(item)); } - - private useItem(item: number | string): boolean { - return this.state.hero.items.useItem(item); - } } class ReplayEquipCommand implements IReplayCommand { @@ -222,6 +222,22 @@ class ReplayEquipCommand implements IReplayCommand { >); } + private equip( + uid: number, + slot: number | string, + autoUnload: boolean | undefined + ): boolean { + const equipment = this.state.hero.equip; + const slotIndex = resolveSlot(this.state, slot); + if (slotIndex === null) return false; + if (equipment.getEquipped(slotIndex) === uid) return true; + if (equipment.canEquipTo(uid, slot) === EquipStatus.CannotEquip) { + return false; + } + equipment.equip(uid, slot, autoUnload); + return equipment.getEquipped(slotIndex) === uid; + } + execute(step: IReplayStepHandler): Promise { if (step.params.length < 2 || step.params.length > 3) { return Promise.resolve(false); @@ -239,22 +255,6 @@ class ReplayEquipCommand implements IReplayCommand { if (slotIndex === null) return Promise.resolve(false); return Promise.resolve(this.equip(uid, slot, autoUnload)); } - - private equip( - uid: number, - slot: number | string, - autoUnload: boolean | undefined - ): boolean { - const equipment = this.state.hero.equip; - const slotIndex = resolveSlot(this.state, slot); - if (slotIndex === null) return false; - if (equipment.getEquipped(slotIndex) === uid) return true; - if (equipment.canEquipTo(uid, slot) === EquipStatus.CannotEquip) { - return false; - } - equipment.equip(uid, slot, autoUnload); - return equipment.getEquipped(slotIndex) === uid; - } } class ReplayUnequipCommand implements IReplayCommand { @@ -270,6 +270,13 @@ class ReplayUnequipCommand implements IReplayCommand { ); } + private unequip(slot: number): boolean { + const equipment = this.state.hero.equip; + if (equipment.getEquipped(slot) === undefined) return false; + equipment.unequip(slot); + return equipment.getEquipped(slot) === undefined; + } + execute(step: IReplayStepHandler): Promise { if (step.params.length !== 1) return Promise.resolve(false); const slot = step.params[0]; @@ -278,13 +285,6 @@ class ReplayUnequipCommand implements IReplayCommand { } return Promise.resolve(this.unequip(slot)); } - - private unequip(slot: number): boolean { - const equipment = this.state.hero.equip; - if (equipment.getEquipped(slot) === undefined) return false; - equipment.unequip(slot); - return equipment.getEquipped(slot) === undefined; - } } /** 创建按稳定 enum 顺序排列的默认 replay command items */