vertecs
Version:
A typescript entity-component-system framework
40 lines (30 loc) • 1.15 kB
text/typescript
import { NetworkComponent } from "../index";
import FiniteStateMachine from "../../utils/fsm/FiniteStateMachine";
export default class NetworkFiniteStateMachine extends NetworkComponent<string> {
public constructor() {
super();
}
public accept(stateName: string): boolean {
// TODO: Check if state exists and if the transition is valid
return true;
}
public isDirty(lastStateName?: string): boolean {
const finiteStateMachine =
this.entity?.getComponent(FiniteStateMachine);
return lastStateName !== finiteStateMachine?.currentStateName;
}
public write() {
const finiteStateMachine =
this.entity?.getComponent(FiniteStateMachine);
return finiteStateMachine?.currentStateName ?? "";
}
public read(stateName: string): void {
const finiteStateMachine =
this.entity?.getComponent(FiniteStateMachine);
if (!finiteStateMachine) return;
finiteStateMachine.setNextState(stateName);
}
public clone(): NetworkFiniteStateMachine {
return new NetworkFiniteStateMachine();
}
}