Advertisement
Ulabael

update_goods

Sep 4th, 2023
1,309
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. func update_goods(good, quantity):
  2.     """
  3.         Скрипт для обновления товара внутри текущего объекта.
  4.         Принимает товар (структуру, откуда берём сам товар) и его количество (минус - вычитаем, плюс - прибавляем).
  5.         Возвращает новое количество указанного товара. Можно использовать для обновления в другой структуре.
  6.         Если товара меньше нуля - он убирается из структуры.
  7.         Пример. Указали, что нужно добавить 100 муки. Значит возвращенное число будет -100,
  8.             чтобы вычесть из другой структуры. При этом в текущей структуре появится 100 единиц указанного товара.
  9.         Если -100 муки - значит возвращаем 100, чтобы добавить в другую структуру.
  10.     """
  11.     var goods_inside    = data.info.goods_inside.value
  12.     var id_to_find      = good.id.value
  13.     var found_good
  14.    
  15.     var _id = 0
  16.     for g in goods_inside:
  17.         if g.id.value == id_to_find:
  18.             found_good = g
  19.             break
  20.         _id += 1
  21.    
  22.  
  23.     # Если внутри товар не нашли
  24.     if found_good == null:
  25.         # Если вычитали
  26.         if quantity < 0:
  27.             return -quantity # Возвращаем товар обратно, чтобы добавить его в изначальную структуру.
  28.         else:
  29.             # Добавляем товар
  30.             var val = good.duplicate(true)
  31.             val.quantity.value = quantity
  32.             goods_inside.append(val)
  33.             return -quantity # Возвращаем отрицательное число товара, чтобы убрать из изначальной структуры
  34.     else:
  35.         var found_quantity = found_good.quantity.value
  36.         print_debug([found_quantity, quantity])
  37.         var diff
  38.         # Если вычитаем
  39.         if quantity < 0:
  40.             # Смотрим, сколько вычесть мы действительно можем
  41.             if found_quantity < abs(quantity):
  42.                 diff = quantity + found_quantity
  43.                 quantity -= diff
  44.  
  45.         found_good.quantity.value += quantity
  46.         return -quantity
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement