FSM状态机

This commit is contained in:
janing
2025-12-14 22:38:43 +08:00
parent 9989d60ee4
commit 1cfd79a231
11 changed files with 866 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
import { IState } from "./IState";
/**
* 状态基类
* 提供状态接口的基础实现
*/
export abstract class BaseState implements IState {
/**
* 状态所属的状态机
*/
protected _fsm: any;
/**
* 状态名称
*/
public readonly name: string;
/**
* 构造函数
* @param fsm 状态所属的状态机
* @param name 状态名称
*/
constructor(fsm: any, name: string) {
this._fsm = fsm;
this.name = name;
}
/**
* 进入状态
* 子类可以重写此方法来实现自定义逻辑
* @param params 可选参数
*/
onEnter(params?: any): void {
console.log(`[FSM] 进入状态: ${this.name}`, params || '');
}
/**
* 更新状态
* 子类可以重写此方法来实现每帧更新逻辑
* @param dt 距离上一帧的时间增量(秒)
*/
onUpdate?(dt: number): void {
// 子类可选择实现
}
/**
* 退出状态
* 子类可以重写此方法来实现清理逻辑
*/
onExit(): void {
console.log(`[FSM] 退出状态: ${this.name}`);
}
}