xy-server/game/object/PartnerConfigMgr.ts
2025-04-23 09:34:08 +08:00

109 lines
3.2 KiB
TypeScript

import SKLogger from "../gear/SKLogger";
import GameUtil from "../core/GameUtil";
import SKDataUtil from "../gear/SKDataUtil";
import { EAttrTypeL1 } from "../role/EEnum";
export default class PartnerConfigMgr
{
static shared=new PartnerConfigMgr();
mapPartner:any;
constructor()
{
this.mapPartner = {}; // < nPartnerID,<nAtrib,nAtribValue> >
}
init(){
this.LoadPartner('prop_partner.json');
this.LoadPower('prop_partner_power.json');
}
ReadFile(strFile:string):any
{
return GameUtil.require_ex('../../conf/prop_data/' + strFile);
}
LoadPartner(strFile:string)
{
let mapData = this.ReadFile(strFile);
for (const partnerid in mapData) {
if (mapData.hasOwnProperty(partnerid)) {
const partnerdata = mapData[partnerid];
partnerdata.levelInfo = [];
let skilllist = partnerdata.skill.split(';');
partnerdata.skills = {};
for (const t of skilllist) {
if(t.length > 0){
partnerdata.skills[t] = 0;
}
}
this.mapPartner[partnerid] = partnerdata;
}
}
}
LoadPower( strFile:string)
{
let mapData = this.ReadFile(strFile);
for (const _ in mapData) {
if (mapData.hasOwnProperty(_)) {
const PowerData = mapData[_];
let pdata = null;
try {
pdata = SKDataUtil.jsonBy(PowerData.Attribute);
} catch (error) {
SKLogger.debug('Parent[' + PowerData.id + '] Attr Load Error');
}
PowerData.Attribute = pdata;
// 附加一级属性
let attr1:any = {};
for(let key in EAttrTypeL1){
let value=SKDataUtil.numberBy(key);
if(isNaN(value)){
continue;
}
attr1[value] = 0;
}
for (const key in pdata) {
if (pdata.hasOwnProperty(key)) {
let okey = GameUtil.attrEquipTypeStr[key];
attr1[okey] = pdata[key];
if (GameUtil.equipTypeNumerical.indexOf(okey) == -1) {
attr1[okey] = attr1[okey] / 10;
}
}
}
PowerData.attr = attr1;
let partner = this.mapPartner[PowerData.partner_id];
if(partner){
partner.levelInfo[PowerData.level] = PowerData;
this.mapPartner[PowerData.partner_id] = partner;
}
}
}
}
GetPartnerInfo(nID:any)
{
if (this.mapPartner.hasOwnProperty(nID) == false)
return null;
return this.mapPartner[nID];
}
GetPower(nID:any, nRelive:any, nLevel:any)
{
let partner = this.mapPartner[nID];
if (partner == null )
return null;
let nLevelIndex = nRelive * 1000 + nLevel;
return partner.levelInfo[nLevelIndex];
}
}