优化:初始账号皮肤优化
This commit is contained in:
@@ -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[] }[]) {
|
||||
|
||||
Reference in New Issue
Block a user