93 lines
2.6 KiB
GDScript
93 lines
2.6 KiB
GDScript
extends Window
|
|
|
|
@onready var inventoryItemDisplayer = %Inventory
|
|
|
|
var itemTransitionScene = preload("res://UI/Sugaring/ItemFadeTransition.tscn")
|
|
|
|
var playerInventory:Inventory
|
|
|
|
var sugarItem = preload("res://Items/Foods/Snack/Sugar.gd")
|
|
var sugarCount = 0
|
|
|
|
var rng = RandomNumberGenerator.new()
|
|
|
|
func _ready():
|
|
inventoryItemDisplayer.buttonPressed.connect(sugar_item)
|
|
inventoryItemDisplayer.set_title("Normal Items")
|
|
|
|
func opened():
|
|
get_tree().paused = true
|
|
playerInventory = InventoryManager.get_inventory()
|
|
inventoryItemDisplayer.inventory = filter_inventory(playerInventory)
|
|
inventoryItemDisplayer.update_display()
|
|
|
|
update_sugar_count()
|
|
|
|
func update_sugar_count():
|
|
var sugarHeld = InventoryManager.get_item_count_by_name("Sugar", "normal", true)
|
|
|
|
if sugarHeld > 0:
|
|
%SugarCount.text = "Sugar Left: " + str(sugarHeld)
|
|
%SugarParticles.emitting = true
|
|
else:
|
|
%SugarCount.text = "OUT OF SUGAR"
|
|
%SugarParticles.emitting = false
|
|
|
|
sugarCount = sugarHeld
|
|
|
|
func spend_sugar():
|
|
InventoryManager.spend_item(sugarItem.new())
|
|
|
|
func sugar_item(item):
|
|
if sugarCount <= 0:
|
|
return
|
|
|
|
spend_sugar()
|
|
update_sugar_count()
|
|
|
|
InventoryManager.remove_item_from_inventory(item)
|
|
|
|
var sugarItem = item.duplicate()
|
|
|
|
var addSugar = true
|
|
if item.get_name(false) == "Tomato Juice":
|
|
sugarItem = load("res://Items/Foods/Condiments/Ketchup.gd").new()
|
|
addSugar = false
|
|
if Item.types.Juice in sugarItem.itemTypes and Item.modifications.Concentrated in sugarItem.itemModifications:
|
|
sugarItem = CandyGenerator.generate_candy(sugarItem)
|
|
addSugar = false
|
|
|
|
if addSugar:
|
|
sugarItem.set_modification(Item.modifications.Sugared)
|
|
|
|
InventoryManager.add_item_to_inventory(sugarItem)
|
|
|
|
spawn_item_transition(item, sugarItem)
|
|
|
|
inventoryItemDisplayer.inventory = filter_inventory(playerInventory)
|
|
inventoryItemDisplayer.update_display()
|
|
|
|
func spawn_item_transition(startItem, sugaredItem):
|
|
var itemTransition = itemTransitionScene.instantiate()
|
|
itemTransition.start_transition(startItem.get_sprite(), sugaredItem.get_sprite())
|
|
|
|
add_child(itemTransition)
|
|
itemTransition.scale = Vector2(2, 2)
|
|
itemTransition.position = Vector2(450 + rng.randf_range(-70, 70), 365 + rng.randf_range(-20, 20))
|
|
|
|
func filter_inventory(inventory):
|
|
var filteredInv:Inventory = inventory.duplicate()
|
|
|
|
var i = filteredInv.items.size() - 1
|
|
while i >= 0:
|
|
var currentItem = filteredInv.items[i]
|
|
if currentItem.itemModifications.size() > 0 and not Item.modifications.Concentrated in currentItem.itemModifications:
|
|
filteredInv.remove_item(currentItem, filteredInv.quantities[i])
|
|
i -= 1
|
|
|
|
return filteredInv
|
|
|
|
func _on_leave_button_pressed():
|
|
get_tree().paused = false
|
|
hide()
|