养成:升星、训练、淬火、精炼的一键消耗不每次更新&推送

This commit is contained in:
luying
2021-08-28 18:12:23 +08:00
parent ef753dec44
commit cca991367d
4 changed files with 54 additions and 30 deletions
@@ -1,5 +1,5 @@
import { Application, BackendSession, ChannelService, HandlerService, } from 'pinus';
import { handleCost, addItems, unlockFigure, createHeroes, createHero } from '../../../services/rewardService';
import { handleCost, addItems, unlockFigure, createHeroes, createHero, CheckMeterial } from '../../../services/rewardService';
import { calPlayerCeAndSave, calAllHeroCe } from '../../../services/playerCeService';
import { resResult, deepCopy } from '../../../pubUtils/util';
import { STATUS } from '../../../consts/statusCode';
@@ -228,12 +228,18 @@ export class HeroHandler {
let newStarStage = 0;
let max = isOneClick ? ABI_STAGE.END : oldStarStage + 1;
let check = new CheckMeterial(roleId);
for (let i = 0; i < max; i++) {
let costResult = await handleCost(roleId, sid, [{ id: pieceId, count: curDicHeroStar.advanceUpFragmentNum }]);
if (!costResult) break;
let isEnough = await check.decrease([{ id: pieceId, count: curDicHeroStar.advanceUpFragmentNum }]);
if(!isEnough) break; // 消耗不足
newStarStage++;
}
if (newStarStage == 0) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
let consumes = check.getConsume();
let result = await handleCost(roleId, sid, consumes);
if (!result)
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
let isUpStar = newStarStage == ABI_STAGE.END;
@@ -352,15 +358,18 @@ export class HeroHandler {
let newColorStarStage = 0;
let max = isOneClick ? ABI_STAGE.END : oldColorStarStage + 1;
let check = new CheckMeterial(roleId);
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;
let isEnough = await check.decrease([{ id: pieceId, count: fragmentNum }, ...consume]);
if(!isEnough) break; // 消耗不足
newColorStarStage++;
}
if (newColorStarStage == 0) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
let consumes = check.getConsume();
let result = await handleCost(roleId, sid, consumes);
if (!result)
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
let isWakeUp = oldColorStar == 0;
let isUpStar = isWakeUp || newColorStarStage == ABI_STAGE.END;
@@ -415,15 +424,20 @@ export class HeroHandler {
let newJobStage = 0;
let max = isOneClick ? dicJob.maxStage: hero.jobStage + 1;
let check = new CheckMeterial(roleId);
for(let i = 0; i < max; i++) {
let singleConsume = dicJob.trainingConsume[hero.jobStage];
if(!singleConsume) break; // 每天消耗不可训练
let result = await handleCost(roleId, sid, [singleConsume]);
if (!result) break; // 材料不足
let isEnough = await check.decrease([singleConsume]);
if(!isEnough) break; // 消耗不足
newJobStage ++;
}
if (newJobStage == 0) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
let consumes = check.getConsume();
let result = await handleCost(roleId, sid, consumes);
if (!result)
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
//重算战力并下发
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.TRAIN, sid, roleId, hero, {