From 0af98ae1af45f164e629dcfbca147fcd89aa44cf Mon Sep 17 00:00:00 2001 From: GearsDatapacks Date: Tue, 15 Jul 2025 20:44:14 +0100 Subject: [PATCH] Add proper UI for dishes and coins --- assets/coin.png | Bin 0 -> 548 bytes assets/coin.png.import | 34 ++++++++++++++++++++++ project.godot | 5 ++++ scenes/dish_indicator.tscn | 19 +++++++++++++ scenes/main.tscn | 57 +++++++++++++++++++------------------ scripts/world.gd | 32 ++++++++++++++------- 6 files changed, 109 insertions(+), 38 deletions(-) create mode 100644 assets/coin.png create mode 100644 assets/coin.png.import create mode 100644 scenes/dish_indicator.tscn diff --git a/assets/coin.png b/assets/coin.png new file mode 100644 index 0000000000000000000000000000000000000000..a5a6bbd3dce547ef0caf5aceb1a711d048324118 GIT binary patch literal 548 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hEk44ofy`glX=O&zvX=|^(c zYIH5q=nAz=v97suEBpQX=h=Dl`!4cT99ZuC{O7mtKQkN;^#niI+fZ%ue!uXmMu=R?h!m z(ry_yTTJi@@0x@8tb1FpwuiA?Jv=REJ@1_4k4ps~sxNkyGcnUy?6zh~+6!f-|82+i zmx!!zZ#YsZBDl?!>CBcVo))pcZs##sF)7`zo6`TzX5zlu_eSCyeY}bse>8HWuYUaH zcTeCK&J->WYu(E1o7%iJqBoo-yBG_FOj-}m8I+mV((y^3V z)jo1t$h6Hl8%^A!_0I1X{Fl4)kJ#qFhg||iTsIo!FJivAc#rw3P6h@B22WQ%mvv4F FO#s1~^j81? literal 0 HcmV?d00001 diff --git a/assets/coin.png.import b/assets/coin.png.import new file mode 100644 index 0000000..9f09f5b --- /dev/null +++ b/assets/coin.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b82673exscqgp" +path="res://.godot/imported/coin.png-f04b9cd408b88aba3ab0966b4da32df0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/coin.png" +dest_files=["res://.godot/imported/coin.png-f04b9cd408b88aba3ab0966b4da32df0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/project.godot b/project.godot index 767bde8..61315bc 100644 --- a/project.godot +++ b/project.godot @@ -15,6 +15,11 @@ run/main_scene="uid://d3sq78iwopdq3" config/features=PackedStringArray("4.4", "Mobile") config/icon="res://assets/icon.svg" +[display] + +window/size/viewport_width=1216 +window/stretch/mode="canvas_items" + [input] move_left={ diff --git a/scenes/dish_indicator.tscn b/scenes/dish_indicator.tscn new file mode 100644 index 0000000..607117f --- /dev/null +++ b/scenes/dish_indicator.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=2 format=3 uid="uid://6bxmmdbnxyq5"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_q8vbr"] +bg_color = Color(0, 1, 0.392157, 1) + +[node name="VBoxContainer" type="VBoxContainer"] +offset_right = 40.0 +offset_bottom = 40.0 + +[node name="TextureRect" type="TextureRect" parent="."] +custom_minimum_size = Vector2(32, 32) +layout_mode = 2 +stretch_mode = 4 + +[node name="ProgressBar" type="ProgressBar" parent="."] +layout_mode = 2 +theme_override_styles/fill = SubResource("StyleBoxFlat_q8vbr") +value = 100.0 +show_percentage = false diff --git a/scenes/main.tscn b/scenes/main.tscn index 791ca97..4d4562f 100644 --- a/scenes/main.tscn +++ b/scenes/main.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=11 format=4 uid="uid://bdhboi1mq3tq7"] +[gd_scene load_steps=12 format=4 uid="uid://bdhboi1mq3tq7"] [ext_resource type="PackedScene" uid="uid://6xfwu8h4qqvr" path="res://scenes/player.tscn" id="1_gnn8a"] [ext_resource type="Script" uid="uid://ccbpbehroxfe5" path="res://scripts/world.gd" id="1_jyhfs"] @@ -6,26 +6,12 @@ [ext_resource type="Texture2D" uid="uid://b2trsp635igg3" path="res://assets/conveyor.png" id="2_0wfyh"] [ext_resource type="Script" uid="uid://bikq5kiguh2h" path="res://scripts/dish.gd" id="2_tefeu"] [ext_resource type="Resource" uid="uid://dhyh31elxvwu5" path="res://dishes/apple.tres" id="3_o6xl0"] +[ext_resource type="Texture2D" uid="uid://b82673exscqgp" path="res://assets/coin.png" id="7_tipki"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_jyhfs"] texture = ExtResource("1_sugp2") texture_region_size = Vector2i(64, 64) 0:0/0 = 0 -1:0/0 = 0 -2:0/0 = 0 -3:0/0 = 0 -0:1/0 = 0 -1:1/0 = 0 -2:1/0 = 0 -3:1/0 = 0 -0:2/0 = 0 -1:2/0 = 0 -2:2/0 = 0 -3:2/0 = 0 -0:3/0 = 0 -1:3/0 = 0 -2:3/0 = 0 -3:3/0 = 0 [sub_resource type="TileSet" id="TileSet_tbgi4"] tile_size = Vector2i(64, 64) @@ -81,7 +67,7 @@ script = ExtResource("1_jyhfs") possible_dishes = Array[ExtResource("2_tefeu")]([ExtResource("3_o6xl0")]) [node name="Floor" type="TileMapLayer" parent="."] -tile_map_data = PackedByteArray("AAABAAEAAAAAAAAAAAABAAIAAAAAAAAAAAABAAMAAAAAAAAAAAABAAQAAAAAAAAAAAABAAUAAAAAAAAAAAABAAYAAAAAAAAAAAABAAcAAAAAAAAAAAABAAgAAAAAAAAAAAACAAEAAAAAAAAAAAACAAIAAAAAAAAAAAACAAMAAAAAAAAAAAACAAQAAAAAAAAAAAACAAUAAAAAAAAAAAACAAYAAAAAAAAAAAACAAcAAAAAAAAAAAACAAgAAAAAAAAAAAADAAEAAAAAAAAAAAADAAIAAAAAAAAAAAADAAMAAAAAAAAAAAADAAQAAAAAAAAAAAADAAUAAAAAAAAAAAADAAYAAAAAAAAAAAADAAcAAAAAAAAAAAADAAgAAAAAAAAAAAAEAAEAAAAAAAAAAAAEAAIAAAAAAAAAAAAEAAMAAAAAAAAAAAAEAAQAAAAAAAAAAAAEAAUAAAAAAAAAAAAEAAYAAAAAAAAAAAAEAAcAAAAAAAAAAAAEAAgAAAAAAAAAAAAFAAEAAAAAAAAAAAAFAAIAAAAAAAAAAAAFAAMAAAAAAAAAAAAFAAQAAAAAAAAAAAAFAAUAAAAAAAAAAAAFAAYAAAAAAAAAAAAFAAcAAAAAAAAAAAAFAAgAAAAAAAAAAAAGAAEAAAAAAAAAAAAGAAIAAAAAAAAAAAAGAAMAAAAAAAAAAAAGAAQAAAAAAAAAAAAGAAUAAAAAAAAAAAAGAAYAAAAAAAAAAAAGAAcAAAAAAAAAAAAGAAgAAAAAAAAAAAAHAAEAAAAAAAAAAAAHAAIAAAAAAAAAAAAHAAMAAAAAAAAAAAAHAAQAAAAAAAAAAAAHAAUAAAAAAAAAAAAHAAYAAAAAAAAAAAAHAAcAAAAAAAAAAAAHAAgAAAAAAAAAAAAIAAEAAAAAAAAAAAAIAAIAAAAAAAAAAAAIAAMAAAAAAAAAAAAIAAQAAAAAAAAAAAAIAAUAAAAAAAAAAAAIAAYAAAAAAAAAAAAIAAcAAAAAAAAAAAAIAAgAAAAAAAAAAAAJAAEAAAAAAAAAAAAJAAIAAAAAAAAAAAAJAAMAAAAAAAAAAAAJAAQAAAAAAAAAAAAJAAUAAAAAAAAAAAAJAAYAAAAAAAAAAAAJAAcAAAAAAAAAAAAJAAgAAAAAAAAAAAAKAAEAAAAAAAAAAAAKAAIAAAAAAAAAAAAKAAMAAAAAAAAAAAAKAAQAAAAAAAAAAAAKAAUAAAAAAAAAAAAKAAYAAAAAAAAAAAAKAAcAAAAAAAAAAAAKAAgAAAAAAAAAAAALAAEAAAAAAAAAAAALAAIAAAAAAAAAAAALAAMAAAAAAAAAAAALAAQAAAAAAAAAAAALAAUAAAAAAAAAAAALAAYAAAAAAAAAAAALAAcAAAAAAAAAAAALAAgAAAAAAAAAAAAMAAEAAAAAAAAAAAAMAAIAAAAAAAAAAAAMAAMAAAAAAAAAAAAMAAQAAAAAAAAAAAAMAAUAAAAAAAAAAAAMAAYAAAAAAAAAAAAMAAcAAAAAAAAAAAAMAAgAAAAAAAAAAAANAAEAAAAAAAAAAAANAAIAAAAAAAAAAAANAAMAAAAAAAAAAAANAAQAAAAAAAAAAAANAAUAAAAAAAAAAAANAAYAAAAAAAAAAAANAAcAAAAAAAAAAAANAAgAAAAAAAAAAAAOAAEAAAAAAAAAAAAOAAIAAAAAAAAAAAAOAAMAAAAAAAAAAAAOAAQAAAAAAAAAAAAOAAUAAAAAAAAAAAAOAAYAAAAAAAAAAAAOAAcAAAAAAAAAAAAOAAgAAAAAAAAAAAAPAAEAAAAAAAAAAAAPAAIAAAAAAAAAAAAPAAMAAAAAAAAAAAAPAAQAAAAAAAAAAAAPAAUAAAAAAAAAAAAPAAYAAAAAAAAAAAAPAAcAAAAAAAAAAAAPAAgAAAAAAAAAAAAQAAEAAAAAAAAAAAAQAAIAAAAAAAAAAAAQAAMAAAAAAAAAAAAQAAQAAAAAAAAAAAAQAAUAAAAAAAAAAAAQAAYAAAAAAAAAAAAQAAcAAAAAAAAAAAAQAAgAAAAAAAAAAAA=") +tile_map_data = PackedByteArray("AAABAAEAAAAAAAAAAAABAAIAAAAAAAAAAAABAAMAAAAAAAAAAAABAAQAAAAAAAAAAAABAAUAAAAAAAAAAAABAAYAAAAAAAAAAAABAAcAAAAAAAAAAAABAAgAAAAAAAAAAAACAAEAAAAAAAAAAAACAAIAAAAAAAAAAAACAAMAAAAAAAAAAAACAAQAAAAAAAAAAAACAAUAAAAAAAAAAAACAAYAAAAAAAAAAAACAAcAAAAAAAAAAAACAAgAAAAAAAAAAAADAAEAAAAAAAAAAAADAAIAAAAAAAAAAAADAAMAAAAAAAAAAAADAAQAAAAAAAAAAAADAAUAAAAAAAAAAAADAAYAAAAAAAAAAAADAAcAAAAAAAAAAAADAAgAAAAAAAAAAAAEAAEAAAAAAAAAAAAEAAIAAAAAAAAAAAAEAAMAAAAAAAAAAAAEAAQAAAAAAAAAAAAEAAUAAAAAAAAAAAAEAAYAAAAAAAAAAAAEAAcAAAAAAAAAAAAEAAgAAAAAAAAAAAAFAAEAAAAAAAAAAAAFAAIAAAAAAAAAAAAFAAMAAAAAAAAAAAAFAAQAAAAAAAAAAAAFAAUAAAAAAAAAAAAFAAYAAAAAAAAAAAAFAAcAAAAAAAAAAAAFAAgAAAAAAAAAAAAGAAEAAAAAAAAAAAAGAAIAAAAAAAAAAAAGAAMAAAAAAAAAAAAGAAQAAAAAAAAAAAAGAAUAAAAAAAAAAAAGAAYAAAAAAAAAAAAGAAcAAAAAAAAAAAAGAAgAAAAAAAAAAAAHAAEAAAAAAAAAAAAHAAIAAAAAAAAAAAAHAAMAAAAAAAAAAAAHAAQAAAAAAAAAAAAHAAUAAAAAAAAAAAAHAAYAAAAAAAAAAAAHAAcAAAAAAAAAAAAHAAgAAAAAAAAAAAAIAAEAAAAAAAAAAAAIAAIAAAAAAAAAAAAIAAMAAAAAAAAAAAAIAAQAAAAAAAAAAAAIAAUAAAAAAAAAAAAIAAYAAAAAAAAAAAAIAAcAAAAAAAAAAAAIAAgAAAAAAAAAAAAJAAEAAAAAAAAAAAAJAAIAAAAAAAAAAAAJAAMAAAAAAAAAAAAJAAQAAAAAAAAAAAAJAAUAAAAAAAAAAAAJAAYAAAAAAAAAAAAJAAcAAAAAAAAAAAAJAAgAAAAAAAAAAAAKAAEAAAAAAAAAAAAKAAIAAAAAAAAAAAAKAAMAAAAAAAAAAAAKAAQAAAAAAAAAAAAKAAUAAAAAAAAAAAAKAAYAAAAAAAAAAAAKAAcAAAAAAAAAAAAKAAgAAAAAAAAAAAALAAEAAAAAAAAAAAALAAIAAAAAAAAAAAALAAMAAAAAAAAAAAALAAQAAAAAAAAAAAALAAUAAAAAAAAAAAALAAYAAAAAAAAAAAALAAcAAAAAAAAAAAALAAgAAAAAAAAAAAAMAAEAAAAAAAAAAAAMAAIAAAAAAAAAAAAMAAMAAAAAAAAAAAAMAAQAAAAAAAAAAAAMAAUAAAAAAAAAAAAMAAYAAAAAAAAAAAAMAAcAAAAAAAAAAAAMAAgAAAAAAAAAAAANAAEAAAAAAAAAAAANAAIAAAAAAAAAAAANAAMAAAAAAAAAAAANAAQAAAAAAAAAAAANAAUAAAAAAAAAAAANAAYAAAAAAAAAAAANAAcAAAAAAAAAAAANAAgAAAAAAAAAAAAOAAEAAAAAAAAAAAAOAAIAAAAAAAAAAAAOAAMAAAAAAAAAAAAOAAQAAAAAAAAAAAAOAAUAAAAAAAAAAAAOAAYAAAAAAAAAAAAOAAcAAAAAAAAAAAAOAAgAAAAAAAAAAAAPAAEAAAAAAAAAAAAPAAIAAAAAAAAAAAAPAAMAAAAAAAAAAAAPAAQAAAAAAAAAAAAPAAUAAAAAAAAAAAAPAAYAAAAAAAAAAAAPAAcAAAAAAAAAAAAPAAgAAAAAAAAAAAAQAAEAAAAAAAAAAAAQAAIAAAAAAAAAAAAQAAMAAAAAAAAAAAAQAAQAAAAAAAAAAAAQAAUAAAAAAAAAAAAQAAYAAAAAAAAAAAAQAAcAAAAAAAAAAAAQAAgAAAAAAAAAAAASAAAAAAAAAAAAAAASAAEAAAAAAAAAAAASAAIAAAAAAAAAAAASAAMAAAAAAAAAAAASAAQAAAAAAAAAAAASAAUAAAAAAAAAAAASAAYAAAAAAAAAAAASAAcAAAAAAAAAAAASAAgAAAAAAAAAAAASAAkAAAAAAAAAAAA=") tile_set = SubResource("TileSet_tbgi4") metadata/_edit_lock_ = true @@ -93,16 +79,31 @@ tile_set = SubResource("TileSet_jyhfs") z_index = 1 position = Vector2(531, 221) -[node name="Coins" type="Label" parent="."] -offset_right = 192.0 -offset_bottom = 100.0 -theme_override_font_sizes/font_size = 24 -text = "Coins: 0" +[node name="CanvasLayer" type="CanvasLayer" parent="."] + +[node name="PanelContainer" type="PanelContainer" parent="CanvasLayer"] +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -63.0 +offset_right = 1.0 +offset_bottom = 34.0 +grow_horizontal = 0 + +[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/PanelContainer"] +layout_mode = 2 -[node name="Dishes" type="Label" parent="."] -offset_left = 1051.0 -offset_top = -1.0 -offset_right = 1154.0 -offset_bottom = 33.0 +[node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer/PanelContainer/VBoxContainer"] +layout_mode = 2 + +[node name="Coins" type="Label" parent="CanvasLayer/PanelContainer/VBoxContainer/HBoxContainer"] +layout_mode = 2 theme_override_font_sizes/font_size = 24 -text = "Dishes: 0" +text = "0" + +[node name="CoinIcon" type="TextureRect" parent="CanvasLayer/PanelContainer/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +texture = ExtResource("7_tipki") +expand_mode = 1 +stretch_mode = 4 diff --git a/scripts/world.gd b/scripts/world.gd index d9b0dc3..701d1dc 100644 --- a/scripts/world.gd +++ b/scripts/world.gd @@ -2,14 +2,18 @@ extends Node2D class_name World const width = 18 -const height = 11 +const height = 10 const TILE_SIZE = 64 @onready var tilemap: TileMapLayer = $Appliances var items: Array[ItemEntity] = [] +class ActiveDish: + var dish: Dish + var node: Node + var item_queue: Array[Item] = [] -var dishes: Array[Dish] = [] +var dishes: Array[ActiveDish] = [] @export var possible_dishes: Array[Dish] const DISH_TIMEOUT = 30 @@ -17,11 +21,15 @@ var time_until_next_dish = 0 enum Direction { None, Left, Up, Right, Down } -func _ready(): +@onready var ui_vertical = $CanvasLayer/PanelContainer/VBoxContainer +@onready var coins_label: Label = ui_vertical.get_node("HBoxContainer/Coins") + +func _ready(): for i in range(width * height): items.append(null) var item_entity = preload("res://scenes/item_entity.tscn") +var dish_indicator = preload("res://scenes/dish_indicator.tscn") var coins = 0 func _physics_process(delta): @@ -36,22 +44,26 @@ func _physics_process(delta): if !dishes.is_empty(): for i in range(dishes.size()): var dish = dishes[i] - if items[0] != null and items[0].item == dish.required_item: + if items[0] != null and items[0].item == dish.dish.required_item: var entity = items[0] remove_item(entity.position) entity.queue_free() - coins += dish.cost - $Coins.text = "Coins: " + str(coins) + dish.node.queue_free() + coins += dish.dish.cost + coins_label.text = str(coins) dishes.remove_at(i) - $Dishes.text = "Dishes: " + str(dishes.size()) break time_until_next_dish -= delta if time_until_next_dish <= 0: - var dish: Dish = possible_dishes.pick_random() - item_queue.append_array(dish.ingredients) + var dish: ActiveDish = ActiveDish.new() + dish.dish = possible_dishes.pick_random() + var indicator = dish_indicator.instantiate() + indicator.get_node("TextureRect").texture = dish.dish.required_item.texture + dish.node = indicator + ui_vertical.add_child(indicator) + item_queue.append_array(dish.dish.ingredients) dishes.append(dish) - $Dishes.text = "Dishes: " + str(dishes.size()) time_until_next_dish = DISH_TIMEOUT func tile_data(position: Vector2) -> TileData: -- 2.51.2