From 2f0c5a2be40f61dab878f5fe135ef9e4b5a0f4b7 Mon Sep 17 00:00:00 2001 From: Zacharie Guet Date: Wed, 20 Aug 2025 15:41:27 +0200 Subject: [PATCH] =?UTF-8?q?#39=20ajout=20d'un=20compost=20plus=20des=20ajo?= =?UTF-8?q?uts=20mineurs=20de=20qualit=C3=A9=20de=20vie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/game_data/scripts/terrain_data.gd | 9 +- common/inventory/scripts/item.gd | 3 + .../compost/assets/sprites/compost.svg | 73 +++++++++ .../compost/assets/sprites/compost.svg.import | 37 +++++ entities/interactables/compost/compost.tscn | 129 ++++++++++++++++ .../interactables/compost/scripts/compost.gd | 34 ++++ .../compost/scripts/compost.gd.uid | 1 + .../item_object/item_object.tscn | 2 +- .../interactables/scripts/interactable.gd | 6 + entities/plants/resources/plants/default.tres | 2 +- entities/player/scripts/player.gd | 15 +- game.tscn | 7 +- gui/game/game_gui.tscn | 145 ++++++++++++++++-- gui/game/pause/pause.tscn | 1 + gui/game/scripts/game_gui.gd | 7 +- 15 files changed, 454 insertions(+), 17 deletions(-) create mode 100644 entities/interactables/compost/assets/sprites/compost.svg create mode 100644 entities/interactables/compost/assets/sprites/compost.svg.import create mode 100644 entities/interactables/compost/compost.tscn create mode 100644 entities/interactables/compost/scripts/compost.gd create mode 100644 entities/interactables/compost/scripts/compost.gd.uid diff --git a/common/game_data/scripts/terrain_data.gd b/common/game_data/scripts/terrain_data.gd index 805d54d..851bc6d 100644 --- a/common/game_data/scripts/terrain_data.gd +++ b/common/game_data/scripts/terrain_data.gd @@ -1,13 +1,13 @@ extends Resource class_name TerrainData -const TERRAIN_IMAGE_GAME_FACTOR = 50 +const TERRAIN_IMAGE_GAME_FACTOR = 40 const DEFAULT_CONTAMINATION_CENTRAL_ZONE_MAX_SIZE = 300 const DEFAULT_CONTAMINATION_CENTRAL_ZONE_MIN_SIZE = 50 signal terrain_updated -@export var terrainSize : Vector2 = Vector2(1500,1500) +@export var terrainSize : Vector2 = Vector2(1000,1000) @export var contamination : Image = null @@ -63,7 +63,10 @@ func impact_contamination(position : Vector2, impact_radius : int, to_value : fl ) func get_contamination(point : Vector2) -> float: - var pixel_point : Vector2 = Vector2(point) / float(TERRAIN_IMAGE_GAME_FACTOR) + var pixel_point : Vector2 = ( + Vector2(point) / float(TERRAIN_IMAGE_GAME_FACTOR) + - Vector2.ONE / 2 + ) return contamination.get_pixel( int(round(pixel_point.x)), int(round(pixel_point.y)) diff --git a/common/inventory/scripts/item.gd b/common/inventory/scripts/item.gd index be4e01d..09cc793 100644 --- a/common/inventory/scripts/item.gd +++ b/common/inventory/scripts/item.gd @@ -11,5 +11,8 @@ func is_one_time_use(): func can_use(_player : Player) -> bool: return false +func use_requirement_text() -> String: + return "" + func use(_player : Player) -> bool: return false \ No newline at end of file diff --git a/entities/interactables/compost/assets/sprites/compost.svg b/entities/interactables/compost/assets/sprites/compost.svg new file mode 100644 index 0000000..64b32b5 --- /dev/null +++ b/entities/interactables/compost/assets/sprites/compost.svg @@ -0,0 +1,73 @@ + + + + diff --git a/entities/interactables/compost/assets/sprites/compost.svg.import b/entities/interactables/compost/assets/sprites/compost.svg.import new file mode 100644 index 0000000..c818139 --- /dev/null +++ b/entities/interactables/compost/assets/sprites/compost.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://f2rte5jc0psp" +path="res://.godot/imported/compost.svg-503fc2423ba701b15edd51da5ab01164.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://entities/interactables/compost/assets/sprites/compost.svg" +dest_files=["res://.godot/imported/compost.svg-503fc2423ba701b15edd51da5ab01164.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/entities/interactables/compost/compost.tscn b/entities/interactables/compost/compost.tscn new file mode 100644 index 0000000..0919781 --- /dev/null +++ b/entities/interactables/compost/compost.tscn @@ -0,0 +1,129 @@ +[gd_scene load_steps=10 format=3 uid="uid://bkwh1ntvgkkrt"] + +[ext_resource type="Script" uid="uid://dw6jgsasb2fe1" path="res://entities/interactables/compost/scripts/compost.gd" id="1_1758a"] +[ext_resource type="Texture2D" uid="uid://f2rte5jc0psp" path="res://entities/interactables/compost/assets/sprites/compost.svg" id="2_r6435"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_etofw"] +bg_color = Color(0.260098, 0.11665, 0.0419712, 0.231373) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3ao1n"] +bg_color = Color(0.270222, 0.270222, 0.270222, 1) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_coj8m"] +size = Vector2(77, 92) + +[sub_resource type="Animation" id="Animation_1758a"] +resource_name = "empty" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Compost:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.5), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(0, 12.605), Vector2(0, -24.56), Vector2(0, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Compost:scale") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.1, 0.2, 0.5), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Vector2(0.291262, 0.291262), Vector2(0.291, 0.191), Vector2(0.291, 0.366), Vector2(0.291262, 0.291262)] +} + +[sub_resource type="Animation" id="Animation_r6435"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Compost:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0.291262, 0.291262)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Compost:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 0)] +} + +[sub_resource type="Animation" id="Animation_etofw"] +resource_name = "fill" +length = 0.3 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Compost:scale") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.3), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(0.291262, 0.291262), Vector2(0.291, 0.231), Vector2(0.291262, 0.291262)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_etofw"] +_data = { +&"RESET": SubResource("Animation_r6435"), +&"empty": SubResource("Animation_1758a"), +&"fill": SubResource("Animation_etofw") +} + +[node name="Compost" type="Area2D"] +script = ExtResource("1_1758a") + +[node name="Compost" type="Sprite2D" parent="."] +modulate = Color(0.615686, 0.501961, 0.270588, 1) +scale = Vector2(0.291262, 0.291262) +texture = ExtResource("2_r6435") + +[node name="ProgressBar" type="ProgressBar" parent="Compost"] +unique_name_in_owner = true +offset_left = -62.0 +offset_top = -7.0 +offset_right = 62.0 +offset_bottom = 120.0 +theme_override_styles/background = SubResource("StyleBoxFlat_etofw") +theme_override_styles/fill = SubResource("StyleBoxFlat_3ao1n") +value = 20.0 +fill_mode = 3 +show_percentage = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +visible = false +position = Vector2(-0.5, 2) +shape = SubResource("RectangleShape2D_coj8m") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_etofw") +} diff --git a/entities/interactables/compost/scripts/compost.gd b/entities/interactables/compost/scripts/compost.gd new file mode 100644 index 0000000..1c7af54 --- /dev/null +++ b/entities/interactables/compost/scripts/compost.gd @@ -0,0 +1,34 @@ +extends Interactable +class_name Compost + + +@export var value_per_seed : float = 0.5 + +var fill_value : float = 0. + +func _process(_delta): + %ProgressBar.value = lerp(%ProgressBar.value, fill_value * 100, 0.5) + +func _ready(): + fill_value = 0. + +func can_interact(p : Player) -> bool: + return p.inventory.get_item() and p.inventory.get_item() is Seed + +func requirement_text() -> String: + return "You must have a seed in hand" + +func interact(p : Player) -> bool: + if not can_interact(p): + return false + + p.delete_item() + fill_value += value_per_seed + if fill_value >= 1.: + $AnimationPlayer.play("empty") + fill_value = 0 + p.upgrade() + value_per_seed /= 1.5 + else: + $AnimationPlayer.play("fill") + return true diff --git a/entities/interactables/compost/scripts/compost.gd.uid b/entities/interactables/compost/scripts/compost.gd.uid new file mode 100644 index 0000000..b318c8c --- /dev/null +++ b/entities/interactables/compost/scripts/compost.gd.uid @@ -0,0 +1 @@ +uid://dw6jgsasb2fe1 diff --git a/entities/interactables/item_object/item_object.tscn b/entities/interactables/item_object/item_object.tscn index b1a3331..04b93dd 100644 --- a/entities/interactables/item_object/item_object.tscn +++ b/entities/interactables/item_object/item_object.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=2 format=3 uid="uid://b0ecjfdnvhjjf"] +[gd_scene load_steps=2 format=3 uid="uid://c3uusrlts538q"] [ext_resource type="Script" uid="uid://dedg615xudpoq" path="res://entities/interactables/item_object/script/item_object.gd" id="1_hxea8"] diff --git a/entities/interactables/scripts/interactable.gd b/entities/interactables/scripts/interactable.gd index 03e4c7b..26610c1 100644 --- a/entities/interactables/scripts/interactable.gd +++ b/entities/interactables/scripts/interactable.gd @@ -6,6 +6,12 @@ var available : bool = true func _ready(): printerr("Abstract Interactable class used") +func can_interact(_p : Player) -> bool: + return true + +func interact_requirement_text() -> String: + return "" + func interact(_p : Player) -> bool: printerr("Interact function called on abstract Interactable class") return false diff --git a/entities/plants/resources/plants/default.tres b/entities/plants/resources/plants/default.tres index 64323d5..e204786 100644 --- a/entities/plants/resources/plants/default.tres +++ b/entities/plants/resources/plants/default.tres @@ -27,5 +27,5 @@ growing_texture = ExtResource("1_fp5j6") mature_texture = ExtResource("3_ffarr") mature_effect = SubResource("Resource_q68uy") harvest_types_path = Array[String]([]) -harvest_number = Array[int]([1, 2]) +harvest_number = Array[int]([1, 2, 1]) metadata/_custom_type_script = "uid://jnye5pe1bgqw" diff --git a/entities/player/scripts/player.gd b/entities/player/scripts/player.gd index eeca842..64dc525 100644 --- a/entities/player/scripts/player.gd +++ b/entities/player/scripts/player.gd @@ -3,6 +3,7 @@ class_name Player signal player_updated(player: Player) signal action_tried_without_energy +signal upgraded var planet : Planet # mis à jour par la classe Planet @export var speed = 400 @@ -28,6 +29,12 @@ var can_use_item : bool = false : can_use_item = v if old != can_use_item: player_updated.emit(self) +var can_interact : bool = false : + set(v): + var old = can_interact + can_interact = v + if old != can_interact: + player_updated.emit(self) var energy : int = max_energy : set(v): energy = v @@ -47,11 +54,12 @@ func get_input(): calculate_direction() can_use_item = inventory.get_item() and inventory.get_item().can_use(self) + can_interact = closest_interactable and closest_interactable.can_interact(self) if action_area: action_area.activated = can_use_item if Input.is_action_just_pressed("action"): try_use_item() - if Input.is_action_just_pressed("interact") and closest_interactable: + if Input.is_action_just_pressed("interact") and closest_interactable and can_interact: closest_interactable.interact(self) if Input.is_action_just_pressed("drop") and inventory.get_item(): drop_item() @@ -121,6 +129,11 @@ func remove_action_area(): if (action_area): remove_child(action_area) +func upgrade(): + max_energy += 1 + energy += 1 + upgraded.emit() + func _process(_delta): get_input() move_and_slide() diff --git a/game.tscn b/game.tscn index 879ac4e..d36f919 100644 --- a/game.tscn +++ b/game.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=19 format=3 uid="uid://d28cp7a21kwou"] +[gd_scene load_steps=20 format=3 uid="uid://d28cp7a21kwou"] [ext_resource type="PackedScene" uid="uid://12nak7amd1uq" path="res://gui/game/game_gui.tscn" id="1_iotsf"] [ext_resource type="PackedScene" uid="uid://csiacsndm62ll" path="res://gui/game/pause/pause.tscn" id="2_215e1"] @@ -7,6 +7,7 @@ [ext_resource type="Script" uid="uid://dedg615xudpoq" path="res://entities/interactables/item_object/script/item_object.gd" id="3_215e1"] [ext_resource type="PackedScene" uid="uid://tsi5j1uxppa4" path="res://stages/terrain/planet/planet.tscn" id="6_e8heu"] [ext_resource type="Resource" uid="uid://ddqalo1k30i5x" path="res://common/inventory/resources/items/default_shovel.tres" id="6_lc2xo"] +[ext_resource type="PackedScene" uid="uid://bkwh1ntvgkkrt" path="res://entities/interactables/compost/compost.tscn" id="7_215e1"] [ext_resource type="Script" uid="uid://bq7admu4ahs5r" path="res://common/inventory/scripts/item.gd" id="7_rvswv"] [ext_resource type="Texture2D" uid="uid://pltmnkqd5ut2" path="res://entities/plants/assets/sprites/seeds/grille_seeds.png" id="8_boyg6"] [ext_resource type="Resource" uid="uid://b04vho33bl52b" path="res://entities/plants/resources/plants/default.tres" id="9_e36ub"] @@ -72,6 +73,9 @@ script = ExtResource("3_215e1") item = ExtResource("6_lc2xo") metadata/_custom_type_script = "uid://dedg615xudpoq" +[node name="Compost" parent="Entities" instance=ExtResource("7_215e1")] +position = Vector2(3, 458) + [node name="Planet" parent="." node_paths=PackedStringArray("import_entities_from_node") instance=ExtResource("6_e8heu")] loot_items = Array[ExtResource("7_rvswv")]([SubResource("Resource_lc2xo"), SubResource("Resource_215e1"), SubResource("Resource_7sc4i")]) import_entities_from_node = NodePath("../Entities") @@ -88,5 +92,6 @@ following = NodePath("../Entities/Player") [connection signal="pause_asked" from="CanvasLayer/RootGui" to="CanvasLayer/Pause" method="_on_root_gui_pause_asked"] [connection signal="action_tried_without_energy" from="Entities/Player" to="CanvasLayer/RootGui" method="_on_player_action_tried_without_energy"] [connection signal="player_updated" from="Entities/Player" to="CanvasLayer/RootGui" method="_on_player_updated"] +[connection signal="upgraded" from="Entities/Player" to="CanvasLayer/RootGui" method="_on_player_upgraded"] [connection signal="day_limit_exceed" from="Planet" to="CanvasLayer/Win" method="_on_planet_day_limit_exceed"] [connection signal="planet_updated" from="Planet" to="CanvasLayer/RootGui" method="_on_planet_updated"] diff --git a/gui/game/game_gui.tscn b/gui/game/game_gui.tscn index 37dc651..4e43e22 100644 --- a/gui/game/game_gui.tscn +++ b/gui/game/game_gui.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=18 format=3 uid="uid://12nak7amd1uq"] +[gd_scene load_steps=21 format=3 uid="uid://12nak7amd1uq"] [ext_resource type="Script" uid="uid://cqao7n800qy40" path="res://gui/game/scripts/game_gui.gd" id="1_udau0"] [ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/game/ressources/default_theme.tres" id="2_nq5i2"] @@ -59,6 +59,42 @@ tracks/2/keys = { "update": 0, "values": [-44.0] } +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Effect:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Effect:modulate") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("MarginContainer/PlayerInfo/EnergyInfo:offset_bottom") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [12.5] +} [sub_resource type="Animation" id="Animation_n4kem"] resource_name = "no_energy_left" @@ -70,10 +106,34 @@ tracks/0/path = NodePath("MarginContainer/PlayerInfo/EnergyInfo:offset_left") tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0, 0.0666667, 0.133333, 0.2, 0.266667, 0.333333, 0.5), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), +"times": PackedFloat32Array(0, 0.0333333, 0.1, 0.166667, 0.233333, 0.3, 0.366667, 0.433333, 0.5), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), "update": 0, -"values": [-44.0, -40.0, -44.0, -48.0, -44.0, -40.0, -44.0] +"values": [-44.0, -40.0, -44.0, -48.0, -44.0, -40.0, -44.0, -40.0, -44.0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Effect:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Effect:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.1, 0.266667), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Color(0.866667, 0.152941, 0.337255, 0), Color(0.866667, 0.152941, 0.337255, 0.392157), Color(0.866667, 0.152941, 0.337255, 0)] } [sub_resource type="Animation" id="Animation_k4juk"] @@ -130,14 +190,64 @@ tracks/1/keys = { "values": [false] } +[sub_resource type="Animation" id="Animation_2wykm"] +resource_name = "upgrade" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Effect:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Effect:modulate") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.133333, 0.5), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Color(0.67451, 0.52549, 0.203922, 0), Color(0.67451, 0.52549, 0.203922, 0.572549), Color(0.67451, 0.52549, 0.203922, 0)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("MarginContainer/PlayerInfo/EnergyInfo:offset_bottom") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.233333, 0.5), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [12.5, -32.0, 12.5] +} + [sub_resource type="AnimationLibrary" id="AnimationLibrary_n4kem"] _data = { &"RESET": SubResource("Animation_iyvkh"), &"no_energy_left": SubResource("Animation_n4kem"), &"recharge_fade_in": SubResource("Animation_k4juk"), -&"recharge_fade_out": SubResource("Animation_fovlv") +&"recharge_fade_out": SubResource("Animation_fovlv"), +&"upgrade": SubResource("Animation_2wykm") } +[sub_resource type="Gradient" id="Gradient_2wykm"] +offsets = PackedFloat32Array(0, 0.279476, 1) +colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_id0t5"] +gradient = SubResource("Gradient_2wykm") +fill = 1 +fill_from = Vector2(0.5, 0.5) + [node name="RootGui" type="Control"] layout_mode = 3 anchors_preset = 15 @@ -198,6 +308,7 @@ offset_right = 44.0 offset_bottom = 12.5 grow_horizontal = 2 grow_vertical = 2 +theme_override_constants/separation = 0 metadata/_edit_use_anchors_ = true [node name="Icon" type="TextureRect" parent="MarginContainer/PlayerInfo/EnergyInfo"] @@ -210,7 +321,7 @@ stretch_mode = 5 unique_name_in_owner = true layout_mode = 2 theme = ExtResource("2_nq5i2") -text = "0" +text = "0/3" label_settings = ExtResource("4_ujg5r") horizontal_alignment = 1 vertical_alignment = 1 @@ -297,7 +408,12 @@ theme = ExtResource("2_nq5i2") [node name="Plant" type="Label" parent="MarginContainer/AvailableActions"] visible = false layout_mode = 2 -text = "space/click - Plant Seed" +text = "Space/Click - Plant Seed" + +[node name="Interact" type="Label" parent="MarginContainer/AvailableActions"] +visible = false +layout_mode = 2 +text = "E - Interact" [node name="GetItem" type="Label" parent="MarginContainer/AvailableActions"] visible = false @@ -312,12 +428,12 @@ text = "E - Swap Item" [node name="DropItem" type="Label" parent="MarginContainer/AvailableActions"] visible = false layout_mode = 2 -text = "w - Drop Item" +text = "W - Drop Item" [node name="UseItem" type="Label" parent="MarginContainer/AvailableActions"] visible = false layout_mode = 2 -text = "space/click - Use Item" +text = "Space/Click - Use Item" [node name="TopRightContent" type="HBoxContainer" parent="MarginContainer"] layout_mode = 2 @@ -362,6 +478,17 @@ layout_mode = 0 offset_right = 40.0 offset_bottom = 40.0 +[node name="Effect" type="TextureRect" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = SubResource("GradientTexture2D_id0t5") + [connection signal="button_down" from="GameAction" to="." method="_on_game_action_button_down"] [connection signal="pressed" from="MarginContainer/DayPass" to="." method="_on_day_pass_pressed"] [connection signal="pressed" from="MarginContainer/TopRightContent/Pause" to="." method="_on_pause_pressed"] diff --git a/gui/game/pause/pause.tscn b/gui/game/pause/pause.tscn index b96dc30..2723d62 100644 --- a/gui/game/pause/pause.tscn +++ b/gui/game/pause/pause.tscn @@ -63,6 +63,7 @@ layout_mode = 2 text = "You are a robot who has recently arrived on a barren planet. Find and plant seeds to reduce the contamination. You have limited energy, but can recharge when passing days. You have 10 days to decontaminate as much as possible. +PS: You can compost seeds at the bottom of the map to upgrade max enegy. " horizontal_alignment = 1 diff --git a/gui/game/scripts/game_gui.gd b/gui/game/scripts/game_gui.gd index 7abefce..e650e77 100644 --- a/gui/game/scripts/game_gui.gd +++ b/gui/game/scripts/game_gui.gd @@ -8,10 +8,11 @@ signal day_pass_finished signal pause_asked func _on_player_updated(player:Player): - %EnergyCount.text = str(player.energy) + %EnergyCount.text = str(player.energy) + "/" + str(player.max_energy) %EnergyInfo.modulate = Color.WHITE if player.energy > 0 else Color.RED %AvailableActions/GetItem.visible = player.closest_interactable is ItemObject and player.inventory.get_item() == null + %AvailableActions/Interact.visible = not player.closest_interactable is ItemObject and player.can_interact %AvailableActions/SwapItem.visible = player.closest_interactable is ItemObject and player.inventory.get_item() != null %AvailableActions/DropItem.visible = player.inventory.get_item() != null %AvailableActions/UseItem.visible = player.inventory.get_item() and player.can_use_item and not player.inventory.get_item() is Seed @@ -48,3 +49,7 @@ func _on_player_action_tried_without_energy(): func _on_pause_pressed(): pause_asked.emit() + + +func _on_player_upgraded(): + $AnimationPlayer.play("upgrade")