import DB from "../utils/DB"; import {MsgCode} from "../role/EEnum"; import SKDataUtil from "../gear/SKDataUtil"; export default class DebrisMall { static shared = new DebrisMall(); // 碎片物品编号 debris: number; // 碎片商城数据 debris_mall_map: Map; constructor() { this.debris = 70004; this.debris_mall_map = new Map(); } init() { DB.selectDebrisData((code: any, info: any) => { if (MsgCode.SUCCESS == code){ this.debris_mall_map.clear(); for (const data of info) { this.debris_mall_map.set(data.serial,{name: data.name, serial: data.serial, price: data.price, num: data.num, type: data.type}); } } }); } /** * 请求碎片商城 * @param player 角色信息 */ getDebrisMallData(player: any){ let list: any[] = []; for (let[k,v] of this.debris_mall_map) { list.push(v); } player.send("s2c_debris_mall",{debris: SKDataUtil.toJson(list,"{}")}); } /** * 请求碎片商城兑换 * @param player 角色信息 * @param serial 物品编号 */ getDebrisMallConvert(player: any, serial: number){ // 获取当前兑换商品信息 let debris_mall: any = this.debris_mall_map.get(serial); // 获取玩家背包碎片数据 let item_count = player.getBagItemNum(this.debris); if(debris_mall){ if (item_count < debris_mall.price) { player.send('s2c_notice', { strRichText: `碎片不足,无法兑换`, }); player.send('s2c_debris_mall_convert', {serial: serial, state: MsgCode.FAILED, num: item_count}); return; }else { player.addBagItem(this.debris, -debris_mall.price, false); player.addItem(serial,debris_mall.num, false, "碎片商城兑换!"); player.send('s2c_debris_mall_convert', {serial: serial, state: MsgCode.SUCCESS, num: (item_count - debris_mall.price)}); return; } }else{ player.send('s2c_notice', { strRichText: `兑换商品不存在`, }); } } }