用户:
卑微OIer查看:1 回复:3 评论:1 创建时间:2022-03-08T16:21:34
var entity = {};
const item = {
'wood': {
type:'things',
weight:1,
maxPile:32,
},
'meat': {
type: 'things',
weight: 1,
maxPile: 16,
},
'fur': {
type: 'things',
weight: 1,
maxPile : 32,
}
}
Object.assign(entity, {
capacity: 60,
bag: [],
eqinp : ['none','none','none','none'],
bagLength() {
let count = 0;
for (let i = 0; i < this.bag.length; i++)
count += item[this.spliceItem(this.bag[i])[0]].weight * this.spliceItem(this.bag[i])[1];
return count;
},
spliceItem(item) {
var it = 0, returnName = "", returnNumber = 0;
while (item[it] != '*') returnName += item[it], it += 1;
for (it += 1; it < item.length; it++)returnNumber = returnNumber * 10 + parseInt(item[it]);
return [returnName, returnNumber];
},
append(things) {
if (this.bagLength()+item[things].weight > this.capacity) return false;
for (let i = 0; i < this.bag.length; i++) {
let element = this.bag[i], op = this.spliceItem(element);
if (op[0] == things && op[1] < item[things].maxPile) {
this.bag[i] = op[0] + '*' + String(op[1] + 1);
return true;
}
}
this.bag.push(things + '*1');
this.bag.sort();
return true;
},
remove(things) {
for (let i = 0; i < this.bag.length; i++) {
let op = this.spliceItem(this.bag[i]);
if (op[0] == things) {
if (op[1] > 1) this.bag[i] = op[0] + '*' + String(op[1] - 1);
else this.bag.splice(i, 1);
return true;
}
}
return false;
},
})
调用方法:
entity.append('meat') // ['meat*1']
entity.append('meat') // ['meat*2']
entity.append('meat') // ['meat*3']
entity.append('meat') // ['meat*4']
entity.append('meat') // ['meat*1','meat*1']
//上面item里面的meat属性中的maxPile代表最多可以折叠
entity.remove('meat') // ['meat*3','meat'*1]