From ee917d08b464c6a8dd46b99d6558a80292a622e2 Mon Sep 17 00:00:00 2001 From: yuexin Date: Fri, 22 Jan 2021 11:36:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=89=A9=E5=93=81=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/logic/ItemCtrl.ts | 8 ++------ src/logic/ItemDef.ts | 26 +++++++++++++++----------- src/logic/LogicUtil.ts | 12 +++++++++--- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/src/logic/ItemCtrl.ts b/src/logic/ItemCtrl.ts index b3ec048..1b06506 100644 --- a/src/logic/ItemCtrl.ts +++ b/src/logic/ItemCtrl.ts @@ -29,7 +29,7 @@ let ItemMan = { let lst: CIC[] = []; let reslst:ItemInfo[] = []; - return reslst; + // return reslst; this._useItem(obj, itemcount, false, lst); @@ -112,7 +112,7 @@ let ItemMan = { } if(pkg._randsubitems){ for(let i = 0; i < count; i++){ - let n = calcWeight(pkg._randsubitems, pkg._randsubtotalwh); + let n = calcWeight(pkg._randsubitems); let info = pkg._randsubitems[n]; if(!info){ //todo: @@ -213,8 +213,6 @@ let ItemMan = { v._randsubitems.length = 0; } - v._randsubtotalwh = 0; - let lst = []; if(v._randsubtype == COMMON_ITEM_TYPE.CARD && v._randsubgrade){ console.log('is card random:', v._randsubtype, v._randsubgrade); @@ -227,7 +225,6 @@ let ItemMan = { lst && lst.forEach((element: CommonItem) => { v._randsubitems.push(new ItemInfo(element._id, 1, element._weight)); - v._randsubtotalwh += element._weight; }); v._randexitems && v._randexitems.forEach((item: ItemInfo) =>{ @@ -238,7 +235,6 @@ let ItemMan = { obj.weight += item.weight; }else{ v._randsubitems.push(item); - v._randsubtotalwh += item.weight; } }); } diff --git a/src/logic/ItemDef.ts b/src/logic/ItemDef.ts index 949291d..00b387f 100644 --- a/src/logic/ItemDef.ts +++ b/src/logic/ItemDef.ts @@ -72,8 +72,6 @@ export class CommonItem{ public _randsubtype: number = 0; public _randsubgrade: number = 0; - public _randsubtotalwh: number = 0; - public _solidsubitems: ItemInfo[]; public _randexitems: ItemInfo[]; @@ -137,15 +135,20 @@ export class CommonItem{ } }); - lst = aitem.additionalcandidates.split('|'); - lst.forEach((v: string) => { - let item = new ItemInfo(parseInt(v)); - if(!this._randexitems){ - this._randexitems = [item]; - }else{ - this._randexitems.push(item); - } - }); + if(aitem.additionalcandidates){ + lst = aitem.additionalcandidates.split('|'); + lst.forEach((v: string) => { + let n = parseInt(v); + if(n > 0){ + let item = new ItemInfo(n); + if(!this._randexitems){ + this._randexitems = [item]; + }else{ + this._randexitems.push(item); + } + } + }); + } }; isPackage(){ @@ -165,5 +168,6 @@ export class CIC{ constructor(aitem: CommonItem, acount: number = 1){ this.item = aitem; this.info = new ItemInfo(aitem? aitem._id: 0, acount, aitem? aitem._weight: 0); + this.info.type = aitem? aitem._type: 0; }; } \ No newline at end of file diff --git a/src/logic/LogicUtil.ts b/src/logic/LogicUtil.ts index 0f962c8..97e1633 100644 --- a/src/logic/LogicUtil.ts +++ b/src/logic/LogicUtil.ts @@ -4,15 +4,21 @@ * @param {[array]} obj_vec [对象数组,对象中要有权重变量weight] * @return {[number]} [obj_vec数组索引] */ - export function calcWeight(obj_vec: any[], all_weight: number) { + export function calcWeight(obj_vec: any[]) { + let all_weight = 0; + let wvec = []; + for (let obj of obj_vec) { + all_weight += Math.max(0, obj.weight); + wvec.push(all_weight); + } if (all_weight <= 0) { return 0; } let ret = 0; let rand = Math.random() * all_weight; - for (let i = 0; i < obj_vec.length; i++) { - if (rand < obj_vec[i].weight) { + for (let i = 0; i < wvec.length; i++) { + if (rand < wvec[i]) { ret = i; break; }