Files
ZYZ/game-server/app/services/normalBattleService.ts
2020-10-22 16:55:56 +08:00

54 lines
1.8 KiB
TypeScript

import { HeroModel } from '../db/Hero';
import Role, { RoleModel } from '../db/Role'
import { getLvByExp, getExpByLv } from '../pubUtils/gamedata';
export async function roleLevelup(roleId: string, kingExp: number) {
let role = await RoleModel.findByRoleId(roleId);
let {lv = 1, exp = 0} = role;
let newExp = exp + kingExp;
let newLv = getLvByExp(newExp);
await RoleModel.levelup(roleId, newLv, newExp);
let actordata = [];
for(let i = lv; i <= newLv; i++) {
let {sum, cur} = getExpByLv(i);
let lastSum = sum - cur;
console.log(sum, cur, lastSum, exp, newExp);
let startExp = exp > lastSum? exp - lastSum: 0;
let getExp = newExp > sum? cur - startExp: newExp - lastSum - startExp;
actordata.push({
lv : i,
exp : startExp, // 升级前经验
getExp : getExp, // 获得的经验
mostExp : cur
});
}
return {actordata, lv, exp, kingExp};
}
export async function checkBattleHeroes(roleId: string, heroes: Array<number>) {
let flag = true;
for(let hid of heroes) {
let hero = await HeroModel.findByHidAndRole(hid, roleId);
if(!hero) flag = false;
}
return flag;
}
export async function updateWarStar(roleId: string, battleId: number, warType: number, star: number) {
let role = await RoleModel.findByRoleId(roleId);
let { warStar = new Array<{id: number, warType: number, star: number}>() } = role;
let curStar = warStar.find(cur => cur.id == battleId);
let result: Role;
if(curStar) {
if(star > curStar.star) {
result = await Role.updateWarStar(roleId, battleId, star);
}
} else {
result = await RoleModel.pushWarStar(roleId, battleId, warType, star);
}
return result
}