/*enum states{ Read = 1, //0001 Write = 2, //0010 Create = 4,//0100 Delete = 8 //1000 }/**状态类型不算合并的不超过32种 export enum StateType { Unmatched = 1<<1,//无敌 Swoon = 1<<2,//晕眩 }*/ /**状态对像*/ class State { private _state: number = 0;//无状态 public Init(): void { this._state = 0; } /**是否满足传入的状态*/ public Meet(state: number): boolean { return State.Has(this._state, state); } /**传入的状态是组合型时只要满足其一 */ public MeetAny(state: number): boolean { let a = this._state & state; if (a === state) return true; if (a == 0) return false; return State.Has(state, a); } /**是否满足所有传入的状态*/ public MeetAll(...params: number[]): boolean { let result = 0; for (let i = 0; i < params.length; i++) { result |= params[i]; } return this.Meet(State.CombieState(result)) } /**是否满足其中传入的状态*/ public MeetAnyOne(...params: number[]): boolean { for (let i = 0; i < params.length; i++) { if (this.Meet(params[i])) return true; } return false; } /**加入状态*/ public Add(state: number): void { this._state |= state; } /**删除状态*/ public Delete(state: number): void { if (!this.Meet(state)) return; this._state ^= state; } /**转成状态*/ public static ToState(Id: number): number { return 1 << Id; } /**合并状态*/ public static CombieState(...params: number[]): number { let result = 0; for (let i = 0; i < params.length; i++) { result |= params[i]; } return result; } public static Has(statss: number, state: number): boolean { return (statss & state) === state; } } export default function get_new_state(): State { return new State(); }