热更新:handler监听热更新

This commit is contained in:
qiaoxin
2021-07-16 11:29:26 +08:00
parent dc15862207
commit fc1b2c080e
65 changed files with 321 additions and 254 deletions

View File

@@ -1,4 +1,4 @@
import { Application, BackendSession, ChannelService } from 'pinus';
import { Application, BackendSession, ChannelService, HandlerService, } from 'pinus';
import { handleCost, addItems, unlockFigure, createHero } from '../../../services/rewardService';
import { calPlayerCeAndSave, calAllHeroCe } from '../../../services/playerCeService';
import { resResult, deepCopy } from '../../../pubUtils/util';
@@ -18,6 +18,7 @@ import { addSkin } from '../../../pubUtils/itemUtils';
import Skin from '../../../db/Skin';
export default function (app: Application) {
new HandlerService(app, {});
return new HeroHandler(app);
}
@@ -209,7 +210,7 @@ export class HeroHandler {
if (!dicHero) return resResult(STATUS.DIC_DATA_NOT_FOUND);
let { pieceId, jobid } = dicHero;
let dicJob = gameData.job.get(jobid);
if(!dicJob) return resResult(STATUS.DIC_DATA_NOT_FOUND);
if (!dicJob) return resResult(STATUS.DIC_DATA_NOT_FOUND);
let hero = await HeroModel.findByHidAndRole(hid, roleId);
if (!hero) return resResult(STATUS.ROLE_HERO_NOT_EXISTS);
@@ -224,15 +225,15 @@ export class HeroHandler {
// 根据dic_zyz_hero_star 计算需要花的碎片并检查碎片数量
const curDicHeroStar = getHeroStarByQuality(dicJob.job_class, quality, oldStar);
if (!curDicHeroStar) return resResult(STATUS.DIC_DATA_NOT_FOUND);
let newStarStage = 0;
let max = isOneClick? ABI_STAGE.END: oldStarStage + 1;
for(let i = 0; i < max; i++ ) {
let max = isOneClick ? ABI_STAGE.END : oldStarStage + 1;
for (let i = 0; i < max; i++) {
let costResult = await handleCost(roleId, sid, [{ id: pieceId, count: curDicHeroStar.advanceUpFragmentNum }]);
if (!costResult) break;
newStarStage++;
}
if(newStarStage == 0) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
if (newStarStage == 0) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
let isUpStar = newStarStage == ABI_STAGE.END;
@@ -350,16 +351,16 @@ export class HeroHandler {
if (!curDicHeroStar) return resResult(STATUS.DIC_DATA_NOT_FOUND);
let newColorStarStage = 0;
let max = isOneClick? ABI_STAGE.END: oldColorStarStage + 1;
for(let i = 0; i < max; i++) {
let max = isOneClick ? ABI_STAGE.END : oldColorStarStage + 1;
for (let i = 0; i < max; i++) {
let { fragmentNum, consume } = curDicHeroStar;
// console.log(JSON.stringify([{id: pieceId, count: fragmentNum}, ...consumeArr]))
let costResult = await handleCost(roleId, sid, [{ id: pieceId, count: fragmentNum }, ...consume]);
if (!costResult) break;
newColorStarStage++;
}
if(newColorStarStage == 0) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
if (newColorStarStage == 0) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
let isWakeUp = oldColorStar == 0;
let isUpStar = isWakeUp || newColorStarStage == ABI_STAGE.END;
@@ -540,7 +541,7 @@ export class HeroHandler {
let { favourLv: oldLv, favour: oldExp, lv } = hero;
let maxLv = lv > gameData.maxFriendShipLv.max? gameData.maxFriendShipLv.max: lv; // 好感度最大等级
let maxLv = lv > gameData.maxFriendShipLv.max ? gameData.maxFriendShipLv.max : lv; // 好感度最大等级
if (maxLv <= oldLv)
return resResult(STATUS.HERO_FAVOUR_LEVEL_REACH_MAXT);
@@ -614,14 +615,14 @@ export class HeroHandler {
if (!!skin.enable) {
return resResult(STATUS.HERO_SKIN_IS_EQUIPED);
}
newHeroSkins.push({...skin, enable: true});
newHeroSkins.push({ ...skin, enable: true });
result = true;
} else {
if (!!skin.enable) {
lastSkinId = skin.id;
}
newHeroSkins.push({...skin, enable: false});
newHeroSkins.push({ ...skin, enable: false });
}
}
if (!result) {