summaryrefslogtreecommitdiff
path: root/Scripts/UI/UI.gd
diff options
context:
space:
mode:
Diffstat (limited to 'Scripts/UI/UI.gd')
-rw-r--r--Scripts/UI/UI.gd156
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")