124 lines
4.8 KiB
Python
Executable File
124 lines
4.8 KiB
Python
Executable File
##### NOTE, ALWAYS CALL ' CHANGE SETTINGS ' AFTER EVERY METHOD
|
|
##### THIS HELPS FIX THE BUGGY GUI SYSTEM
|
|
|
|
##### NOTE: YOU NEED TO IMPORT * FROM ItemIDs INTERFACE!
|
|
|
|
####################################################
|
|
# _____ _ #
|
|
# |_ _| | | #
|
|
# | | _ ____ _____ _ __ | |_ ___ _ __ _ _ #
|
|
# | | | '_ \ \ / / _ \ '_ \| __/ _ \| '__| | | | #
|
|
# _| |_| | | \ V / __/ | | | || (_) | | | |_| | #
|
|
# |_____|_| |_|\_/ \___|_| |_|\__\___/|_| \__, | #
|
|
# __/ | #
|
|
# |___/ #
|
|
####################################################
|
|
|
|
|
|
############### ADDING AND REMOVING ITEMS #######################
|
|
def drop_item(itemId, quantity, durability, slotNumber):
|
|
#Make sure items can be dropped:
|
|
for i in Player.inventorySlots:
|
|
if i.itemId == itemId and i.quantity <= 0: return
|
|
|
|
#Create new dropped item to be shown on ground
|
|
DroppedItem.dropItemsWithOffsetAsStack(itemId, quantity, 10, Player.center.x, Player.center.y, durability)
|
|
|
|
# Remove the item from the inventory
|
|
remove_item_with_slot_number(itemId, quantity, slotNumber)
|
|
|
|
Inventory.changeSettings()
|
|
|
|
def remove_item(itemId, quantity):
|
|
for slot in Player.inventorySlots:
|
|
if slot.itemId == itemId:
|
|
temp = slot.quantity
|
|
slot.quantity -= quantity
|
|
quantity -= temp
|
|
slot.mouseClicked = 0
|
|
|
|
if slot.quantity <= 0: slot.itemId = slot.quantity = slot.durability = 0
|
|
|
|
# if the amount of things to remove has been satisfied
|
|
if quantity <= 0: break
|
|
Inventory.changeSettings()
|
|
|
|
def remove_item_with_slot_number(itemId, quantity, slotNumber):
|
|
for i in Player.inventorySlots:
|
|
if i.slotNumber == slotNumber:
|
|
if i.itemId == itemId:
|
|
i.quantity -= quantity
|
|
i.mouseClicked = False
|
|
if i.quantity <= 0: i.itemId = i.quantity = i.durability = 0
|
|
break
|
|
|
|
Inventory.changeSettings()
|
|
|
|
def remove_equipment(itemId, quantity, slotNumber):
|
|
for i in Player.equipmentSlots:
|
|
if i.slotNumber == slotNumber:
|
|
if i.itemId == itemId:
|
|
i.quantity -= quantity
|
|
|
|
#### FOR LIGHTS, TORCHES etc
|
|
if i.itemId == TORCH: Player.playerLights.remove(Player.torchLight)
|
|
|
|
if i.quantity <= 0: i.itemId = i.quantity = 0
|
|
|
|
i.durability = 0
|
|
i.mouseClicked = False
|
|
break
|
|
|
|
Inventory.changeSettings()
|
|
|
|
def add_item(itemId, quantity, durability):
|
|
# CANT ADD ITEM IF THE INVEN IS FULL
|
|
if inventory_is_full(itemId, quantity): return
|
|
|
|
# IF THE ITEM IS STACKABLE, RUN THIS LOOP
|
|
if InvenHelper.isStackable(itemId):
|
|
for i in Player.inventorySlots:
|
|
if i.itemId == itemId and (i.quantity + quantity) <= InvenHelper.getStackableAmount(itemId):
|
|
i.mouseClicked = False
|
|
i.quantity += quantity
|
|
Inventory.changeSettings()
|
|
return
|
|
|
|
# IF THE ITEM IS NOT STACKABLE, OR FAILED THE ABOVE LOOP, RUN THIS LOOP
|
|
for i in Player.inventorySlots:
|
|
if(i.itemId == 0):
|
|
i.mouseClicked = False
|
|
i.itemId = itemId
|
|
i.quantity = quantity
|
|
i.durability = durability
|
|
i.equippable = InvenHelper.isEquippable(itemId)
|
|
Inventory.changeSettings()
|
|
return
|
|
|
|
############### END ADDING AND REMOVING ITEMS #################################################################
|
|
|
|
################ MISC ##################################################################################
|
|
|
|
def inventory_is_full(itemId, quantity):
|
|
if InvenHelper.isStackable(itemId): # IF ITEM IS STACKABLE, RUN THIS LOOP
|
|
for slot in Player.inventorySlots:
|
|
# CHECK IF THE (QUANTITY + THE ADDED QUANTITY) IS <= THE MAX QUANTITY
|
|
WOULD_BE_QUANTITY = slot.quantity + quantity
|
|
if slot.itemId == itemId and WOULD_BE_QUANTITY <= InvenHelper.getStackableAmount(itemId): return False
|
|
|
|
# IF IT IS NOT STACKABLE, OR THE ITEM FAILED THE FIRST LOOP, RUN THIS LOOP
|
|
for slot in Player.inventorySlots:
|
|
if slot.itemId == NULL_ITEM: return False
|
|
|
|
# IF NONE OF THE ABOVE CONDITIONS COULD BE MET, THE INVENTORY MUST BE FULL
|
|
return True
|
|
|
|
def inventory_contains(itemId, quantity):
|
|
count = 0
|
|
for slot in Player.inventorySlots:
|
|
if slot.itemId == itemId: count += slot.quantity
|
|
return count >= quantity
|
|
|
|
############## END MISC #######################################################################################
|
|
|
|
|