100 lines
3.4 KiB
TypeScript
100 lines
3.4 KiB
TypeScript
|
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;
|
|||
|
}
|
|||
|
|
|||
|
}
|