Skip to content

Instantly share code, notes, and snippets.

@jasonmcleod
Created March 13, 2014 16:33
Show Gist options
  • Select an option

  • Save jasonmcleod/9531874 to your computer and use it in GitHub Desktop.

Select an option

Save jasonmcleod/9531874 to your computer and use it in GitHub Desktop.
PlayerInventory.prototype.AddItem = function(item, qty) {
var self = this;
console.log(item)
var action = function(item, qty) {
var exists = _.findLessThan(self.Items,{Name:item},'UsesLeft',itemDB[item].stack);
if(exists && exists.UsesLeft < itemDB[item].stack && itemDB[item].stack!=1) {
exists.UsesLeft+=1;
if(qty-1>0) {
qty--;
action(item, qty);
}
} else {
if(qty>0) {
var added = false;
for(var i=0;i<40;i++) {
if(typeof self.Items[i].Name == 'undefined' && !added) {
var applied = Math.min(qty, itemDB[item].stack)
self.Items[i]._Item = new InventoryItem({Name:item, UsesLeft:applied})
self.Items[i].Name = self.Items[i]._Item.Name;
self.Items[i].UsesLeft = self.Items[i]._Item.UsesLeft;
added = true;
}
}
qty-=applied;
if(qty > 0) action(item, qty);
}
}
}
if(qty > itemDB[item].stack) {
var stacks = Math.ceil(qty / itemDB[item].stack);
var remain = qty;
for(var s=0;s<stacks;s++) {
if(remain>0) {
action(item, remain < itemDB[item].stack ? remain : itemDB[item].stack)
}
remain-=itemDB[item].stack;
}
} else {
action(item, qty);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment