31 lines
		
	
	
		
			720 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			720 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import State from "./State";
 | 
						||
import StateMachine from "./StateMachine";
 | 
						||
 | 
						||
/***
 | 
						||
 * 子有限状态机基类
 | 
						||
 * 用处:例如有个idle的state,但是有多个方向,为了让主状态机更整洁,可以把同类型的但具体不同的state都封装在子状态机中
 | 
						||
 */
 | 
						||
export default abstract class SubStateMachine {
 | 
						||
  private _currentState: State = null;
 | 
						||
  stateMachines: Map<string, State> = new Map();
 | 
						||
 | 
						||
  constructor(public fsm: StateMachine) {}
 | 
						||
 | 
						||
  get currentState() {
 | 
						||
    return this._currentState;
 | 
						||
  }
 | 
						||
 | 
						||
  set currentState(newState) {
 | 
						||
    if (!newState) {
 | 
						||
      return;
 | 
						||
    }
 | 
						||
    this._currentState = newState;
 | 
						||
    this._currentState.run();
 | 
						||
  }
 | 
						||
 | 
						||
  /***
 | 
						||
   * 具体类实现
 | 
						||
   */
 | 
						||
  abstract run(): void;
 | 
						||
}
 |