Cow_Life_Sim_RPG/UI/Sugaring/SugaringMenu.gd

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()