GameSceneObjTableMgr.ts 1.42 KB
import { tMgr } from "../../Global";
import { GameSceneObjTable, TableName } from "./TableDefine";

export class GameSceneObjTableMgr {

    private _map: Map<number, GameSceneObjTable[]> = new Map<number, GameSceneObjTable[]>();

    private static _ins: GameSceneObjTableMgr = null;
    static get ins(): GameSceneObjTableMgr {
        if (this._ins == null) {
            this._ins = new GameSceneObjTableMgr();

            let all = tMgr.map[TableName.GAME_SCENE_OBJ];

            for (let i = 0; i < 3; ++i) {
                this._ins._map.set(i + 1, []);
            }

            for (const key in all) {
                if (Object.prototype.hasOwnProperty.call(all, key)) {

                    if (!Number(key)) {
                        continue;
                    }

                    const element = all[key] as GameSceneObjTable;
                    this._ins._map.get(element.SceneId).push(element);
                }
            }
        }

        return this._ins;
    }

    // getBy

    getByScene(scendId: number): GameSceneObjTable[] {
        return this._map.get(scendId);
    }

    getParentObj(obj: GameSceneObjTable): GameSceneObjTable {
        let sceneObj = this.getByScene(obj.SceneId);

        for (let i = 0; i < sceneObj.length; i++) {
            const element = sceneObj[i];

            if (element.Unlock.includes(obj.ID)) {
                return element;
            }
        }
        return null;
    }
}