diff options
Diffstat (limited to 'Scripts/UI/UI.gd')
-rw-r--r-- | Scripts/UI/UI.gd | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/Scripts/UI/UI.gd b/Scripts/UI/UI.gd new file mode 100644 index 0000000..a86d69d --- /dev/null +++ b/Scripts/UI/UI.gd @@ -0,0 +1,156 @@ +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") |