extends CanvasLayer class_name UI @export var health_label : Label @export var machette_sprite : TextureRect @export var main_hud : Control @export var inventory_panel : Control @export var tool_slot_1 : PanelContainer @export var tool_slot_2 : PanelContainer @export var mask_slot_1 : PanelContainer @export var mask_slot_2 : PanelContainer @export var inventory_equip : Control @export var inventory_secondary : Control @export var inventory_1 : Control @export var inventory_2 : Control @export var inventory_3 : Control @export var inventory_4 : Control @export var bubble_machette_anim : AnimationPlayer @export var bubble_mask_anim : AnimationPlayer @export var death_animator : AnimationPlayer @export var level_animator : AnimationPlayer @export var level_label : Label @export var level_label_id : Label @export var level_names : Array[String] var curr_tool : bool = false # false is 1, true is 2 var is_inv_open : bool = false func _ready() -> void: # absolutely disgusting. inventory_equip.i_was_pressed.connect(_on_inventorybtn_pressed) inventory_secondary.i_was_pressed.connect(_on_inventorybtn_pressed) inventory_1.i_was_pressed.connect(_on_inventorybtn_pressed) inventory_2.i_was_pressed.connect(_on_inventorybtn_pressed) inventory_3.i_was_pressed.connect(_on_inventorybtn_pressed) inventory_4.i_was_pressed.connect(_on_inventorybtn_pressed) func _input(_event: InputEvent) -> void: if Input.is_action_just_pressed("open_bag"): if !is_inv_open: main_hud.visible = false main_hud.mouse_filter = Control.MOUSE_FILTER_IGNORE inventory_panel.visible = true main_hud.mouse_filter = Control.MOUSE_FILTER_STOP else: main_hud.visible = true main_hud.mouse_filter = Control.MOUSE_FILTER_STOP inventory_panel.visible = false main_hud.mouse_filter = Control.MOUSE_FILTER_IGNORE is_inv_open = !is_inv_open UIConnector.is_inv_open = is_inv_open func display_health(n : int) -> void: health_label.text = "♥".repeat(n) func add_machette() -> void: machette_sprite.visible = true bubble_machette_anim.play("toast") func remove_machette() -> void: machette_sprite.visible = false func switch_tool() -> void: if curr_tool: tool_slot_1.theme_type_variation = "SlotSelected" tool_slot_2.theme_type_variation = "SlotDeselected" else: tool_slot_2.theme_type_variation = "SlotSelected" tool_slot_1.theme_type_variation = "SlotDeselected" curr_tool = !curr_tool var names = ["Dash", "Grapple", "Minions", "Freeze"] func update_masks(masks : Array[int]) -> void: # are you disgusted? for mname in names: inventory_equip.get_node(mname).visible = false inventory_secondary.get_node(mname).visible = false mask_slot_1.get_node(mname).visible = false mask_slot_2.get_node(mname).visible = false inventory_1.get_node(mname).visible = false inventory_2.get_node(mname).visible = false inventory_3.get_node(mname).visible = false inventory_4.get_node(mname).visible = false if masks[0] != -1: inventory_equip.get_node(names[masks[0]]).visible = true mask_slot_1.get_node(names[masks[0]]).visible = true mask_slot_1.theme_type_variation = "SlotSelected" if masks[1] != -1: inventory_secondary.get_node(names[masks[1]]).visible = true mask_slot_2.get_node(names[masks[1]]).visible = true for mname in names: inventory_1.get_node(mname).visible = false if masks[2] != -1: inventory_1.get_node(names[masks[2]]).visible = true inventory_1.mask_type = masks[2] if masks[3] != -1: inventory_2.get_node(names[masks[3]]).visible = true inventory_2.mask_type = masks[3] if masks[4] != -1: inventory_3.get_node(names[masks[4]]).visible = true inventory_3.mask_type = masks[4] if masks[5] != -1: inventory_4.get_node(names[masks[5]]).visible = true inventory_4.mask_type = masks[5] func death() -> void: death_animator.play("death") func death_finished() -> void: get_tree().get_root().get_node("Node2D").restart() var was_selecting : bool = false var prev_selecting_mask : int = -1 var prev_selecting_index : int = -1 var prev_selecting_btn : Button func _on_inventorybtn_pressed(mask : int, index : int, btn : Button) -> void: print("pressed there") # i'm sorry. var player_inventory : PlayerInventory = get_tree().get_root().get_node("Node2D/Player/PlayerInventory") if !was_selecting: was_selecting = true prev_selecting_mask = mask prev_selecting_index = index prev_selecting_btn = btn print(prev_selecting_mask, " ", prev_selecting_index) else: was_selecting = false player_inventory.mask_inventory[index] = prev_selecting_mask player_inventory.mask_inventory[prev_selecting_index] = mask btn.mask_type = prev_selecting_mask prev_selecting_btn.mask_type = mask update_masks(player_inventory.mask_inventory) prev_selecting_mask = -1 prev_selecting_index = -1 prev_selecting_btn = null func next_level(level : int) -> void: level_animator.play("enter") level_label.text = level_names[level] level_label_id.text = "Level " + str(level) func show_mask_bubble() -> void: bubble_mask_anim.play("toast")