创建初始装备

This commit is contained in:
luying
2020-12-17 18:46:20 +08:00
parent e0c1e8045b
commit b5b7d071c1
15 changed files with 205 additions and 80 deletions
@@ -14,10 +14,16 @@ export class EquipHandler {
// TODO 合成装备
public async composeEquip(msg: { gid: number, originalEquip: number[]}, session: BackendSession) {
let roleId: string = session.get('roleId');
let roleName: string = session.get('roleName');
let sid: string = session.get('sid');
// 消耗材料
// 获得装备
let {gid, } = msg;
// 1. 获得部位
let items = [{id: gid, count: 1}];
let goods = await addItems(roleId, roleName, sid, items);
return resResult(STATUS.SUCCESS, { goods });
}
// TODO 装备栏强化
@@ -16,17 +16,17 @@ export class RoleHandler {
}
async initEquips(roleId: string, roleName: string) {
const seqId = await CounterModel.getNewCounter(COUNTER.EID);
const equipInfo = {
roleId,
roleName,
id: 1,
name: '倚天剑',
seqId,
type: 1
}
const equip = await EquipModel.createEquip(equipInfo);
await HeroModel.addEquip(roleId, 12, equip._id);
// const seqId = await CounterModel.getNewCounter(COUNTER.EID);
// const equipInfo = {
// roleId,
// roleName,
// id: 1,
// name: '倚天剑',
// seqId,
// type: 1
// }
// const equip = await EquipModel.createEquip(equipInfo);
// await HeroModel.addEquip(roleId, 12, equip._id);
}
async initHeros(roleId: string, roleName: string) {
+22 -21
View File
@@ -9,6 +9,8 @@ import { ItemModel } from '../db/Item';
import { STATUS } from '../consts/statusCode';
import { pinus } from 'pinus';
import { addEquips, addBags, addSkins } from '../pubUtils/itemUtils';
import { EquipInter } from '../pubUtils/interface';
import { gameData } from '../pubUtils/data';
const _ = require('underscore');
export async function handleFixedReward(roleId: string, roleName: string, rewardStr: string, multi: number) {
@@ -62,21 +64,21 @@ async function rewardWeapons (roleId: string, roleName: string, dicGood: any, w
let weaponsData = [];
let cnt = weapon.cnt;
while (cnt > 0) {
const seqId = await CounterModel.getNewCounter(COUNTER.EID);
const equipInfo = {
roleId,
roleName,
id: weapon.id,
name: dicGood.name,
seqId,
quality: dicGood.lv,
type: dicGood.goodType
}
const equip = await EquipModel.createEquip(equipInfo);
cnt -= 1;
weaponsData.push(equip);
}
// while (cnt > 0) {
// const seqId = await CounterModel.getNewCounter(COUNTER.EID);
// const equipInfo = {
// roleId,
// roleName,
// id: weapon.id,
// name: dicGood.name,
// seqId,
// quality: dicGood.lv,
// type: dicGood.goodType
// }
// const equip = await EquipModel.createEquip(equipInfo);
// cnt -= 1;
// weaponsData.push(equip);
// }
return weaponsData;
}
@@ -125,7 +127,6 @@ async function rewardCurrency (roleId: string, dicGood: any, data: {id:number,cn
return goods;
}
interface Item {id?: number, count?: number, seqId?: number, type?: number};
interface Equip {id: number, name: string, quality: number, type: number};
interface Bag {id: number, itemName: string, count: number, type: number, hid:number};
export async function handleCost(roleId: string, sid: string, goods: Array<Item>) {
let currencysMap: any = {};
@@ -208,7 +209,7 @@ function sortConsumes(goods: Array<Item>, bags: Array<Item>, currencysMap: any,
export async function addItems(roleId: string, roleName: string, sid: string, goods: Array<Item>) {
let showItems: Array<Item> = [];
let currencysMap: any = {};
let equips: Array<Equip> = [];
let equips: Array<EquipInter> = [];
let bags: Array<Bag> = [];
let skins: Array<number> = [];
let uids = [{uid: roleId, sid}];
@@ -216,7 +217,7 @@ export async function addItems(roleId: string, roleName: string, sid: string, go
let equipInfos = [];
for (let equip of equips) {
let equipInfo = await addEquips(roleId, roleName, equip);
showItems.push({id: equip.id, count: 1});
showItems.push({seqId: equipInfo.seqId, id: equip.id, count: 1});
equipInfos.push(equipInfo);
}
//装备推送
@@ -262,12 +263,12 @@ export async function addItems(roleId: string, roleName: string, sid: string, go
return showItems;
}
function sortItems (goods: Array<Item>, bags: Array<Bag>, skins: Array<number>, currencysMap: any, equips: Array<Equip>, showItems: Array<Item>) {
function sortItems (goods: Array<Item>, bags: Array<Bag>, skins: Array<number>, currencysMap: any, equips: Array<EquipInter>, showItems: Array<Item>) {
for (let good of goods) {
let goodInfo = getGoodById(good.id);
let goodInfo = gameData.goods.get(good.id);
if (goodInfo.goodType == GOOD_TYPE.EQUIP) { // 装备
for (let i = 0; i < good.count; i++) {
equips.push({id: good.id, name: goodInfo.name, quality: goodInfo.lv, type: goodInfo.goodType});
equips.push({id: good.id, ...goodInfo});
}
} else {
let {type, isCurrency} = ITID.get(goodInfo.itid);