添加保存R剧本接口
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
|
||||
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;
|
||||
exp += kingExp;
|
||||
let newLv = getLvByExp(exp);
|
||||
await RoleModel.levelup(roleId, newLv, exp);
|
||||
let actordata = [];
|
||||
for(let i = lv; i <= newLv; i++) {
|
||||
let {sum, cur} = getExpByLv(i);
|
||||
let getExp = sum > exp? sum - exp: 0;
|
||||
actordata.push({
|
||||
lv : i,
|
||||
exp : cur - getExp,
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user