1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /*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(); }
|