import GameUtil from "../core/GameUtil"; import SKDataUtil from "../gear/SKDataUtil"; import SKLogger from "../gear/SKLogger"; import {MsgCode} from "../role/EEnum"; import DB from "../utils/DB"; export default class MagicWeaponMgr { static shared = new MagicWeaponMgr(); dhamaData: any; magicWeaponObjs: any; uuidArr: any = []; constructor() { this.dhamaData = null; this.uuidArr = []; } launch() { this.dhamaData = GameUtil.require_ex('../../conf/prop_data/prop_magic_weapon'); let callback = (ret: any, item: any) => { if (ret == MsgCode.SUCCESS) { for (let key in item) { this.uuidArr.push(item[key].EquipID) } } callback = null; } DB.equipKey(callback); this.magicWeaponObjs ={} SKLogger.debug('法宝模块加载完毕!'); } getMagicWeaponID() { let flag = true; let uuid = ""; let count = 0; while (flag) { uuid = SKDataUtil.uuid(); // 判断主键是否存在,不存在则返回 if (this.uuidArr.indexOf(uuid) == -1) { flag = false; this.uuidArr.push(uuid); } // 连续二十次重复自动根据随机数加字符生成主键 else if(count > 20){ flag = false; uuid = SKDataUtil.encodeInvite(Math.random()) this.uuidArr.push(uuid); SKLogger.info(`生成UUID失败本次生成主键:${uuid}`); } } return uuid; } addMagicWeapon(weapon: any) { this.magicWeaponObjs[weapon.efId] = weapon; } delMagicWeapon(id: any) { delete this.magicWeaponObjs[id]; } // 获得法宝属性 getMagicWeaponAttr(magicWeapon: any): any { let datum = this.dhamaData[magicWeapon.id]; let result: any = {}; result['baseAttr'] = '{}'; if (datum.baseAttr) { let baseInfo: any = {}; let baseAttr = datum.baseAttr.split(';'); for (const item of baseAttr) { let itemAttr = item.split(':'); if (itemAttr.length == 2 && GameUtil.attrEquipTypeStr[itemAttr[0]] != null) { baseInfo[GameUtil.attrEquipTypeStr[itemAttr[0]]] = itemAttr[1]; } } result['baseAttr'] = SKDataUtil.toJson(baseInfo, "{}"); } datum.baseAttr = result['baseAttr']; datum.efId = this.getMagicWeaponID(); datum.level = 1; datum.efExp = 0; return datum; } // 添加法宝进数据库 getInsertData(weapon: any, roleid: any): any { if (!weapon) { return null; } let fieldstr = 'owner_id, ef_id, ef_name, base_attr, ef_type, level, ef_exp, ef_level, number, active_skillid, passive_skillid, ef_index, ef_state, nimbus, icon, ef_score, create_time'; let valuestr = `'${roleid}', '${weapon.efId}', '${weapon.efName}', '${weapon.baseAttr}', ${weapon.efType}, ${weapon.level}, '${weapon.efExp}', ${weapon.efLevel}, ${weapon.number}, ${weapon.activeSkillid}, ${weapon.passiveSkillid}, ${weapon.efIndex}, ${weapon.efState}, ${weapon.nimbus}, ${weapon.icon}, ${weapon.efScore}, NOW()`; let data: any = {}; data.fieldstr = fieldstr; data.valuestr = valuestr; return data; } }