优化:初始账号皮肤优化

This commit is contained in:
luying
2021-08-27 18:04:49 +08:00
parent fa3643c314
commit 03bf96a2c1
5 changed files with 49 additions and 28 deletions
+32 -19
View File
@@ -17,6 +17,22 @@ import { CreateHeroParam } from '../domain/roleField/hero';
import { SkinModel } from '../db/Skin';
import { TaskListReturn } from '../domain/roleField/task';
/**
* 只插入皮肤,不管那么多的
* @param roleId
* @param roleName
* @param skinId
* @returns
*/
export async function increaseSkin(roleId:string, roleName: string, skinId: number) {
let dicSkin = gameData.fashion.get(skinId);
if (!dicSkin) return false;
let skin = await SkinModel.increaseSkin(roleId, skinId, { roleId, roleName, id: skinId, skinName: dicSkin.name, hid: dicSkin.actorId });
if(!skin) return false; // 插入失败
return skin
}
/**
* 添加皮肤
* @param roleId 玩家id
@@ -26,13 +42,10 @@ import { TaskListReturn } from '../domain/roleField/task';
* @returns {{ hero, figureInfo, calAllHeroResult }} hero:添加皮肤后的武将 figureInfo: 触发头像添加信息 calAllHeroResult:全局战力加成后结果
*/
export async function addSkin(roleId: string, roleName: string, skinId: number, enable: boolean, hero?: HeroType) {
let dicSkin = gameData.fashion.get(skinId);
if (!dicSkin) return false;
let skin = await increaseSkin(roleId, roleName, skinId);
if(!skin) return false;
let skin = await SkinModel.increaseSkin(roleId, skinId, { roleId, roleName, id: skinId, skinName: dicSkin.name, hid: dicSkin.actorId });
if(!skin) return false; // 插入失败
if(dicSkin.actorId && !hero) hero = await HeroModel.findByHidAndRole(dicSkin.actorId, roleId);
if(skin.hid && !hero) hero = await HeroModel.findByHidAndRole(skin.hid, roleId);
let condition = { type: FIGURE_UNLOCK_CONDITION.GET_SKIN, paramSkinId: skinId };
let figureInfo = await unlockFigure(roleId, [condition]); // 解锁头像
let calAllHeroResult = await reCalAllHeroCe(HERO_SYSTEM_TYPE.ADD_SKIN, roleId, {}, [skinId]); // 全局加成
@@ -300,16 +313,16 @@ function unlockSingleFigure(dbFigures: Figure[], id: number, unlockDirect = fals
return figure
}
async function linkOldSkins(roleId: string, hero: HeroType) {
let allSkins = await SkinModel.findbyRoleAndHid(roleId, hero.hid);
let skins = hero.skins||[];
async function getSkinsOfThisHero(roleId: string, hid: number) {
let allSkins = await SkinModel.findbyRoleAndHid(roleId, hid);
let skins = [];
for(let skin of allSkins) {
let index = skins.findIndex(cur => cur.id == skin.id);
if(index == -1) {
skins.push({ id: skin.id, skin: skin._id, enable: false });
}
}
return await HeroModel.updateHeroInfo(roleId, hero.hid, { skins })
return skins
}
/**
@@ -338,15 +351,11 @@ export async function createHeroes(roleId: string, roleName: string, serverId: n
let info = { roleId, roleName, serverId, quality, star, job, hName };
let curHero = await HeroModel.createHero(Object.assign(info, heroInfo));
let addSkinResult = await addSkin(roleId, roleName, initialSkin, true, curHero); // 添加皮肤
curHero = await linkOldSkins(roleId, curHero);
await increaseSkin(roleId, roleName, initialSkin);
let skins = await getSkinsOfThisHero(roleId, heroInfo.hid);
let curHero = await HeroModel.createHero(Object.assign(info, heroInfo, skins));
if(addSkinResult) { // 处理添加皮肤结果
curHero = addSkinResult.hero;
figureInfos.push(addSkinResult.figureInfo);
calAllHeroResult = addSkinResult.calAllHeroResult; // 全局加成,所以同一个人的处理都是累加
}
// 计算初始战力
let calHeroResult = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.INIT, roleId, curHero, {});
calHeroResults.push(calHeroResult);
@@ -358,16 +367,20 @@ export async function createHeroes(roleId: string, roleName: string, serverId: n
let role = await RoleModel.incRoleInfo(roleId, { heroNum }, { heroNumUpdatedAt: nowSeconds() });
// 任务
console.log('****** checkTask before', Date.now())
let m1 = await checkTask(roleId, TASK_TYPE.HERO_NUM, heroNum, true, {}, funcs);
let m2 = await checkTaskWithHeroes(roleId, TASK_TYPE.HERO_QUALITY, heroes, funcs);
let m3 = await checkTaskWithHeroes(roleId, TASK_TYPE.HERO_QUALITY_STAR_UP, heroes, funcs);
let m4 = await checkTaskWithHeroes(roleId, TASK_TYPE.HERO_LV, heroes, funcs);
let taskPushMessage = m1.concat(m2, m3, m4);
console.log('****** checkTask after', Date.now())
//成长任务
console.log('****** accomplishTask before', Date.now())
let mm1 = await accomplishTask(serverId, roleId, TASK_TYPE.HERO_NUM, heroNum)
let mm2 = await accomplishTask(serverId, roleId, TASK_TYPE.HERO_QUALITY, heroNum, { heroes })
console.log('****** accomplishTask after', Date.now())
let activityTaskPushMessage = mm1.concat(mm2);
return { role, figureInfo: combineFigureInfo(figureInfos), heroes, calHeroResults, calAllHeroResult, taskPushMessage, activityTaskPushMessage }
return { role, figureInfo: combineFigureInfo(figureInfos), heroes, calHeroResults, calAllHeroResult, taskPushMessage:[], activityTaskPushMessage:[] }
}
export function combineFigureInfo(figureInfos: { heads: Figure[], frames: Figure[], spines: Figure[] }[]) {