mirror of
https://github.com/motajs/template.git
synced 2026-09-13 10:18:50 +08:00
refactor(03-15): order replay class internals consistently
- Keep private command actions before their execute callers per project conventions
This commit is contained in:
parent
f5c6b06c59
commit
4e318e6ce1
@ -54,11 +54,6 @@ class ReplayUpCommand implements IReplayCommand {
|
||||
);
|
||||
}
|
||||
|
||||
execute(step: IReplayStepHandler): Promise<boolean> {
|
||||
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<boolean> {
|
||||
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<boolean> {
|
||||
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<boolean> {
|
||||
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<boolean> {
|
||||
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<boolean> {
|
||||
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<boolean> {
|
||||
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<boolean> {
|
||||
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<boolean> {
|
||||
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<boolean> {
|
||||
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<boolean> {
|
||||
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<boolean> {
|
||||
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 */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user