FSM状态机
This commit is contained in:
53
client/assets/scripts/Framework/FSM/BaseState.ts
Normal file
53
client/assets/scripts/Framework/FSM/BaseState.ts
Normal 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}`);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user