// 礼包奖励表
import { readFileAndParse } from '../util';
import { FILENAME } from '../../consts';
const _ = require('lodash');

export interface DicGiftPackagePlan {
    // 唯一id
    readonly id: number;
    // 礼包类型 dic_zyz_giftPackage的id
    readonly giftPackageId: number;
    // addReward中的type
    readonly contentType: number;
    // 物品id或武将id
    readonly content: number;
    // 数量
    readonly count: number;
    // 权重
    readonly weight: number;
    // 保底， 每floor必出floorCount个，提前获取到次数就重置
    readonly floorFrequency: number;
    // 保底数量
    readonly floorCount: number;
}

type KeysEnum<T> = { [P in keyof Required<T>]: true };
const DicGiftPackagePlanKeys: KeysEnum<DicGiftPackagePlan> = {
    id: true,
    giftPackageId: true,
    contentType: true,
    content: true,
    count: true,
    weight: true,
    floorFrequency: true,
    floorCount: true
}

export const dicGiftPackagePlan = new Map<number, DicGiftPackagePlan[]>(); // packageId => [plan]
export function loadGiftPackagePlan() {
    dicGiftPackagePlan.clear();
    let arr = readFileAndParse(FILENAME.DIC_GIFT_PACKAGE_PLAN);

    arr.forEach(o => {
        if(o.floor == '&') {
            o.floorFrequency = 0;
            o.floorCount = 0;
        } else {
            let arr = o.floor.split('&');
            o.floorFrequency = isNaN(parseInt(arr[0]))? 0: parseInt(arr[0]);
            o.floorCount = isNaN(parseInt(arr[1]))? 0: parseInt(arr[1]);
        }
        if(!dicGiftPackagePlan.has(o.giftPackageId)) {
            dicGiftPackagePlan.set(o.giftPackageId, []);
        }
        dicGiftPackagePlan.get(o.giftPackageId)?.push(_.pick(o, Object.keys(DicGiftPackagePlanKeys)));
    });
    arr = undefined;
}