mirror of
http://junepve.top:3000/chicrobot/CINC.git
synced 2026-10-30 01:41:29 +08:00
docs(all) 添加注释
This commit is contained in:
1 parent
3863cfe1f6
commit
3c9b15eef7
13 files changed
+317
-74
No files matched your search
@@ -1,36 +1,53 @@
|
||||
// systems/CommandSystem.js
|
||||
// 命令系统:处理玩家对游戏单位的各种命令(如移动、选择等)
|
||||
|
||||
// 从ControlMode.js导入当前激活的单位和选中的单位列表
|
||||
import { activeUnit, selectedUnits } from './ControlMode.js';
|
||||
|
||||
// 导出CommandSystem类,用于创建命令系统实例
|
||||
export class CommandSystem {
|
||||
// 构造函数:初始化命令系统
|
||||
constructor(scene) {
|
||||
// 保存场景引用,用于访问游戏世界和发送事件
|
||||
this.scene = scene;
|
||||
|
||||
// 监听场景中的移动相关事件
|
||||
// 当'move-relative'事件触发时,调用onMoveRelative方法
|
||||
scene.events.on('move-relative', this.onMoveRelative, this);
|
||||
// 当'move-to-point'事件触发时,调用onMoveToPoint方法
|
||||
scene.events.on('move-to-point', this.onMoveToPoint, this);
|
||||
// 当'select-unit'事件触发时,调用onSelectUnit方法
|
||||
scene.events.on('select-unit', this.onSelectUnit, this);
|
||||
}
|
||||
|
||||
// 处理相对移动命令:根据方向向量移动单位
|
||||
onMoveRelative(dir) {
|
||||
// 确定移动目标单位:优先使用选中的单位列表,如果没有选中单位则使用当前激活的单位
|
||||
const targets = selectedUnits.length > 0 ? selectedUnits : (activeUnit ? [activeUnit] : []);
|
||||
|
||||
// 遍历所有目标单位,调用它们的moveRelative方法进行相对移动
|
||||
targets.forEach(unit => {
|
||||
unit.moveRelative(dir.x, dir.y);
|
||||
});
|
||||
}
|
||||
|
||||
// 处理移动到指定点的命令
|
||||
onMoveToPoint(x, y) {
|
||||
// 确定移动目标单位:优先使用选中的单位列表,如果没有选中单位则使用当前激活的单位
|
||||
const targets = selectedUnits.length > 0 ? selectedUnits : (activeUnit ? [activeUnit] : []);
|
||||
|
||||
|
||||
// 遍历所有目标单位,调用它们的setTarget方法设置移动目标点
|
||||
targets.forEach(unit => {
|
||||
unit.setTarget(x, y); // ← 使用新接口
|
||||
unit.setTarget(x, y); // ← 使用单位的新接口方法
|
||||
});
|
||||
}
|
||||
|
||||
// 处理选择单位的命令
|
||||
onSelectUnit(unit) {
|
||||
// 切换单位
|
||||
// 动态导入ControlMode.js模块,确保能够访问最新的模块内容
|
||||
import('./ControlMode.js').then(mod => {
|
||||
// 调用ControlMode模块的setActiveUnit方法设置当前激活的单位
|
||||
mod.setActiveUnit(unit);
|
||||
// 触发'unit-activated'事件,通知其他系统当前单位已激活
|
||||
this.scene.events.emit('unit-activated', unit);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user