SHARE
TWEET

Untitled

a guest Jan 23rd, 2020 63 in 3 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. // TakeItem выдает item -> entity
  3. // количество итемов в стаке не может привышать размер допустимого стака
  4. // если количество итемов в стаке будет больше размера сатка то лишние итемы не добавятся
  5. func (e *Entity) TakeItem(item *models.Item, entity *models.Entity) {
  6.  
  7.     if item.Quantity > item.StackSize {
  8.         e.logger.Error("item quantity more then stack size",
  9.             zap.Int("item proto id", item.ProtoID),
  10.             zap.String("item name", item.Name),
  11.             zap.Int("entity id", entity.ID),
  12.             zap.String("entity name", entity.Name),
  13.         )
  14.         item.Quantity = item.StackSize
  15.     }
  16.  
  17.     if item.StackSize <= 1 {
  18.         e.takeItem(item, entity)
  19.         return
  20.     }
  21.  
  22.     for _, i := range entity.Backpack {
  23.         if i.ProtoID != item.ProtoID || i.Quantity >= i.StackSize {
  24.             continue
  25.         }
  26.  
  27.         count := i.Quantity + item.Quantity
  28.         if count <= i.StackSize {
  29.             i.Quantity = count
  30.             e.adapter.UpdateItem(i)
  31.             return
  32.         }
  33.  
  34.         i.Quantity = i.StackSize
  35.         e.adapter.UpdateItem(i)
  36.  
  37.         item.Quantity = count - i.StackSize
  38.     }
  39.  
  40.     e.takeItem(item, entity)
  41.     return
  42.  
  43. }
  44.  
  45. func (e *Entity) takeItem(item *models.Item, entity *models.Entity) {
  46.     entity.Backpack = append(entity.Backpack, item)
  47.     item.Place = models.Backpack
  48.     item.EntityID = entity.ID
  49.     e.adapter.SaveItem(item)
  50. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top