diff options
author | altaf-creator <dev@altafcreator.com> | 2025-10-20 01:43:48 +0800 |
---|---|---|
committer | altaf-creator <dev@altafcreator.com> | 2025-10-20 01:43:48 +0800 |
commit | 466bec0b724632f6dd2e1555a7bd58ffc1dd0458 (patch) | |
tree | d6645ea11914edeec645299fa497a9e542dbaec7 /Scripts/UI |
Jam version.
Diffstat (limited to 'Scripts/UI')
-rw-r--r-- | Scripts/UI/MaskButton.gd | 13 | ||||
-rw-r--r-- | Scripts/UI/MaskButton.gd.uid | 1 | ||||
-rw-r--r-- | Scripts/UI/UI.gd | 156 | ||||
-rw-r--r-- | Scripts/UI/UI.gd.uid | 1 | ||||
-rw-r--r-- | Scripts/UI/UIConnector.gd | 32 | ||||
-rw-r--r-- | Scripts/UI/UIConnector.gd.uid | 1 |
6 files changed, 204 insertions, 0 deletions
diff --git a/Scripts/UI/MaskButton.gd b/Scripts/UI/MaskButton.gd new file mode 100644 index 0000000..b9ce505 --- /dev/null +++ b/Scripts/UI/MaskButton.gd @@ -0,0 +1,13 @@ +extends Button + +@export var mask_type : int = -1 +@export var index : int = 0 + +func _ready() -> void: + pressed.connect(_on_pressed) + +signal i_was_pressed(mask : int, index : int, btn : Button) + +func _on_pressed() -> void: + print("pressed here") + i_was_pressed.emit(mask_type, index, self) diff --git a/Scripts/UI/MaskButton.gd.uid b/Scripts/UI/MaskButton.gd.uid new file mode 100644 index 0000000..d9bf37f --- /dev/null +++ b/Scripts/UI/MaskButton.gd.uid @@ -0,0 +1 @@ +uid://bbf1up6i5tkg2 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") diff --git a/Scripts/UI/UI.gd.uid b/Scripts/UI/UI.gd.uid new file mode 100644 index 0000000..e8fd98f --- /dev/null +++ b/Scripts/UI/UI.gd.uid @@ -0,0 +1 @@ +uid://mauaa0rjx7lo diff --git a/Scripts/UI/UIConnector.gd b/Scripts/UI/UIConnector.gd new file mode 100644 index 0000000..b41e241 --- /dev/null +++ b/Scripts/UI/UIConnector.gd @@ -0,0 +1,32 @@ +extends Node + +var hud : UI + +var is_inv_open : bool = false + +func _ready() -> void: + hud = get_tree().get_root().get_node("Node2D/HUD") + +func display_health(n : int) -> void: + hud.display_health(n) + +func add_machette() -> void: + hud.add_machette() + +func remove_machette() -> void: + hud.remove_machette() + +func switch_tool() -> void: + hud.switch_tool() + +func update_masks(masks : Array[int]) -> void: + hud.update_masks(masks) + +func show_mask_bubble() -> void: + hud.show_mask_bubble() + +func death() -> void: + hud.death() + +func next_level(level : int) -> void: + hud.next_level(level) diff --git a/Scripts/UI/UIConnector.gd.uid b/Scripts/UI/UIConnector.gd.uid new file mode 100644 index 0000000..f5527a1 --- /dev/null +++ b/Scripts/UI/UIConnector.gd.uid @@ -0,0 +1 @@ +uid://brryfq1vrcok3 |