From 0d37e456cbba8fdc6f6270748e7d684b6747eb09 Mon Sep 17 00:00:00 2001 From: Zacharie Guet Date: Sun, 1 Sep 2024 12:12:40 +0200 Subject: [PATCH] develop pland card --- assets/gui/Text.tres | 6 + assets/gui/fonts/AgenorNeue-Regular.otf | Bin 0 -> 83656 bytes .../gui/fonts/AgenorNeue-Regular.otf.import | 34 ++++ assets/gui/icons/soil-alt.svg | 125 +++++++++++++ assets/gui/icons/soil-alt.svg.import | 37 ++++ assets/gui/icons/tree.svg | 69 +++++++ assets/gui/icons/tree.svg.import | 37 ++++ assets/gui/icons/watering-soil.svg | 109 +++++++++++ assets/gui/icons/watering-soil.svg.import | 37 ++++ objects/gui/Scanner_modes.tscn | 4 +- objects/gui/Seed_card.tscn | 169 ++++++++++++++++-- objects/gui/Seed_queue.tscn | 46 ++--- objects/gui/Stats_area.tscn | 27 +++ scripts/gui/seed_card.gd | 24 ++- scripts/gui/seed_queue.gd | 11 +- scripts/gui/stats_area.gd | 28 +++ 16 files changed, 718 insertions(+), 45 deletions(-) create mode 100644 assets/gui/Text.tres create mode 100644 assets/gui/fonts/AgenorNeue-Regular.otf create mode 100644 assets/gui/fonts/AgenorNeue-Regular.otf.import create mode 100644 assets/gui/icons/soil-alt.svg create mode 100644 assets/gui/icons/soil-alt.svg.import create mode 100644 assets/gui/icons/tree.svg create mode 100644 assets/gui/icons/tree.svg.import create mode 100644 assets/gui/icons/watering-soil.svg create mode 100644 assets/gui/icons/watering-soil.svg.import create mode 100644 objects/gui/Stats_area.tscn create mode 100644 scripts/gui/stats_area.gd diff --git a/assets/gui/Text.tres b/assets/gui/Text.tres new file mode 100644 index 0000000..1744770 --- /dev/null +++ b/assets/gui/Text.tres @@ -0,0 +1,6 @@ +[gd_resource type="Theme" load_steps=2 format=3 uid="uid://dnebunkx13tbr"] + +[ext_resource type="FontFile" uid="uid://bny4vcd35yk8v" path="res://assets/gui/fonts/AgenorNeue-Regular.otf" id="1_txdd2"] + +[resource] +default_font = ExtResource("1_txdd2") diff --git a/assets/gui/fonts/AgenorNeue-Regular.otf b/assets/gui/fonts/AgenorNeue-Regular.otf new file mode 100644 index 0000000000000000000000000000000000000000..ab75820660414924920d6beb19b82d251fbb22ee GIT binary patch literal 83656 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 + + + + + + + + + + + + + + + diff --git a/assets/gui/icons/soil-alt.svg.import b/assets/gui/icons/soil-alt.svg.import new file mode 100644 index 0000000..faf8556 --- /dev/null +++ b/assets/gui/icons/soil-alt.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dgo81cisfryi1" +path="res://.godot/imported/soil-alt.svg-fe8fe6cd3f43bd71db54f40c87d8a896.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/gui/icons/soil-alt.svg" +dest_files=["res://.godot/imported/soil-alt.svg-fe8fe6cd3f43bd71db54f40c87d8a896.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 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/assets/gui/icons/tree.svg b/assets/gui/icons/tree.svg new file mode 100644 index 0000000..cf28717 --- /dev/null +++ b/assets/gui/icons/tree.svg @@ -0,0 +1,69 @@ + + + + + + + + + diff --git a/assets/gui/icons/tree.svg.import b/assets/gui/icons/tree.svg.import new file mode 100644 index 0000000..7e52054 --- /dev/null +++ b/assets/gui/icons/tree.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bdg3ep75da6xd" +path="res://.godot/imported/tree.svg-a9a11b8669ea4c40b43b0767f9245964.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/gui/icons/tree.svg" +dest_files=["res://.godot/imported/tree.svg-a9a11b8669ea4c40b43b0767f9245964.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 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/assets/gui/icons/watering-soil.svg b/assets/gui/icons/watering-soil.svg new file mode 100644 index 0000000..b2d14f2 --- /dev/null +++ b/assets/gui/icons/watering-soil.svg @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + diff --git a/assets/gui/icons/watering-soil.svg.import b/assets/gui/icons/watering-soil.svg.import new file mode 100644 index 0000000..4b02749 --- /dev/null +++ b/assets/gui/icons/watering-soil.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dpfe11wn04ntd" +path="res://.godot/imported/watering-soil.svg-65f2a38ec58e9e944c44f681c3ffc681.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/gui/icons/watering-soil.svg" +dest_files=["res://.godot/imported/watering-soil.svg-65f2a38ec58e9e944c44f681c3ffc681.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 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/objects/gui/Scanner_modes.tscn b/objects/gui/Scanner_modes.tscn index 5175101..75ecaa8 100644 --- a/objects/gui/Scanner_modes.tscn +++ b/objects/gui/Scanner_modes.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=2 format=3 uid="uid://0so4tpnkk8t2"] +[gd_scene load_steps=3 format=3 uid="uid://0so4tpnkk8t2"] [ext_resource type="Script" path="res://scripts/gui/scanner_modes.gd" id="1_synac"] +[ext_resource type="Theme" uid="uid://dnebunkx13tbr" path="res://assets/gui/Text.tres" id="2_3kvh5"] [node name="ScannerModes" type="Control"] layout_mode = 3 @@ -18,6 +19,7 @@ offset_left = -60.5 offset_right = 60.5 offset_bottom = 40.0 grow_horizontal = 2 +theme = ExtResource("2_3kvh5") selected = 0 item_count = 4 popup/item_0/text = "No Scanner" diff --git a/objects/gui/Seed_card.tscn b/objects/gui/Seed_card.tscn index 58d9595..811e40c 100644 --- a/objects/gui/Seed_card.tscn +++ b/objects/gui/Seed_card.tscn @@ -1,13 +1,21 @@ -[gd_scene load_steps=5 format=3 uid="uid://iaf4md4cbwqh"] +[gd_scene load_steps=12 format=3 uid="uid://iaf4md4cbwqh"] [ext_resource type="Script" path="res://scripts/gui/seed_card.gd" id="1_ecgsq"] +[ext_resource type="Theme" uid="uid://dnebunkx13tbr" path="res://assets/gui/Text.tres" id="2_n5opx"] +[ext_resource type="Texture2D" uid="uid://dpfe11wn04ntd" path="res://assets/gui/icons/watering-soil.svg" id="3_4sryb"] +[ext_resource type="Texture2D" uid="uid://be2uusaqcpcpd" path="res://assets/gradients/Fertility.tres" id="4_5omu3"] +[ext_resource type="PackedScene" uid="uid://qjwtbyq2c87m" path="res://objects/gui/Stats_area.tscn" id="4_wwqbk"] +[ext_resource type="Texture2D" uid="uid://cwowpvsoo3dey" path="res://assets/gradients/Water.tres" id="5_hwfmn"] +[ext_resource type="Texture2D" uid="uid://dgo81cisfryi1" path="res://assets/gui/icons/soil-alt.svg" id="6_4k6c3"] +[ext_resource type="Texture2D" uid="uid://bdg3ep75da6xd" path="res://assets/gui/icons/tree.svg" id="8_i3l01"] +[ext_resource type="Texture2D" uid="uid://biti1wmdsg7xr" path="res://assets/gradients/Presence.tres" id="9_w0o2o"] -[sub_resource type="Gradient" id="Gradient_lissx"] -offsets = PackedFloat32Array(1) -colors = PackedColorArray(0.125911, 0.125911, 0.125911, 1) - -[sub_resource type="GradientTexture1D" id="GradientTexture1D_aglhv"] -gradient = SubResource("Gradient_lissx") +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_8gji7"] +draw_center = false +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 [sub_resource type="NoiseTexture2D" id="NoiseTexture2D_kiud1"] @@ -25,15 +33,14 @@ anchor_left = 1.0 anchor_top = 1.0 anchor_right = 1.0 anchor_bottom = 1.0 -offset_left = -100.0 -offset_top = -181.0 +offset_left = -277.0 +offset_top = -280.0 grow_horizontal = 0 grow_vertical = 0 -[node name="TextureRect" type="TextureRect" parent="Card"] +[node name="TextureRect" type="Panel" parent="Card"] layout_mode = 2 -texture = SubResource("GradientTexture1D_aglhv") -expand_mode = 1 +theme_override_styles/panel = SubResource("StyleBoxFlat_8gji7") [node name="MarginContainer" type="MarginContainer" parent="Card"] layout_mode = 2 @@ -47,6 +54,8 @@ layout_mode = 2 [node name="Nom" type="Label" parent="Card/MarginContainer/VBoxContainer"] layout_mode = 2 +theme = ExtResource("2_n5opx") +theme_override_font_sizes/font_size = 30 text = "Chène" horizontal_alignment = 1 vertical_alignment = 1 @@ -58,15 +67,145 @@ texture = SubResource("NoiseTexture2D_kiud1") expand_mode = 3 stretch_mode = 5 -[node name="Besoins" type="Label" parent="Card/MarginContainer/VBoxContainer"] +[node name="Needs" type="Label" parent="Card/MarginContainer/VBoxContainer"] layout_mode = 2 -text = "Besoins" +theme = ExtResource("2_n5opx") +theme_override_font_sizes/font_size = 20 +text = "Needs" horizontal_alignment = 1 vertical_alignment = 1 +[node name="WaterNeeds" type="HFlowContainer" parent="Card/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/h_separation = 20 +alignment = 2 + +[node name="IconLabel" type="HBoxContainer" parent="Card/MarginContainer/VBoxContainer/WaterNeeds"] +layout_mode = 2 +theme_override_constants/separation = 10 + +[node name="TextureRect" type="TextureRect" parent="Card/MarginContainer/VBoxContainer/WaterNeeds/IconLabel"] +layout_mode = 2 +texture = ExtResource("3_4sryb") + +[node name="Label" type="Label" parent="Card/MarginContainer/VBoxContainer/WaterNeeds/IconLabel"] +layout_mode = 2 +theme = ExtResource("2_n5opx") +text = "Water" + +[node name="StatsArea" parent="Card/MarginContainer/VBoxContainer/WaterNeeds" instance=ExtResource("4_wwqbk")] +layout_mode = 2 +gradient = ExtResource("5_hwfmn") + +[node name="FertilityNeeds" type="HFlowContainer" parent="Card/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/h_separation = 20 +alignment = 2 + +[node name="IconLabel" type="HBoxContainer" parent="Card/MarginContainer/VBoxContainer/FertilityNeeds"] +layout_mode = 2 +theme_override_constants/separation = 10 + +[node name="TextureRect" type="TextureRect" parent="Card/MarginContainer/VBoxContainer/FertilityNeeds/IconLabel"] +layout_mode = 2 +texture = ExtResource("6_4k6c3") + +[node name="Label" type="Label" parent="Card/MarginContainer/VBoxContainer/FertilityNeeds/IconLabel"] +layout_mode = 2 +theme = ExtResource("2_n5opx") +text = "Fertility" + +[node name="StatsArea" parent="Card/MarginContainer/VBoxContainer/FertilityNeeds" instance=ExtResource("4_wwqbk")] +layout_mode = 2 +gradient = ExtResource("4_5omu3") + +[node name="Population" type="HFlowContainer" parent="Card/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/h_separation = 20 +alignment = 2 + +[node name="IconLabel" type="HBoxContainer" parent="Card/MarginContainer/VBoxContainer/Population"] +layout_mode = 2 +theme_override_constants/separation = 10 + +[node name="TextureRect" type="TextureRect" parent="Card/MarginContainer/VBoxContainer/Population/IconLabel"] +layout_mode = 2 +texture = ExtResource("8_i3l01") + +[node name="Label" type="Label" parent="Card/MarginContainer/VBoxContainer/Population/IconLabel"] +layout_mode = 2 +theme = ExtResource("2_n5opx") +text = "Population" + +[node name="StatsArea" parent="Card/MarginContainer/VBoxContainer/Population" instance=ExtResource("4_wwqbk")] +layout_mode = 2 +gradient = ExtResource("9_w0o2o") + [node name="Apports" type="Label" parent="Card/MarginContainer/VBoxContainer"] layout_mode = 2 -text = "Apports +theme = ExtResource("2_n5opx") +theme_override_font_sizes/font_size = 20 +text = "Supply " horizontal_alignment = 1 vertical_alignment = 1 + +[node name="WaterSupply" type="HBoxContainer" parent="Card/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/separation = 10 +alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="Card/MarginContainer/VBoxContainer/WaterSupply"] +layout_mode = 2 +texture = ExtResource("3_4sryb") + +[node name="Label" type="Label" parent="Card/MarginContainer/VBoxContainer/WaterSupply"] +layout_mode = 2 +theme = ExtResource("2_n5opx") +text = "Water" + +[node name="Supply" type="Label" parent="Card/MarginContainer/VBoxContainer/WaterSupply"] +layout_mode = 2 +theme = ExtResource("2_n5opx") +theme_override_font_sizes/font_size = 20 +text = "1" + +[node name="FertilitySupply" type="HBoxContainer" parent="Card/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/separation = 10 +alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="Card/MarginContainer/VBoxContainer/FertilitySupply"] +layout_mode = 2 +texture = ExtResource("6_4k6c3") + +[node name="Label" type="Label" parent="Card/MarginContainer/VBoxContainer/FertilitySupply"] +layout_mode = 2 +theme = ExtResource("2_n5opx") +text = "Fertility" + +[node name="Supply" type="Label" parent="Card/MarginContainer/VBoxContainer/FertilitySupply"] +layout_mode = 2 +theme = ExtResource("2_n5opx") +theme_override_font_sizes/font_size = 20 +text = "1" + +[node name="PopulationSupply" type="HBoxContainer" parent="Card/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/separation = 10 +alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="Card/MarginContainer/VBoxContainer/PopulationSupply"] +layout_mode = 2 +texture = ExtResource("8_i3l01") + +[node name="Label" type="Label" parent="Card/MarginContainer/VBoxContainer/PopulationSupply"] +layout_mode = 2 +theme = ExtResource("2_n5opx") +text = "Population" + +[node name="Supply" type="Label" parent="Card/MarginContainer/VBoxContainer/PopulationSupply"] +layout_mode = 2 +theme = ExtResource("2_n5opx") +theme_override_font_sizes/font_size = 20 +text = "1" diff --git a/objects/gui/Seed_queue.tscn b/objects/gui/Seed_queue.tscn index b0c9dd4..9042c66 100644 --- a/objects/gui/Seed_queue.tscn +++ b/objects/gui/Seed_queue.tscn @@ -23,29 +23,19 @@ grow_horizontal = 2 grow_vertical = 0 theme_override_constants/separation = 10 +[node name="NextSeed" type="TextureRect" parent="HBoxContainer"] +custom_minimum_size = Vector2(100, 100) +layout_mode = 2 +texture = SubResource("NoiseTexture2D_reedq") +expand_mode = 2 + [node name="Queue" type="HBoxContainer" parent="HBoxContainer"] layout_mode = 2 theme_override_constants/separation = 10 alignment = 2 -[node name="Seed1" type="TextureRect" parent="HBoxContainer/Queue"] -custom_minimum_size = Vector2(40, 40) -layout_mode = 2 -size_flags_horizontal = 4 -size_flags_vertical = 8 -texture = SubResource("NoiseTexture2D_reedq") -expand_mode = 2 - -[node name="Seed2" type="TextureRect" parent="HBoxContainer/Queue"] -custom_minimum_size = Vector2(40, 40) -layout_mode = 2 -size_flags_horizontal = 4 -size_flags_vertical = 8 -texture = SubResource("NoiseTexture2D_reedq") -expand_mode = 2 - -[node name="Seed3" type="TextureRect" parent="HBoxContainer/Queue"] -custom_minimum_size = Vector2(40, 40) +[node name="Seed5" type="TextureRect" parent="HBoxContainer/Queue"] +custom_minimum_size = Vector2(50, 50) layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 8 @@ -53,23 +43,33 @@ texture = SubResource("NoiseTexture2D_reedq") expand_mode = 2 [node name="Seed4" type="TextureRect" parent="HBoxContainer/Queue"] -custom_minimum_size = Vector2(40, 40) +custom_minimum_size = Vector2(50, 50) layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 8 texture = SubResource("NoiseTexture2D_reedq") expand_mode = 2 -[node name="Seed5" type="TextureRect" parent="HBoxContainer/Queue"] -custom_minimum_size = Vector2(40, 40) +[node name="Seed3" type="TextureRect" parent="HBoxContainer/Queue"] +custom_minimum_size = Vector2(50, 50) layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 8 texture = SubResource("NoiseTexture2D_reedq") expand_mode = 2 -[node name="NextSeed" type="TextureRect" parent="HBoxContainer"] -custom_minimum_size = Vector2(80, 80) +[node name="Seed2" type="TextureRect" parent="HBoxContainer/Queue"] +custom_minimum_size = Vector2(50, 50) layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 8 +texture = SubResource("NoiseTexture2D_reedq") +expand_mode = 2 + +[node name="Seed1" type="TextureRect" parent="HBoxContainer/Queue"] +custom_minimum_size = Vector2(50, 50) +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 8 texture = SubResource("NoiseTexture2D_reedq") expand_mode = 2 diff --git a/objects/gui/Stats_area.tscn b/objects/gui/Stats_area.tscn new file mode 100644 index 0000000..ed8cfd3 --- /dev/null +++ b/objects/gui/Stats_area.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=5 format=3 uid="uid://qjwtbyq2c87m"] + +[ext_resource type="Script" path="res://scripts/gui/stats_area.gd" id="1_il8so"] +[ext_resource type="Texture2D" uid="uid://be2uusaqcpcpd" path="res://assets/gradients/Fertility.tres" id="1_qy7fg"] + +[sub_resource type="Gradient" id="Gradient_8q55d"] +interpolation_mode = 1 +offsets = PackedFloat32Array(0, 0.319527, 0.718935) +colors = PackedColorArray(0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1) + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_tb5qg"] +gradient = SubResource("Gradient_8q55d") + +[node name="StatsArea" type="CenterContainer"] +script = ExtResource("1_il8so") + +[node name="Gradient" type="TextureRect" parent="."] +custom_minimum_size = Vector2(100, 10) +layout_mode = 2 +texture = ExtResource("1_qy7fg") +expand_mode = 2 + +[node name="Zone" type="TextureRect" parent="."] +custom_minimum_size = Vector2(100, 10) +layout_mode = 2 +texture = SubResource("GradientTexture1D_tb5qg") +expand_mode = 2 diff --git a/scripts/gui/seed_card.gd b/scripts/gui/seed_card.gd index 7ca96db..21cb044 100644 --- a/scripts/gui/seed_card.gd +++ b/scripts/gui/seed_card.gd @@ -2,8 +2,15 @@ extends Control @onready var nom: Label = $Card/MarginContainer/VBoxContainer/Nom @onready var image: TextureRect = $Card/MarginContainer/VBoxContainer/Image -@onready var besoins: Label = $Card/MarginContainer/VBoxContainer/Besoins -@onready var apports: Label = $Card/MarginContainer/VBoxContainer/Apports + +@onready var waterNeeds : StatsArea = $Card/MarginContainer/VBoxContainer/WaterNeeds/StatsArea +@onready var fertilityNeeds : StatsArea = $Card/MarginContainer/VBoxContainer/FertilityNeeds/StatsArea +@onready var populationNeeds : StatsArea = $Card/MarginContainer/VBoxContainer/Population/StatsArea + +@onready var waterSupply : Label = $Card/MarginContainer/VBoxContainer/WaterSupply/Supply +@onready var fertilitySupply : Label = $Card/MarginContainer/VBoxContainer/FertilitySupply/Supply +@onready var populationSupply : Label = $Card/MarginContainer/VBoxContainer/PopulationSupply/Supply + var planter: Planter @@ -11,5 +18,14 @@ func update_card(): var next_seed_param := planter.get_plant_from_queue() nom.text = next_seed_param.type image.texture = next_seed_param.sprite_frames.get_frame_texture("GROWN", 0) - besoins.text = "w: [" + str(next_seed_param.water_need[0]) + ", " + str(next_seed_param.water_need[1]) + "]\nf: [" + str(next_seed_param.fertility_need[0]) + ", " + str(next_seed_param.fertility_need[1]) + "]" - apports.text = "w: " + str(next_seed_param.water_prod) + "\nf: " + str(next_seed_param.fertility_prod) + + waterNeeds.set_area(next_seed_param.water_need) + fertilityNeeds.set_area(next_seed_param.fertility_need) + var real_presence_need = next_seed_param.presence_need.map( + func(value): return value - GameTerrain.LEVELS_NUMBER/2 + ) + populationNeeds.set_area(real_presence_need) + + waterSupply.text = str(next_seed_param.water_prod) + fertilitySupply.text = str(next_seed_param.fertility_prod) + populationSupply.text = str(next_seed_param.presence_prod) diff --git a/scripts/gui/seed_queue.gd b/scripts/gui/seed_queue.gd index 3997352..3c0554f 100644 --- a/scripts/gui/seed_queue.gd +++ b/scripts/gui/seed_queue.gd @@ -1,7 +1,14 @@ extends Control @onready var next_seed: TextureRect = $HBoxContainer/NextSeed -@onready var queue: HBoxContainer = $HBoxContainer/Queue + +@onready var queue_image := [ + $HBoxContainer/Queue/Seed1, + $HBoxContainer/Queue/Seed2, + $HBoxContainer/Queue/Seed3, + $HBoxContainer/Queue/Seed4, + $HBoxContainer/Queue/Seed5, +] var planter: Planter @@ -9,7 +16,7 @@ func update_queue(): var next_seed_param := planter.get_plant_from_queue() next_seed.texture = next_seed_param.seed_sprite var index := 0 - for child in queue.get_children(): + for child in queue_image: var seed_param := planter.get_plant_from_queue(index) child.texture = seed_param.seed_sprite index += 1 diff --git a/scripts/gui/stats_area.gd b/scripts/gui/stats_area.gd new file mode 100644 index 0000000..924e666 --- /dev/null +++ b/scripts/gui/stats_area.gd @@ -0,0 +1,28 @@ +class_name StatsArea +extends CenterContainer + +@export var gradient : GradientTexture1D + +# Called when the node enters the scene tree for the first time. +func _ready(): + $Gradient.texture = gradient + +func set_area(need : Array): + var zone_grad := Gradient.new() + + zone_grad.interpolation_mode = Gradient.GRADIENT_INTERPOLATE_CONSTANT + + zone_grad.set_color(0, Color.BLACK) + zone_grad.set_color(1, Color.BLACK) + + var min = (float(need[0]) + GameTerrain.LEVELS_NUMBER/2)/GameTerrain.LEVELS_NUMBER + var max = (float(need[1]) + GameTerrain.LEVELS_NUMBER/2)/GameTerrain.LEVELS_NUMBER + + zone_grad.add_point(min, Color(0,0,0,0)) + zone_grad.add_point(max, Color.BLACK) + + var texture := GradientTexture1D.new() + + texture.gradient = zone_grad + + $Zone.texture = texture