33ed0c78-fc44-4d1a-9394-d76772b8c58f.js 9.96 KB
"use strict";
cc._RF.push(module, '33ed0x4/ERNGpOU12dyuMWP', 'UnlockSpecialPlotModelManager');
// script/game/model/UnlockSpecialPlotModelManager.ts

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.UnlockSpecialPlotModelManager = void 0;
const simba_config_manager_1 = require("simba-config-manager");
const simba_sdk_1 = require("simba-sdk");
const AVG_1 = require("../../avg/AVG");
const StoryTbl_1 = require("../../config/StoryTbl");
const UnlockItemModelManager_1 = require("./UnlockItemModelManager");
class UnlockSpecialPlotModelManager1 {
    constructor() {
        /**存档Key */
        this.UnlockedSpecialPlots = 'UnlockedSpecialPlots_';
        /**存档Key */
        this.ClickedSpecialPlotsByItem = 'ClickedSpecialPlots_';
        /**存档Key */
        this.FirstDayTime = "FirstDayTime";
        /**配置解锁番外剧情的剧情id和番外剧情id的映射表 */
        this._unlockPlotIds = [];
    }
    /**
     * 检查一个番外剧情是否解锁
     * @param specialPlotId 番外剧情Id
     * @returns
     */
    checkSpecialPlotIdIsUnlocked(specialPlotId) {
        let unlockedAllSpecialPlotId = this.unlockedAllSpecialPlotId();
        for (let i = 0; i < unlockedAllSpecialPlotId.length; i++) {
            if (specialPlotId == unlockedAllSpecialPlotId[i]) {
                return true;
            }
        }
        return false;
    }
    /**
     * 根据ItemId获取该Id解锁了的番外Id
     * @param itemId
     * @returns
     */
    unlockedSpecialPlotIdByItemId(itemId) {
        let unlockedSpecialPlots = [];
        let unlockedSpecialPlotsStrs = AVG_1.GameRecord.globalVariables[this.UnlockedSpecialPlots + itemId];
        if (unlockedSpecialPlotsStrs) {
            let itemsIdStr = unlockedSpecialPlotsStrs.split(',');
            itemsIdStr.forEach(id => {
                try {
                    unlockedSpecialPlots.push(Number(id));
                }
                catch (error) {
                    console.error(error);
                }
            });
        }
        unlockedSpecialPlots.sort((a, b) => {
            if (a < b) {
                return -1;
            }
            else if (a > b) {
                return 1;
            }
            return 0;
        });
        return unlockedSpecialPlots;
    }
    /**
     * 根据ItemId保存解锁了的番外Id到存档
     * @param specialPlotId 番外Id
     */
    saveUnlockedSpecialPlotIdByItemIdToGameRecord(specialPlotId) {
        let cfg = undefined;
        cfg = simba_config_manager_1.ConfigManager.getConfig(StoryTbl_1.storyTbl, specialPlotId);
        let itemId = -1;
        if (cfg) {
            itemId = cfg.itemId;
        }
        let unlockedSpecialPlotsStrs = AVG_1.GameRecord.globalVariables[this.UnlockedSpecialPlots + itemId];
        let plots = [];
        if (unlockedSpecialPlotsStrs) {
            let unlockedSpecialPlotsStr = unlockedSpecialPlotsStrs.split(',');
            unlockedSpecialPlotsStr.forEach(id => {
                try {
                    plots.push(Number(id));
                    plots.sort((a, b) => {
                        if (a < b) {
                            return -1;
                        }
                        else if (a > b) {
                            return 1;
                        }
                        return 0;
                    });
                }
                catch (error) {
                    console.error(error);
                }
            });
        }
        if (plots.indexOf(specialPlotId) == -1) {
            plots.push(specialPlotId);
            plots.sort((a, b) => {
                if (a < b) {
                    return -1;
                }
                else if (a > b) {
                    return 1;
                }
                return 0;
            });
            AVG_1.GameRecord.globalVariables[this.UnlockedSpecialPlots + itemId] = plots.toString();
            AVG_1.GameRecord.saveRecord();
            return true;
        }
        return false;
    }
    /**
     * 根据ItemId获取该Id观看了的番外Id
     * @param itemId
     * @returns
     */
    clickedSpecialPlotIdByItemId(itemId) {
        let clickedSpecialPlots = [];
        let clickedSpecialPlotsStrs = AVG_1.GameRecord.globalVariables[this.ClickedSpecialPlotsByItem + itemId];
        if (clickedSpecialPlotsStrs) {
            let itemsIdStr = clickedSpecialPlotsStrs.split(',');
            itemsIdStr.forEach(id => {
                try {
                    clickedSpecialPlots.push(Number(id));
                }
                catch (error) {
                    console.error(error);
                }
            });
        }
        return clickedSpecialPlots;
    }
    /**
     * 根据ItemId保存观看了的番外Id到存档
     * @param specialPlotId 番外Id
     */
    saveClickedSpecialPlotIdByItemIdToGameRecord(specialPlotId) {
        let cfg = undefined;
        cfg = simba_config_manager_1.ConfigManager.getConfig(StoryTbl_1.storyTbl, specialPlotId);
        let itemId = -1;
        if (cfg) {
            itemId = cfg.itemId;
        }
        let clickedSpecialPlotsStrs = AVG_1.GameRecord.globalVariables[this.ClickedSpecialPlotsByItem + itemId];
        let plots = [];
        if (clickedSpecialPlotsStrs) {
            let unlockedSpecialPlotsStr = clickedSpecialPlotsStrs.split(',');
            unlockedSpecialPlotsStr.forEach(id => {
                try {
                    plots.push(Number(id));
                }
                catch (error) {
                    console.error(error);
                }
            });
        }
        if (plots.indexOf(specialPlotId) == -1) {
            plots.push(specialPlotId);
            AVG_1.GameRecord.globalVariables[this.ClickedSpecialPlotsByItem + itemId] = plots.toString();
            AVG_1.GameRecord.saveRecord();
            return true;
        }
        return false;
    }
    /**
     * 根据ItemId获取该Id的所有番外Id(不论是否解锁)
     * @param itemId
     * @returns
     */
    allSpecialPlotIdByItemId(itemId) {
        let allSpecialPlots = [];
        let cfg = simba_config_manager_1.ConfigManager.getAllConfig(StoryTbl_1.storyTbl);
        if (cfg) {
            let ret = [];
            for (let id in cfg) {
                ret.push({ specialPlotId: Number(id), itemId: cfg[id].itemId });
            }
            for (let i = 0; i < ret.length; i++) {
                if (itemId == ret[i].itemId) {
                    allSpecialPlots.push(ret[i].specialPlotId);
                }
            }
        }
        return allSpecialPlots;
    }
    /**
    * 获取所有解锁了的番外Id
    * @returns
    */
    unlockedAllSpecialPlotId() {
        let unlockedAllSpecialPlotId = [];
        let unlockedItemId = UnlockItemModelManager_1.UnlockItemModelManager.unlockItems;
        for (let i = 0; i < unlockedItemId.length; i++) {
            let unlockedSpecialPlotId = AVG_1.GameRecord.globalVariables[this.UnlockedSpecialPlots + unlockedItemId[i]];
            if (unlockedSpecialPlotId) {
                let clickedSpecialPlotIdStr = unlockedSpecialPlotId.split(',');
                clickedSpecialPlotIdStr.forEach(id => {
                    try {
                        unlockedAllSpecialPlotId.push(Number(id));
                    }
                    catch (error) {
                        console.error(error);
                    }
                });
            }
        }
        return unlockedAllSpecialPlotId;
    }
    getFirstDayTime() {
        let firstDayTime = AVG_1.GameRecord.globalVariables[this.FirstDayTime];
        return firstDayTime;
    }
    saveFirstDayTime() {
        let firstDayTime = AVG_1.GameRecord.globalVariables[this.FirstDayTime];
        if (firstDayTime) {
            return false;
        }
        else {
            AVG_1.GameRecord.globalVariables[this.FirstDayTime] = simba_sdk_1.TimeManager.getTime();
            AVG_1.GameRecord.saveRecord();
            return true;
        }
    }
    /**
     * 登录初始化已经解锁的番外
     */
    loginInitUnlockSpecialPlots() {
        //当前剧情应该解锁的所有物品
        let specialPlotcfg = this.unlockPlotIds;
        //获取当前的剧情id
        let record = AVG_1.GameRecord.getPlotsInfo();
        for (let i = 0; i < specialPlotcfg.length; i++) {
            let ele = specialPlotcfg[i];
            if (ele) {
                if (record[`${ele.plotId}`] && record[`${ele.plotId}`].cnt >= 1) {
                    let unlockedSpecialPlotsStrs = AVG_1.GameRecord.globalVariables[this.UnlockedSpecialPlots + ele.itemId];
                    let plots = [];
                    if (unlockedSpecialPlotsStrs) {
                        let unlockedSpecialPlotsStr = unlockedSpecialPlotsStrs.split(',');
                        unlockedSpecialPlotsStr.forEach(id => {
                            try {
                                plots.push(Number(id));
                            }
                            catch (error) {
                                console.error(error);
                            }
                        });
                    }
                    if (plots.indexOf(ele.specialPlotId) == -1) {
                        plots.push(ele.specialPlotId);
                    }
                    AVG_1.GameRecord.globalVariables[this.UnlockedSpecialPlots + ele.itemId] = plots.toString();
                    // GameRecord.autoSave();
                }
            }
        }
    }
    get unlockPlotIds() {
        if (this._unlockPlotIds.length == 0)
            this.analysisSpecialPlotCfg();
        return this._unlockPlotIds;
    }
    /**
     * 解析story表结果
     */
    analysisSpecialPlotCfg() {
        let ret = [];
        let cfg = simba_config_manager_1.ConfigManager.getAllConfig(StoryTbl_1.storyTbl);
        for (let id in cfg) {
            ret.push({ specialPlotId: Number(id), plotId: cfg[id].plotId, itemId: cfg[id].itemId });
        }
        this._unlockPlotIds = ret;
    }
}
exports.UnlockSpecialPlotModelManager = new UnlockSpecialPlotModelManager1();

cc._RF.pop();