import CsvMgr from "../Mgr_CSV/CsvMgr"; import { localBagData } from "../Mgr_LocalData/DataTypeProxy/BagDataProxy"; import { TokenDataProxy } from "../Mgr_LocalData/DataTypeProxy/TokenDataProxy"; import { TreasureDataProxy } from "../Mgr_LocalData/DataTypeProxy/TreasureDataProxy"; import { PropType } from "./GameEnum"; import { BAG_PARAMS, TREASURE_TYPE } from "./GGameData"; import IUpgrade from "./IUpgrade"; export default class BagDataPoxy extends IUpgrade{ archive: localBagData; uplevelcost: number = 0; //升级消耗 constructor(bagArchive: localBagData) { // 调用父类构造函数,传入等级和材料参数 super(bagArchive.level, BAG_PARAMS.MATERIAL_BASE, BAG_PARAMS.MATERIAL_SENIOR); this.archive = bagArchive; this.refreshLevel(); } // Getter 属性 /** * 检查限制条件 * @param {number} value - 要检查的值 * @returns {boolean} 是否达到限制 */ checkLimit(totalAdded) { return totalAdded >= 6; } /** * 刷新等级 */ protected refreshLevel() { this.archive.level = this.level; this.refreshSize(); // 计算升级费用(指数增长) this.uplevelcost = Math.pow(this.level, 4) * BAG_PARAMS.BASE_COST; } /** * 刷新容量大小 */ refreshSize(){ this.archive.size = BAG_PARAMS.BASE_SIZE + (this.level - 1) * BAG_PARAMS.ADD_SIZE; this.archive.size += TreasureDataProxy.Ins.getProp1(TREASURE_TYPE.CAPACITY); } /** * 获取背包升级因子 */ get factor() { const level = this.level; return level < 2 ? level + 1 : level * level; } /** * 获取物品数量 */ private getItemCount(id): number{ return this.archive.items.filter(item => item.id == id).length; } /** * 检查背包升级材料是否足够 */ checkMaterials() { for (const item of this.materials) { if (this.getItemCount(item.id) < item.value) { return false; } } return true; } }