解析修改:heroHandler
This commit is contained in:
@@ -1,19 +1,16 @@
|
|||||||
import {Application, BackendSession, createTcpMailBox, ChannelService} from 'pinus';
|
import {Application, BackendSession, createTcpMailBox, ChannelService} from 'pinus';
|
||||||
import { handleCost } from '../../../services/rewardService';
|
import { handleCost } from '../../../services/rewardService';
|
||||||
import { calPlayerCeAndSave, getAllAttrStage } from '../../../services/playerCeService';
|
import { calPlayerCeAndSave, getAllAttrStage } from '../../../services/playerCeService';
|
||||||
import { resResult, getItems, decodeStr } from '../../../pubUtils/util';
|
import { resResult } from '../../../pubUtils/util';
|
||||||
import { STATUS } from '../../../consts/statusCode';
|
import { STATUS } from '../../../consts/statusCode';
|
||||||
import {HeroModel} from '../../../db/Hero';
|
import {HeroModel} from '../../../db/Hero';
|
||||||
import {CURRENCY_BY_TYPE, CURRENCY_TYPE, CONSUME_TYPE, HERO_GROW_MAX, HERO_SYSTEM_TYPE, ITID} from '../../../consts/consts';
|
import {CURRENCY_BY_TYPE, CURRENCY_TYPE, CONSUME_TYPE, HERO_GROW_MAX, HERO_SYSTEM_TYPE, ITID} from '../../../consts/consts';
|
||||||
import {getJobInfoById, getMaxGradeByjobClass, getHidAndLevelByShipId, getGoodById, getJobByGradeAndClass, getFriendShipById, getFriendShipLevels, getFashionsById} from '../../../pubUtils/gamedata';
|
|
||||||
import { ABI_STAGE } from '../../../consts/abilityConst';
|
import { ABI_STAGE } from '../../../consts/abilityConst';
|
||||||
import { RoleModel } from '../../../db/Role';
|
import { RoleModel } from '../../../db/Role';
|
||||||
import { ItemModel } from '../../../db/Item';
|
import { ItemModel } from '../../../db/Item';
|
||||||
import { gameData, getHeroExpByLv, getHeroStarByQuality, getHeroWakeByQuality, getHeroLvByExp } from '../../../pubUtils/data';
|
import { gameData, getHeroExpByLv, getHeroStarByQuality, getHeroWakeByQuality, getHeroLvByExp, getMaxGradeByjobClass, getJobByGradeAndClass, getFriendShipById } from '../../../pubUtils/data';
|
||||||
import { RewardInter } from '../../../pubUtils/interface';
|
import { RewardInter } from '../../../pubUtils/interface';
|
||||||
|
|
||||||
const _ = require('underscore');
|
|
||||||
|
|
||||||
export default function(app: Application) {
|
export default function(app: Application) {
|
||||||
return new HeroHandler(app);
|
return new HeroHandler(app);
|
||||||
}
|
}
|
||||||
@@ -276,7 +273,7 @@ export class HeroHandler {
|
|||||||
let hero = await HeroModel.findByHidAndRole(hid, roleId, false);
|
let hero = await HeroModel.findByHidAndRole(hid, roleId, false);
|
||||||
if (!hero)
|
if (!hero)
|
||||||
return resResult(STATUS.HERO_NOT_FIND);
|
return resResult(STATUS.HERO_NOT_FIND);
|
||||||
let heroJob = getJobInfoById(hero.job);
|
let heroJob = gameData.job.get(hero.job);
|
||||||
let nextHeroJob = getJobByGradeAndClass(heroJob.job_class, heroJob.grade + 1);
|
let nextHeroJob = getJobByGradeAndClass(heroJob.job_class, heroJob.grade + 1);
|
||||||
if (nextHeroJob.unlockLevel > hero.lv)
|
if (nextHeroJob.unlockLevel > hero.lv)
|
||||||
return resResult(STATUS.NOT_REACH_UNLOCK_LEVEL);
|
return resResult(STATUS.NOT_REACH_UNLOCK_LEVEL);
|
||||||
@@ -284,8 +281,7 @@ export class HeroHandler {
|
|||||||
return resResult(STATUS.HERO_JOB_STAGE_REACH_MAX_STAGE);
|
return resResult(STATUS.HERO_JOB_STAGE_REACH_MAX_STAGE);
|
||||||
if (hero.job >= getMaxGradeByjobClass(heroJob.job_class))
|
if (hero.job >= getMaxGradeByjobClass(heroJob.job_class))
|
||||||
return resResult(STATUS.HERO_JOB_REACH_MAX_STAGE);
|
return resResult(STATUS.HERO_JOB_REACH_MAX_STAGE);
|
||||||
let cousumeGoods = getItems(heroJob.trainingConsume);
|
let result = await handleCost(roleId, sid, heroJob.trainingConsume);
|
||||||
let result = await handleCost(roleId, sid, cousumeGoods);
|
|
||||||
if(!result) {
|
if(!result) {
|
||||||
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
|
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
|
||||||
}
|
}
|
||||||
@@ -304,14 +300,13 @@ export class HeroHandler {
|
|||||||
if (!hero)
|
if (!hero)
|
||||||
return resResult(STATUS.HERO_NOT_FIND);
|
return resResult(STATUS.HERO_NOT_FIND);
|
||||||
let curJob = hero.job;
|
let curJob = hero.job;
|
||||||
let heroJob = getJobInfoById(curJob);
|
let heroJob = gameData.job.get(curJob);
|
||||||
let nextHeroJob = getJobByGradeAndClass(heroJob.job_class, heroJob.grade + 1);
|
let nextHeroJob = getJobByGradeAndClass(heroJob.job_class, heroJob.grade + 1);
|
||||||
if (nextHeroJob.unlockLevel > hero.lv)
|
if (nextHeroJob.unlockLevel > hero.lv)
|
||||||
return resResult(STATUS.NOT_REACH_UNLOCK_LEVEL);
|
return resResult(STATUS.NOT_REACH_UNLOCK_LEVEL);
|
||||||
if (curJob >= getMaxGradeByjobClass(heroJob.job_class))
|
if (curJob >= getMaxGradeByjobClass(heroJob.job_class))
|
||||||
return resResult(STATUS.HERO_JOB_REACH_MAX_STAGE);
|
return resResult(STATUS.HERO_JOB_REACH_MAX_STAGE);
|
||||||
let cousumeGoods = getItems(heroJob.upGradeConsume);
|
let result = await handleCost(roleId, sid, heroJob.upGradeConsume);
|
||||||
let result = await handleCost(roleId, sid, cousumeGoods);
|
|
||||||
if(!result) {
|
if(!result) {
|
||||||
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
|
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
|
||||||
}
|
}
|
||||||
@@ -327,7 +322,7 @@ export class HeroHandler {
|
|||||||
let roleId: string = session.get('roleId');
|
let roleId: string = session.get('roleId');
|
||||||
let sid: string = session.get('sid');
|
let sid: string = session.get('sid');
|
||||||
let { shipId } = msg;
|
let { shipId } = msg;
|
||||||
let shipHidAndLevel = getHidAndLevelByShipId(shipId);
|
let shipHidAndLevel = gameData.friendShipHidAandIds.get(shipId);
|
||||||
if (!shipHidAndLevel)
|
if (!shipHidAndLevel)
|
||||||
return resResult(STATUS.HERO_CONECTION_IS_NOT_EXIT);
|
return resResult(STATUS.HERO_CONECTION_IS_NOT_EXIT);
|
||||||
let hero = await HeroModel.findByHidAndRole(shipHidAndLevel.actorId, roleId, false);
|
let hero = await HeroModel.findByHidAndRole(shipHidAndLevel.actorId, roleId, false);
|
||||||
@@ -380,7 +375,7 @@ export class HeroHandler {
|
|||||||
let lastLv = hero.favourLv;
|
let lastLv = hero.favourLv;
|
||||||
if (!hero)
|
if (!hero)
|
||||||
return resResult(STATUS.HERO_NOT_FIND);
|
return resResult(STATUS.HERO_NOT_FIND);
|
||||||
let friendShipLevels = getFriendShipLevels();
|
let friendShipLevels = gameData.friendShipLevel;
|
||||||
if (friendShipLevels[friendShipLevels.length - 1].level <= hero.favourLv)
|
if (friendShipLevels[friendShipLevels.length - 1].level <= hero.favourLv)
|
||||||
return resResult(STATUS.HERO_FAVOUR_LEVEL_REACH_MAXT);
|
return resResult(STATUS.HERO_FAVOUR_LEVEL_REACH_MAXT);
|
||||||
//计算消耗物品转化的经验
|
//计算消耗物品转化的经验
|
||||||
@@ -421,7 +416,7 @@ export class HeroHandler {
|
|||||||
let roleId: string = session.get('roleId');
|
let roleId: string = session.get('roleId');
|
||||||
let sid: string = session.get('sid');
|
let sid: string = session.get('sid');
|
||||||
let { id } = msg;
|
let { id } = msg;
|
||||||
let skinInfo = getFashionsById(id);
|
let skinInfo = gameData.fashion.get(id);
|
||||||
if (!skinInfo)
|
if (!skinInfo)
|
||||||
return resResult(STATUS.HERO_SKIN_NOT_FIND);
|
return resResult(STATUS.HERO_SKIN_NOT_FIND);
|
||||||
let hero = await HeroModel.findByHidAndRole(skinInfo.actorId, roleId, false);
|
let hero = await HeroModel.findByHidAndRole(skinInfo.actorId, roleId, false);
|
||||||
|
|||||||
@@ -62,6 +62,12 @@ export const gameData = {
|
|||||||
friendShipLevel: dicFriendShipLevel
|
friendShipLevel: dicFriendShipLevel
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 在此提供一些原先在gamedata中提供的方法,以便更方便获取gameData数据
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据主公当前经验获得当前等级
|
||||||
|
* @param exp 累积经验
|
||||||
|
*/
|
||||||
export function getLvByExp(exp: number) {
|
export function getLvByExp(exp: number) {
|
||||||
let curLv = 0;
|
let curLv = 0;
|
||||||
let entries = gameData.kingexp.entries();
|
let entries = gameData.kingexp.entries();
|
||||||
@@ -73,10 +79,18 @@ export function getLvByExp(exp: number) {
|
|||||||
return curLv;
|
return curLv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据主公当前等级,获得累积经验,1=> 1级满经验
|
||||||
|
* @param lv 等级
|
||||||
|
*/
|
||||||
export function getExpByLv(lv: number) {
|
export function getExpByLv(lv: number) {
|
||||||
return gameData.kingexp.get(lv);
|
return gameData.kingexp.get(lv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据武将当前经验获得当前等级
|
||||||
|
* @param exp 累积经验
|
||||||
|
*/
|
||||||
export function getHeroLvByExp(exp: number) {
|
export function getHeroLvByExp(exp: number) {
|
||||||
let curLv = 0;
|
let curLv = 0;
|
||||||
let entries = gameData.charexp.entries();
|
let entries = gameData.charexp.entries();
|
||||||
@@ -88,6 +102,10 @@ export function getHeroLvByExp(exp: number) {
|
|||||||
return curLv;
|
return curLv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据武将当前等级,获得累积经验,1=> 1级满经验
|
||||||
|
* @param lv
|
||||||
|
*/
|
||||||
export function getHeroExpByLv(lv: number) {
|
export function getHeroExpByLv(lv: number) {
|
||||||
return gameData.charexp.get(lv);
|
return gameData.charexp.get(lv);
|
||||||
}
|
}
|
||||||
@@ -138,3 +156,16 @@ export function getHeroStarByQuality(quality: number, star: number) {
|
|||||||
export function getHeroWakeByQuality(quality: number, star: number) {
|
export function getHeroWakeByQuality(quality: number, star: number) {
|
||||||
return gameData.heroWake.get(`${quality}_${star}`);
|
return gameData.heroWake.get(`${quality}_${star}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getMaxGradeByjobClass(jobClass: number) {
|
||||||
|
const job = gameData.jobClassMaxGrades.get(jobClass);
|
||||||
|
return job?.jobid;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getJobByGradeAndClass(jobClass: number, grade: number) {
|
||||||
|
return gameData.jobClassAndgrades.get(jobClass +'_' + grade);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getFriendShipById(shipId: number, level: number) {
|
||||||
|
return gameData.friendShips.get(shipId +'_' + level);
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
// 武将技能表
|
// 武将技能表
|
||||||
import {parseReward, decodeArrayListStr, readJsonFile} from '../util'
|
import {parseReward, readJsonFile} from '../util'
|
||||||
import { FILENAME } from '../../consts/consts'
|
import { FILENAME } from '../../consts/consts'
|
||||||
import { RewardInter } from '../interface';
|
import { RewardInter } from '../interface';
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
// 兵种表
|
// 兵种表
|
||||||
import {readJsonFile, parseNumberList} from '../util'
|
import {readJsonFile, parseNumberList, parseReward} from '../util'
|
||||||
import { FILENAME } from '../../consts/consts'
|
import { FILENAME } from '../../consts/consts'
|
||||||
|
import { RewardInter } from '../interface';
|
||||||
|
|
||||||
export interface DicJob {
|
export interface DicJob {
|
||||||
// 兵种id
|
// 兵种id
|
||||||
@@ -17,6 +18,10 @@ export interface DicJob {
|
|||||||
readonly type: number;
|
readonly type: number;
|
||||||
// 特性
|
// 特性
|
||||||
readonly seid: Array<number>;
|
readonly seid: Array<number>;
|
||||||
|
// 训练消耗
|
||||||
|
readonly trainingConsume: Array<RewardInter>;
|
||||||
|
// 升阶消耗
|
||||||
|
readonly upGradeConsume: Array<RewardInter>;
|
||||||
// 生命训练提升
|
// 生命训练提升
|
||||||
readonly hp: number;
|
readonly hp: number;
|
||||||
// 攻击力训练提升
|
// 攻击力训练提升
|
||||||
@@ -41,6 +46,8 @@ export const jobClassAndgrades = new Map<string, {jobid:number, unlockLevel:numb
|
|||||||
|
|
||||||
arr.forEach(o => {
|
arr.forEach(o => {
|
||||||
o.seid = parseNumberList(o.seid);
|
o.seid = parseNumberList(o.seid);
|
||||||
|
o.trainingConsume = parseReward(o.trainingConsume);
|
||||||
|
o.upGradeConsume = parseReward(o.upGradeConsume);
|
||||||
dicJob.set(o.jobid, o);
|
dicJob.set(o.jobid, o);
|
||||||
let jobClass = jobClassMaxGrades.get(o.job_class);
|
let jobClass = jobClassMaxGrades.get(o.job_class);
|
||||||
if (!!jobClass && jobClass.grade < o.grade) {
|
if (!!jobClass && jobClass.grade < o.grade) {
|
||||||
|
|||||||
Reference in New Issue
Block a user