From 85cd83286458a21504f93858c5511acd9e59c44c Mon Sep 17 00:00:00 2001 From: Zacharie Guet Date: Sat, 13 Sep 2025 12:48:52 +0200 Subject: [PATCH] =?UTF-8?q?ajouts=20d'objectifs=20sur=20la=20carte,=20d?= =?UTF-8?q?=C3=A9placements=20des=20ic=C3=B4nes=20et=20divers=20changement?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/game_data/scripts/game_data.gd | 8 +- common/game_data/scripts/terrain_data.gd | 56 +++- common/game_info/game_info.gd | 7 + common/game_info/game_info.gd.uid | 1 + {gui/game/assets => common}/icons/bolt.svg | 0 .../assets => common}/icons/bolt.svg.import | 8 +- common/icons/hourglass-empty.svg | 1 + common/icons/hourglass-empty.svg.import | 37 +++ .../assets => common}/icons/left_click.svg | 0 .../icons/left_click.svg.import | 8 +- .../pause/assets => common}/icons/logout.svg | 0 .../assets => common}/icons/logout.svg.import | 8 +- .../{inventory/assets => }/icons/package.svg | 0 .../assets => }/icons/package.svg.import | 8 +- .../assets => common}/icons/player-pause.svg | 0 .../icons/player-pause.svg.import | 8 +- .../assets => common}/icons/player-play.svg | 0 .../icons/player-play.svg.import | 8 +- .../assets => common}/icons/right_click.svg | 0 .../icons/right_click.svg.import | 8 +- .../pause/assets => common}/icons/rotate.svg | 0 .../assets => common}/icons/rotate.svg.import | 8 +- .../assets => }/icons/scuba-diving-tank.svg | 0 .../icons/scuba-diving-tank.svg.import | 6 +- common/icons/seedling.svg | 1 + common/icons/seedling.svg.import | 37 +++ .../{inventory/assets => }/icons/shovel.svg | 0 .../assets => }/icons/shovel.svg.import | 6 +- .../assets => common}/icons/users-group.svg | 0 .../icons/users-group.svg.import | 8 +- common/inventory/resources/items/compost.tres | 4 +- .../resources/items/default_seed.tres | 2 +- .../resources/items/default_shovel.tres | 2 +- .../inventory/resources/items/water_can.tres | 2 +- common/tools/scripts/image_tools.gd | 8 +- .../item_object/item_object_sprite.tscn | 2 +- .../item_object/script/item_object.gd | 9 +- .../machines/compost/compost.tscn | 23 +- .../machines/compost/scripts/compost.gd | 21 +- .../recharge_station/recharge_station.tscn | 20 +- .../objectives/assets/sprites/arbre_mort.png | Bin 0 -> 129708 bytes .../assets/sprites/arbre_mort.png.import | 34 +++ .../assets/sprites/little_plant.png | Bin 0 -> 24030 bytes .../assets/sprites/little_plant.png.import | 34 +++ entities/objectives/objective.tscn | 281 ++++++++++++++++++ .../increase_day_limit_5_reward.tres | 8 + .../resources/loot_5_random_seeds_reward.tres | 8 + .../resources/loot_compost_reward.tres | 21 ++ entities/objectives/scripts/objective.gd | 37 +++ entities/objectives/scripts/objective.gd.uid | 1 + .../objectives/scripts/objective_reward.gd | 14 + .../scripts/objective_reward.gd.uid | 1 + .../rewards/increase_day_limit_reward.gd | 19 ++ .../rewards/increase_day_limit_reward.gd.uid | 1 + .../scripts/rewards/loot_item_reward.gd | 25 ++ .../scripts/rewards/loot_item_reward.gd.uid | 1 + .../scripts/rewards/loot_items_reward.gd.uid | 1 + .../rewards/loot_random_seeds_reward.gd | 26 ++ .../rewards/loot_random_seeds_reward.gd.uid | 1 + .../upgrade_player_max_energy_reward.gd | 19 ++ .../upgrade_player_max_energy_reward.gd.uid | 1 + entities/plants/scripts/plant.gd | 24 +- .../scripts/plant_effects/produce_seeds.gd | 12 +- entities/plants/scripts/plant_type.gd | 2 +- entities/player/player.tscn | 2 +- entities/player/scripts/player.gd | 20 +- game.tscn | 136 --------- gui/game/game_gui.tscn | 13 +- gui/game/pause/pause.tscn | 6 +- gui/game/scripts/game_gui.gd | 4 +- gui/game/win/scripts/win.gd | 6 +- gui/game/win/win.tscn | 4 +- gui/menu/scripts/menu.gd | 1 + gui/pointer/pointer.tscn | 6 +- project.godot | 1 + root.tscn | 2 +- stages/planet_run/planet_run.tscn | 59 ++++ stages/scripts/game.gd | 15 + stages/scripts/game.gd.uid | 1 + stages/terrain/planet/scripts/planet.gd | 94 ++++-- stages/terrain/scripts/terrain.gd | 24 +- 81 files changed, 983 insertions(+), 307 deletions(-) create mode 100644 common/game_info/game_info.gd create mode 100644 common/game_info/game_info.gd.uid rename {gui/game/assets => common}/icons/bolt.svg (100%) rename {gui/game/assets => common}/icons/bolt.svg.import (73%) create mode 100644 common/icons/hourglass-empty.svg create mode 100644 common/icons/hourglass-empty.svg.import rename {gui/pointer/assets => common}/icons/left_click.svg (100%) rename {gui/pointer/assets => common}/icons/left_click.svg.import (72%) rename {gui/game/pause/assets => common}/icons/logout.svg (100%) rename {gui/game/pause/assets => common}/icons/logout.svg.import (72%) rename common/{inventory/assets => }/icons/package.svg (100%) rename common/{inventory/assets => }/icons/package.svg.import (72%) rename {gui/game/pause/assets => common}/icons/player-pause.svg (100%) rename {gui/game/pause/assets => common}/icons/player-pause.svg.import (71%) rename {gui/game/pause/assets => common}/icons/player-play.svg (100%) rename {gui/game/pause/assets => common}/icons/player-play.svg.import (71%) rename {gui/pointer/assets => common}/icons/right_click.svg (100%) rename {gui/pointer/assets => common}/icons/right_click.svg.import (71%) rename {gui/game/pause/assets => common}/icons/rotate.svg (100%) rename {gui/game/pause/assets => common}/icons/rotate.svg.import (72%) rename common/{inventory/assets => }/icons/scuba-diving-tank.svg (100%) rename common/{inventory/assets => }/icons/scuba-diving-tank.svg.import (71%) create mode 100644 common/icons/seedling.svg create mode 100644 common/icons/seedling.svg.import rename common/{inventory/assets => }/icons/shovel.svg (100%) rename common/{inventory/assets => }/icons/shovel.svg.import (74%) rename {gui/menu/assets => common}/icons/users-group.svg (100%) rename {gui/menu/assets => common}/icons/users-group.svg.import (72%) create mode 100644 entities/objectives/assets/sprites/arbre_mort.png create mode 100644 entities/objectives/assets/sprites/arbre_mort.png.import create mode 100644 entities/objectives/assets/sprites/little_plant.png create mode 100644 entities/objectives/assets/sprites/little_plant.png.import create mode 100644 entities/objectives/objective.tscn create mode 100644 entities/objectives/resources/increase_day_limit_5_reward.tres create mode 100644 entities/objectives/resources/loot_5_random_seeds_reward.tres create mode 100644 entities/objectives/resources/loot_compost_reward.tres create mode 100644 entities/objectives/scripts/objective.gd create mode 100644 entities/objectives/scripts/objective.gd.uid create mode 100644 entities/objectives/scripts/objective_reward.gd create mode 100644 entities/objectives/scripts/objective_reward.gd.uid create mode 100644 entities/objectives/scripts/rewards/increase_day_limit_reward.gd create mode 100644 entities/objectives/scripts/rewards/increase_day_limit_reward.gd.uid create mode 100644 entities/objectives/scripts/rewards/loot_item_reward.gd create mode 100644 entities/objectives/scripts/rewards/loot_item_reward.gd.uid create mode 100644 entities/objectives/scripts/rewards/loot_items_reward.gd.uid create mode 100644 entities/objectives/scripts/rewards/loot_random_seeds_reward.gd create mode 100644 entities/objectives/scripts/rewards/loot_random_seeds_reward.gd.uid create mode 100644 entities/objectives/scripts/rewards/upgrade_player_max_energy_reward.gd create mode 100644 entities/objectives/scripts/rewards/upgrade_player_max_energy_reward.gd.uid delete mode 100644 game.tscn create mode 100644 stages/planet_run/planet_run.tscn create mode 100644 stages/scripts/game.gd create mode 100644 stages/scripts/game.gd.uid diff --git a/common/game_data/scripts/game_data.gd b/common/game_data/scripts/game_data.gd index 74b4dab..5e66410 100644 --- a/common/game_data/scripts/game_data.gd +++ b/common/game_data/scripts/game_data.gd @@ -1,5 +1,11 @@ extends Resource class_name GameData -@export var currentTerrainData : TerrainData +@export var current_terrain_data : TerrainData +@export var unlocked_plant_types_path : Array[PlantType] = [ + preload("res://entities/plants/resources/plant_types/champ.tres"), + preload("res://entities/plants/resources/plant_types/chardi.tres"), + preload("res://entities/plants/resources/plant_types/maias.tres"), + preload("res://entities/plants/resources/plant_types/pili.tres"), +] \ No newline at end of file diff --git a/common/game_data/scripts/terrain_data.gd b/common/game_data/scripts/terrain_data.gd index 7a4b866..e4ef364 100644 --- a/common/game_data/scripts/terrain_data.gd +++ b/common/game_data/scripts/terrain_data.gd @@ -1,24 +1,31 @@ extends Resource class_name TerrainData -const TERRAIN_IMAGE_GAME_FACTOR = 40 -const DEFAULT_CONTAMINATION_CENTRAL_ZONE_MAX_SIZE = 300 -const DEFAULT_CONTAMINATION_CENTRAL_ZONE_MIN_SIZE = 50 +const TERRAIN_IMAGE_GAME_FACTOR = 40. +const DEFAULT_CONTAMINATION_CENTRAL_ZONE_MAX_SIZE = 400. +const DEFAULT_CONTAMINATION_CENTRAL_ZONE_MIN_SIZE = 100. +const DEFAULT_TERRAIN_SIZE = Vector2(2000,2000) -@export var terrainSize : Vector2 = Vector2(1000,1000) +@export var terrain_size : Vector2 + +func _init(size : Vector2 = DEFAULT_TERRAIN_SIZE): + terrain_size = size + generate_default_contamination() + +#region ------------------ Contamination ------------------ @export var contamination : Image = null func generate_default_contamination( - central_zone_max_size : int = DEFAULT_CONTAMINATION_CENTRAL_ZONE_MAX_SIZE, - central_zone_min_size : int = DEFAULT_CONTAMINATION_CENTRAL_ZONE_MIN_SIZE, + central_zone_max_size : float = DEFAULT_CONTAMINATION_CENTRAL_ZONE_MAX_SIZE, + central_zone_min_size : float = DEFAULT_CONTAMINATION_CENTRAL_ZONE_MIN_SIZE, ): var noise: Noise = FastNoiseLite.new() noise.seed = randi() noise.noise_type = FastNoiseLite.TYPE_CELLULAR noise.frequency = 0.005 * TERRAIN_IMAGE_GAME_FACTOR - var imageSize = terrainSize / TERRAIN_IMAGE_GAME_FACTOR; + var imageSize = terrain_size / TERRAIN_IMAGE_GAME_FACTOR; var noise_image = noise.get_image( imageSize.x, @@ -68,19 +75,42 @@ func is_in_image(pixel_point : Vector2, image : Image): and pixel_point.y < image.get_height()) func get_contamination(point : Vector2) -> float: - var pixel_point : Vector2 = get_pixel_point(point) + var pixel_point : Vector2i = get_pixel_point(point) if (is_in_image(pixel_point, contamination)): return contamination.get_pixel( - int(round(pixel_point.x)), - int(round(pixel_point.y)) + pixel_point.x, + pixel_point.y ).r return 0 func get_decontamination_coverage() -> float: return ImageTools.get_color_coverage(contamination) -func get_pixel_point(point : Vector2) -> Vector2: - return ( +func get_decontamination_surface() -> float: + return ImageTools.get_color_pixel_count(contamination)/TERRAIN_IMAGE_GAME_FACTOR * 10 + +func get_pixel_point(point : Vector2) -> Vector2i: + return Vector2i( Vector2(point) / float(TERRAIN_IMAGE_GAME_FACTOR) - - Vector2.ONE / 2 ) +#endregion + +#region ------------------ Objectives ------------------ +func generate_objective_rewards(level = 1, amount = 1) -> Array[ObjectiveReward]: + var possible_objective_rewards_path : Array[ObjectiveReward] = [ + IncreaseDayLimitReward.new(randi_range(level + 1, level + 3)), + LootItemReward.new(load("res://common/inventory/resources/items/compost.tres")), + UpgradePlayerMaxEnergyReward.new(), + ] + + var objectives_reward : Array[ObjectiveReward] = [] + + var i = 0 + while i < amount and len(possible_objective_rewards_path) > 0: + var r = possible_objective_rewards_path.pick_random() + possible_objective_rewards_path.erase(r) + objectives_reward.append(r) + i += 1 + + return objectives_reward + diff --git a/common/game_info/game_info.gd b/common/game_info/game_info.gd new file mode 100644 index 0000000..8126840 --- /dev/null +++ b/common/game_info/game_info.gd @@ -0,0 +1,7 @@ +extends Node + +var game_data : GameData + +func _init(): + if not game_data: + game_data = GameData.new() diff --git a/common/game_info/game_info.gd.uid b/common/game_info/game_info.gd.uid new file mode 100644 index 0000000..cda682c --- /dev/null +++ b/common/game_info/game_info.gd.uid @@ -0,0 +1 @@ +uid://dcamb3xjyfqm1 diff --git a/gui/game/assets/icons/bolt.svg b/common/icons/bolt.svg similarity index 100% rename from gui/game/assets/icons/bolt.svg rename to common/icons/bolt.svg diff --git a/gui/game/assets/icons/bolt.svg.import b/common/icons/bolt.svg.import similarity index 73% rename from gui/game/assets/icons/bolt.svg.import rename to common/icons/bolt.svg.import index cb66393..bb83d2e 100644 --- a/gui/game/assets/icons/bolt.svg.import +++ b/common/icons/bolt.svg.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dcgnamu7sb3ov" -path="res://.godot/imported/bolt.svg-71cbe0c7c38f15f305dc23930d585037.ctex" +path="res://.godot/imported/bolt.svg-a559d5e701996c7d105fc68102331434.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://gui/game/assets/icons/bolt.svg" -dest_files=["res://.godot/imported/bolt.svg-71cbe0c7c38f15f305dc23930d585037.ctex"] +source_file="res://common/icons/bolt.svg" +dest_files=["res://.godot/imported/bolt.svg-a559d5e701996c7d105fc68102331434.ctex"] [params] @@ -32,6 +32,6 @@ process/hdr_as_srgb=false process/hdr_clamp_exposure=false process/size_limit=0 detect_3d/compress_to=1 -svg/scale=1.0 +svg/scale=2.0 editor/scale_with_editor_scale=false editor/convert_colors_with_editor_theme=false diff --git a/common/icons/hourglass-empty.svg b/common/icons/hourglass-empty.svg new file mode 100644 index 0000000..59f2585 --- /dev/null +++ b/common/icons/hourglass-empty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/common/icons/hourglass-empty.svg.import b/common/icons/hourglass-empty.svg.import new file mode 100644 index 0000000..afe680e --- /dev/null +++ b/common/icons/hourglass-empty.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxkmn71f8d2hy" +path="res://.godot/imported/hourglass-empty.svg-e7568d697204ad5aa1416ea495c59e73.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/icons/hourglass-empty.svg" +dest_files=["res://.godot/imported/hourglass-empty.svg-e7568d697204ad5aa1416ea495c59e73.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=2.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/gui/pointer/assets/icons/left_click.svg b/common/icons/left_click.svg similarity index 100% rename from gui/pointer/assets/icons/left_click.svg rename to common/icons/left_click.svg diff --git a/gui/pointer/assets/icons/left_click.svg.import b/common/icons/left_click.svg.import similarity index 72% rename from gui/pointer/assets/icons/left_click.svg.import rename to common/icons/left_click.svg.import index 2963be5..c282cf8 100644 --- a/gui/pointer/assets/icons/left_click.svg.import +++ b/common/icons/left_click.svg.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://djb52fosgmv4j" -path="res://.godot/imported/left_click.svg-163ab642e0d1ce655b5b40384b3f1392.ctex" +path="res://.godot/imported/left_click.svg-f515b89b9c254e1eacbc2bef4d187a50.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://gui/pointer/assets/icons/left_click.svg" -dest_files=["res://.godot/imported/left_click.svg-163ab642e0d1ce655b5b40384b3f1392.ctex"] +source_file="res://common/icons/left_click.svg" +dest_files=["res://.godot/imported/left_click.svg-f515b89b9c254e1eacbc2bef4d187a50.ctex"] [params] @@ -32,6 +32,6 @@ process/hdr_as_srgb=false process/hdr_clamp_exposure=false process/size_limit=0 detect_3d/compress_to=1 -svg/scale=1.0 +svg/scale=2.0 editor/scale_with_editor_scale=false editor/convert_colors_with_editor_theme=false diff --git a/gui/game/pause/assets/icons/logout.svg b/common/icons/logout.svg similarity index 100% rename from gui/game/pause/assets/icons/logout.svg rename to common/icons/logout.svg diff --git a/gui/game/pause/assets/icons/logout.svg.import b/common/icons/logout.svg.import similarity index 72% rename from gui/game/pause/assets/icons/logout.svg.import rename to common/icons/logout.svg.import index f40d0a8..43f19a5 100644 --- a/gui/game/pause/assets/icons/logout.svg.import +++ b/common/icons/logout.svg.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dex283rx00fjb" -path="res://.godot/imported/logout.svg-adb7b7ff1fadfa9220dcf694870580b9.ctex" +path="res://.godot/imported/logout.svg-15891d2f0d875a13ef182339fdbc6039.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://gui/game/pause/assets/icons/logout.svg" -dest_files=["res://.godot/imported/logout.svg-adb7b7ff1fadfa9220dcf694870580b9.ctex"] +source_file="res://common/icons/logout.svg" +dest_files=["res://.godot/imported/logout.svg-15891d2f0d875a13ef182339fdbc6039.ctex"] [params] @@ -32,6 +32,6 @@ process/hdr_as_srgb=false process/hdr_clamp_exposure=false process/size_limit=0 detect_3d/compress_to=1 -svg/scale=1.0 +svg/scale=2.0 editor/scale_with_editor_scale=false editor/convert_colors_with_editor_theme=false diff --git a/common/inventory/assets/icons/package.svg b/common/icons/package.svg similarity index 100% rename from common/inventory/assets/icons/package.svg rename to common/icons/package.svg diff --git a/common/inventory/assets/icons/package.svg.import b/common/icons/package.svg.import similarity index 72% rename from common/inventory/assets/icons/package.svg.import rename to common/icons/package.svg.import index 832e572..297a1d7 100644 --- a/common/inventory/assets/icons/package.svg.import +++ b/common/icons/package.svg.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://0xg54agef5gh" -path="res://.godot/imported/package.svg-a9602fd424cfb199cd9405d02663e7df.ctex" +path="res://.godot/imported/package.svg-0d0e7de2f6c04b754487a1f6252ee2a1.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://common/inventory/assets/icons/package.svg" -dest_files=["res://.godot/imported/package.svg-a9602fd424cfb199cd9405d02663e7df.ctex"] +source_file="res://common/icons/package.svg" +dest_files=["res://.godot/imported/package.svg-0d0e7de2f6c04b754487a1f6252ee2a1.ctex"] [params] @@ -32,6 +32,6 @@ process/hdr_as_srgb=false process/hdr_clamp_exposure=false process/size_limit=0 detect_3d/compress_to=1 -svg/scale=1.0 +svg/scale=2.0 editor/scale_with_editor_scale=false editor/convert_colors_with_editor_theme=false diff --git a/gui/game/pause/assets/icons/player-pause.svg b/common/icons/player-pause.svg similarity index 100% rename from gui/game/pause/assets/icons/player-pause.svg rename to common/icons/player-pause.svg diff --git a/gui/game/pause/assets/icons/player-pause.svg.import b/common/icons/player-pause.svg.import similarity index 71% rename from gui/game/pause/assets/icons/player-pause.svg.import rename to common/icons/player-pause.svg.import index 9472fc9..e8af822 100644 --- a/gui/game/pause/assets/icons/player-pause.svg.import +++ b/common/icons/player-pause.svg.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b5cuxgisrsfgt" -path="res://.godot/imported/player-pause.svg-cb8236066c72679196b716c41226079f.ctex" +path="res://.godot/imported/player-pause.svg-8c388309845b649483858ace29fdf914.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://gui/game/pause/assets/icons/player-pause.svg" -dest_files=["res://.godot/imported/player-pause.svg-cb8236066c72679196b716c41226079f.ctex"] +source_file="res://common/icons/player-pause.svg" +dest_files=["res://.godot/imported/player-pause.svg-8c388309845b649483858ace29fdf914.ctex"] [params] @@ -32,6 +32,6 @@ process/hdr_as_srgb=false process/hdr_clamp_exposure=false process/size_limit=0 detect_3d/compress_to=1 -svg/scale=1.0 +svg/scale=2.0 editor/scale_with_editor_scale=false editor/convert_colors_with_editor_theme=false diff --git a/gui/game/pause/assets/icons/player-play.svg b/common/icons/player-play.svg similarity index 100% rename from gui/game/pause/assets/icons/player-play.svg rename to common/icons/player-play.svg diff --git a/gui/game/pause/assets/icons/player-play.svg.import b/common/icons/player-play.svg.import similarity index 71% rename from gui/game/pause/assets/icons/player-play.svg.import rename to common/icons/player-play.svg.import index 970299a..318f9dc 100644 --- a/gui/game/pause/assets/icons/player-play.svg.import +++ b/common/icons/player-play.svg.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://vmsn54d1ptih" -path="res://.godot/imported/player-play.svg-25043c6a392478c90f845ddfdfb35372.ctex" +path="res://.godot/imported/player-play.svg-230ff7b9a6c52930be11873163a0e7de.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://gui/game/pause/assets/icons/player-play.svg" -dest_files=["res://.godot/imported/player-play.svg-25043c6a392478c90f845ddfdfb35372.ctex"] +source_file="res://common/icons/player-play.svg" +dest_files=["res://.godot/imported/player-play.svg-230ff7b9a6c52930be11873163a0e7de.ctex"] [params] @@ -32,6 +32,6 @@ process/hdr_as_srgb=false process/hdr_clamp_exposure=false process/size_limit=0 detect_3d/compress_to=1 -svg/scale=1.0 +svg/scale=2.0 editor/scale_with_editor_scale=false editor/convert_colors_with_editor_theme=false diff --git a/gui/pointer/assets/icons/right_click.svg b/common/icons/right_click.svg similarity index 100% rename from gui/pointer/assets/icons/right_click.svg rename to common/icons/right_click.svg diff --git a/gui/pointer/assets/icons/right_click.svg.import b/common/icons/right_click.svg.import similarity index 71% rename from gui/pointer/assets/icons/right_click.svg.import rename to common/icons/right_click.svg.import index 2c0c48e..13508f7 100644 --- a/gui/pointer/assets/icons/right_click.svg.import +++ b/common/icons/right_click.svg.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://y3083o1fhgn0" -path="res://.godot/imported/right_click.svg-89ed358ede3244ca5dababdd0f091dae.ctex" +path="res://.godot/imported/right_click.svg-1adb207c34017f29e28afdeafbacdd7f.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://gui/pointer/assets/icons/right_click.svg" -dest_files=["res://.godot/imported/right_click.svg-89ed358ede3244ca5dababdd0f091dae.ctex"] +source_file="res://common/icons/right_click.svg" +dest_files=["res://.godot/imported/right_click.svg-1adb207c34017f29e28afdeafbacdd7f.ctex"] [params] @@ -32,6 +32,6 @@ process/hdr_as_srgb=false process/hdr_clamp_exposure=false process/size_limit=0 detect_3d/compress_to=1 -svg/scale=1.0 +svg/scale=2.0 editor/scale_with_editor_scale=false editor/convert_colors_with_editor_theme=false diff --git a/gui/game/pause/assets/icons/rotate.svg b/common/icons/rotate.svg similarity index 100% rename from gui/game/pause/assets/icons/rotate.svg rename to common/icons/rotate.svg diff --git a/gui/game/pause/assets/icons/rotate.svg.import b/common/icons/rotate.svg.import similarity index 72% rename from gui/game/pause/assets/icons/rotate.svg.import rename to common/icons/rotate.svg.import index 536f717..6c7e24a 100644 --- a/gui/game/pause/assets/icons/rotate.svg.import +++ b/common/icons/rotate.svg.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bewr0t1wi8pff" -path="res://.godot/imported/rotate.svg-af6a45b9d3420200a268c1390881e44f.ctex" +path="res://.godot/imported/rotate.svg-8b3d996ae2422076b9f55d10f0455aa8.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://gui/game/pause/assets/icons/rotate.svg" -dest_files=["res://.godot/imported/rotate.svg-af6a45b9d3420200a268c1390881e44f.ctex"] +source_file="res://common/icons/rotate.svg" +dest_files=["res://.godot/imported/rotate.svg-8b3d996ae2422076b9f55d10f0455aa8.ctex"] [params] @@ -32,6 +32,6 @@ process/hdr_as_srgb=false process/hdr_clamp_exposure=false process/size_limit=0 detect_3d/compress_to=1 -svg/scale=1.0 +svg/scale=2.0 editor/scale_with_editor_scale=false editor/convert_colors_with_editor_theme=false diff --git a/common/inventory/assets/icons/scuba-diving-tank.svg b/common/icons/scuba-diving-tank.svg similarity index 100% rename from common/inventory/assets/icons/scuba-diving-tank.svg rename to common/icons/scuba-diving-tank.svg diff --git a/common/inventory/assets/icons/scuba-diving-tank.svg.import b/common/icons/scuba-diving-tank.svg.import similarity index 71% rename from common/inventory/assets/icons/scuba-diving-tank.svg.import rename to common/icons/scuba-diving-tank.svg.import index b6f8eef..443c5a9 100644 --- a/common/inventory/assets/icons/scuba-diving-tank.svg.import +++ b/common/icons/scuba-diving-tank.svg.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bo3o2qf3i20ke" -path="res://.godot/imported/scuba-diving-tank.svg-d6c94087bb8fe7a9f788baf1911a56a2.ctex" +path="res://.godot/imported/scuba-diving-tank.svg-2724f573f5956cc7af7dbc8616ac0aa4.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://common/inventory/assets/icons/scuba-diving-tank.svg" -dest_files=["res://.godot/imported/scuba-diving-tank.svg-d6c94087bb8fe7a9f788baf1911a56a2.ctex"] +source_file="res://common/icons/scuba-diving-tank.svg" +dest_files=["res://.godot/imported/scuba-diving-tank.svg-2724f573f5956cc7af7dbc8616ac0aa4.ctex"] [params] diff --git a/common/icons/seedling.svg b/common/icons/seedling.svg new file mode 100644 index 0000000..9fdba63 --- /dev/null +++ b/common/icons/seedling.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/common/icons/seedling.svg.import b/common/icons/seedling.svg.import new file mode 100644 index 0000000..d0cda3d --- /dev/null +++ b/common/icons/seedling.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b0wy3dbpxbnt7" +path="res://.godot/imported/seedling.svg-86222438bce7bb2a4f266ea315728eb5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/icons/seedling.svg" +dest_files=["res://.godot/imported/seedling.svg-86222438bce7bb2a4f266ea315728eb5.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=2.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/common/inventory/assets/icons/shovel.svg b/common/icons/shovel.svg similarity index 100% rename from common/inventory/assets/icons/shovel.svg rename to common/icons/shovel.svg diff --git a/common/inventory/assets/icons/shovel.svg.import b/common/icons/shovel.svg.import similarity index 74% rename from common/inventory/assets/icons/shovel.svg.import rename to common/icons/shovel.svg.import index b7761dc..5b6a8d8 100644 --- a/common/inventory/assets/icons/shovel.svg.import +++ b/common/icons/shovel.svg.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bf6nw4onkhavr" -path="res://.godot/imported/shovel.svg-f17d484b3a88170abdf08077458176fb.ctex" +path="res://.godot/imported/shovel.svg-094c34e330000cc8ea425d6acf7556bd.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://common/inventory/assets/icons/shovel.svg" -dest_files=["res://.godot/imported/shovel.svg-f17d484b3a88170abdf08077458176fb.ctex"] +source_file="res://common/icons/shovel.svg" +dest_files=["res://.godot/imported/shovel.svg-094c34e330000cc8ea425d6acf7556bd.ctex"] [params] diff --git a/gui/menu/assets/icons/users-group.svg b/common/icons/users-group.svg similarity index 100% rename from gui/menu/assets/icons/users-group.svg rename to common/icons/users-group.svg diff --git a/gui/menu/assets/icons/users-group.svg.import b/common/icons/users-group.svg.import similarity index 72% rename from gui/menu/assets/icons/users-group.svg.import rename to common/icons/users-group.svg.import index 41a5fa7..4ae5eb8 100644 --- a/gui/menu/assets/icons/users-group.svg.import +++ b/common/icons/users-group.svg.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b38hdpsvqcwg8" -path="res://.godot/imported/users-group.svg-65aad5cfa47be548675b81fab7ab9db6.ctex" +path="res://.godot/imported/users-group.svg-e8465fccc5e5f0e575fcbdabcdf52e8b.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://gui/menu/assets/icons/users-group.svg" -dest_files=["res://.godot/imported/users-group.svg-65aad5cfa47be548675b81fab7ab9db6.ctex"] +source_file="res://common/icons/users-group.svg" +dest_files=["res://.godot/imported/users-group.svg-e8465fccc5e5f0e575fcbdabcdf52e8b.ctex"] [params] @@ -32,6 +32,6 @@ process/hdr_as_srgb=false process/hdr_clamp_exposure=false process/size_limit=0 detect_3d/compress_to=1 -svg/scale=1.0 +svg/scale=2.0 editor/scale_with_editor_scale=false editor/convert_colors_with_editor_theme=false diff --git a/common/inventory/resources/items/compost.tres b/common/inventory/resources/items/compost.tres index 57b409f..a97382d 100644 --- a/common/inventory/resources/items/compost.tres +++ b/common/inventory/resources/items/compost.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="Package" load_steps=4 format=3 uid="uid://bya8sm6rm6747"] -[ext_resource type="Texture2D" uid="uid://0xg54agef5gh" path="res://common/inventory/assets/icons/package.svg" id="1_lhhdv"] +[ext_resource type="Texture2D" uid="uid://0xg54agef5gh" path="res://common/icons/package.svg" id="1_lhhdv"] [ext_resource type="Script" uid="uid://b6kubqgq0k7vj" path="res://common/inventory/scripts/items/package.gd" id="1_x02bb"] [ext_resource type="PackedScene" uid="uid://bkwh1ntvgkkrt" path="res://entities/interactables/machines/compost/compost.tscn" id="2_uulso"] @@ -8,7 +8,7 @@ script = ExtResource("1_x02bb") scene = ExtResource("2_uulso") name = "Compost" -description = "The compost allow you to upgrade your max energy when putting in it a certain amount of seeds." +description = "The compost allow you to generate one energy for a certain amount of seeds." icon = ExtResource("1_lhhdv") use_zone_radius = 5 use_energy = 1 diff --git a/common/inventory/resources/items/default_seed.tres b/common/inventory/resources/items/default_seed.tres index a5cdb61..9da5143 100644 --- a/common/inventory/resources/items/default_seed.tres +++ b/common/inventory/resources/items/default_seed.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="Seed" load_steps=3 format=3 uid="uid://lrl2okkhyxmx"] -[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://gui/game/assets/icons/bolt.svg" id="1_dy25s"] +[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="1_dy25s"] [ext_resource type="Script" uid="uid://bypjcvlc15gsm" path="res://common/inventory/scripts/items/seed.gd" id="2_mgcdi"] [resource] diff --git a/common/inventory/resources/items/default_shovel.tres b/common/inventory/resources/items/default_shovel.tres index ef749ce..a9cd28d 100644 --- a/common/inventory/resources/items/default_shovel.tres +++ b/common/inventory/resources/items/default_shovel.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="Shovel" load_steps=3 format=3 uid="uid://ddqalo1k30i5x"] -[ext_resource type="Texture2D" uid="uid://bf6nw4onkhavr" path="res://common/inventory/assets/icons/shovel.svg" id="1_7g3xd"] +[ext_resource type="Texture2D" uid="uid://bf6nw4onkhavr" path="res://common/icons/shovel.svg" id="1_7g3xd"] [ext_resource type="Script" uid="uid://dya38x1h1uiyg" path="res://common/inventory/scripts/items/shovel.gd" id="1_28h2r"] [resource] diff --git a/common/inventory/resources/items/water_can.tres b/common/inventory/resources/items/water_can.tres index 6d48c93..8b1d67e 100644 --- a/common/inventory/resources/items/water_can.tres +++ b/common/inventory/resources/items/water_can.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="Item" load_steps=3 format=3 uid="uid://dbja8xm7ehw1v"] -[ext_resource type="Texture2D" uid="uid://bo3o2qf3i20ke" path="res://common/inventory/assets/icons/scuba-diving-tank.svg" id="1_sy4rh"] +[ext_resource type="Texture2D" uid="uid://bo3o2qf3i20ke" path="res://common/icons/scuba-diving-tank.svg" id="1_sy4rh"] [ext_resource type="Script" uid="uid://bq7admu4ahs5r" path="res://common/inventory/scripts/item.gd" id="2_aikyk"] [resource] diff --git a/common/tools/scripts/image_tools.gd b/common/tools/scripts/image_tools.gd index 1112702..fc76baa 100644 --- a/common/tools/scripts/image_tools.gd +++ b/common/tools/scripts/image_tools.gd @@ -1,13 +1,15 @@ class_name ImageTools -static func get_color_coverage(image: Image, color: Color = Color.WHITE): +static func get_color_coverage(image: Image, color: Color = Color.WHITE) -> float: + return float(get_color_pixel_count(image, color))/(image.get_width()*image.get_height()) + +static func get_color_pixel_count(image: Image, color: Color = Color.WHITE) -> int: var pixel_color_count = 0. for x in range(image.get_width()): for y in range(image.get_height()): if image.get_pixel(x, y) == color: pixel_color_count += 1. - return pixel_color_count/(image.get_width()*image.get_height()) - + return pixel_color_count static func draw_circle(image: Image, center: Vector2i, length: int, color: Color = Color.WHITE): for x in range(image.get_width()): diff --git a/entities/interactables/item_object/item_object_sprite.tscn b/entities/interactables/item_object/item_object_sprite.tscn index c399a11..cd7a07b 100644 --- a/entities/interactables/item_object/item_object_sprite.tscn +++ b/entities/interactables/item_object/item_object_sprite.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=7 format=3 uid="uid://bcj812ox8xv2t"] [ext_resource type="Script" uid="uid://reliyx2pg7kf" path="res://entities/interactables/item_object/script/item_object_sprite.gd" id="1_wing4"] -[ext_resource type="Texture2D" uid="uid://bo3o2qf3i20ke" path="res://common/inventory/assets/icons/scuba-diving-tank.svg" id="2_ng3e4"] +[ext_resource type="Texture2D" uid="uid://bo3o2qf3i20ke" path="res://common/icons/scuba-diving-tank.svg" id="2_ng3e4"] [ext_resource type="Texture2D" uid="uid://c1eiu5ag7lcp8" path="res://entities/interactables/item_object/assets/sprites/shadow.svg" id="2_ng201"] [sub_resource type="Animation" id="Animation_wing4"] diff --git a/entities/interactables/item_object/script/item_object.gd b/entities/interactables/item_object/script/item_object.gd index 7a27cf3..582d338 100644 --- a/entities/interactables/item_object/script/item_object.gd +++ b/entities/interactables/item_object/script/item_object.gd @@ -68,9 +68,10 @@ func generate_sprite() -> ItemObjectSprite: var spriteNode = SPRITE_SCENE.instantiate() as ItemObjectSprite add_child(spriteNode) - spriteNode.apply_texture_to_sprite( - item.icon, - ITEM_SPRITE_SIZE - ) + if item: + spriteNode.apply_texture_to_sprite( + item.icon, + ITEM_SPRITE_SIZE + ) return spriteNode diff --git a/entities/interactables/machines/compost/compost.tscn b/entities/interactables/machines/compost/compost.tscn index 595b1c8..dc23b90 100644 --- a/entities/interactables/machines/compost/compost.tscn +++ b/entities/interactables/machines/compost/compost.tscn @@ -1,7 +1,11 @@ -[gd_scene load_steps=10 format=3 uid="uid://bkwh1ntvgkkrt"] +[gd_scene load_steps=11 format=3 uid="uid://bkwh1ntvgkkrt"] [ext_resource type="Script" uid="uid://dw6jgsasb2fe1" path="res://entities/interactables/machines/compost/scripts/compost.gd" id="1_c0pig"] [ext_resource type="Texture2D" uid="uid://f2rte5jc0psp" path="res://entities/interactables/machines/compost/assets/sprites/compost.svg" id="2_r6435"] +[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="3_akkx7"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_akkx7"] +size = Vector2(66, 84) [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_etofw"] bg_color = Color(0.260098, 0.11665, 0.0419712, 0.231373) @@ -95,14 +99,14 @@ _data = { &"fill": SubResource("Animation_etofw") } -[sub_resource type="RectangleShape2D" id="RectangleShape2D_akkx7"] -size = Vector2(66, 84) - [node name="Compost" type="Area2D"] script = ExtResource("1_c0pig") +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("RectangleShape2D_akkx7") + [node name="Compost" type="Sprite2D" parent="."] -modulate = Color(0.615686, 0.501961, 0.270588, 1) +self_modulate = Color(0.729698, 0.588265, 0.105405, 1) scale = Vector2(0.291262, 0.291262) texture = ExtResource("2_r6435") @@ -117,10 +121,13 @@ theme_override_styles/fill = SubResource("StyleBoxFlat_3ao1n") fill_mode = 3 show_percentage = false +[node name="Bolt" type="Sprite2D" parent="Compost"] +z_index = 1 +position = Vector2(0, 54.9334) +scale = Vector2(2.00278, 2.00278) +texture = ExtResource("3_akkx7") + [node name="AnimationPlayer" type="AnimationPlayer" parent="."] libraries = { &"": SubResource("AnimationLibrary_etofw") } - -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] -shape = SubResource("RectangleShape2D_akkx7") diff --git a/entities/interactables/machines/compost/scripts/compost.gd b/entities/interactables/machines/compost/scripts/compost.gd index 3d31541..6ac1aae 100644 --- a/entities/interactables/machines/compost/scripts/compost.gd +++ b/entities/interactables/machines/compost/scripts/compost.gd @@ -1,22 +1,24 @@ extends Machine class_name Compost -var value_per_seed : float = 0.5 -var fill_value : float = 0. +@export var seed_needed : int = 2 +@export var energy_production : int = 1 +var containing_seed : int = 0 + func _process(_delta): - %ProgressBar.value = lerp(%ProgressBar.value, fill_value * 100, 0.5) + %ProgressBar.value = lerp(%ProgressBar.value, float(containing_seed) / float(seed_needed) * 100, 0.5) func pointer_text(): return "Compost" func interact_text(): - return "Put a seed ("+str(roundi((1-fill_value)/value_per_seed))+" left)" + return "Put a seed ("+str(seed_needed - containing_seed)+" left)" func inspector_info() -> Inspector.Info: return Inspector.Info.new( pointer_text(), - "The compost allow you to upgrade your max energy when putting in it a certain amount of seeds." + "The compost allow you to generate one energy for " + str(seed_needed) + " seeds." ) func can_interact(p : Player) -> bool: @@ -31,12 +33,11 @@ func interact(p : Player) -> bool: p.play_sfx("harvest") p.delete_item(p.inventory.get_item()) - fill_value += value_per_seed - if fill_value >= 1.: + containing_seed += 1 + if containing_seed >= seed_needed: $AnimationPlayer.play("empty") - fill_value = 0 - p.upgrade() - value_per_seed /= 1.5 + containing_seed = 0 + p.recharge(energy_production) else: $AnimationPlayer.play("fill") return true diff --git a/entities/interactables/machines/recharge_station/recharge_station.tscn b/entities/interactables/machines/recharge_station/recharge_station.tscn index 2b908ed..6b66168 100644 --- a/entities/interactables/machines/recharge_station/recharge_station.tscn +++ b/entities/interactables/machines/recharge_station/recharge_station.tscn @@ -1,23 +1,29 @@ -[gd_scene load_steps=4 format=3 uid="uid://d324mlmgls4fs"] +[gd_scene load_steps=5 format=3 uid="uid://d324mlmgls4fs"] [ext_resource type="Script" uid="uid://bsrn3gd2a532q" path="res://entities/interactables/machines/recharge_station/scripts/recharge_station.gd" id="1_2ffjo"] [ext_resource type="Texture2D" uid="uid://c82ljr3in67am" path="res://entities/interactables/machines/recharge_station/assets/sprites/recharge_station.svg" id="2_58ax0"] +[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="3_3xua0"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_bjhct"] radius = 15.0 height = 72.0 [node name="RechargeStation" type="Area2D"] -modulate = Color(0.615686, 0.501961, 0.270588, 1) script = ExtResource("1_2ffjo") metadata/_custom_type_script = "uid://dyprcd68fjstf" -[node name="RechargeStation" type="Sprite2D" parent="."] -position = Vector2(0, -17) -scale = Vector2(0.3, 0.3) -texture = ExtResource("2_58ax0") - [node name="CollisionShape2D" type="CollisionShape2D" parent="."] position = Vector2(1, -1) rotation = -1.5708 shape = SubResource("CapsuleShape2D_bjhct") + +[node name="RechargeStation" type="Sprite2D" parent="."] +self_modulate = Color(0.729412, 0.588235, 0.105882, 1) +position = Vector2(0, -17) +scale = Vector2(0.3, 0.3) +texture = ExtResource("2_58ax0") + +[node name="Bolt" type="Sprite2D" parent="."] +position = Vector2(0, -40) +scale = Vector2(0.375, 0.375) +texture = ExtResource("3_3xua0") diff --git a/entities/objectives/assets/sprites/arbre_mort.png b/entities/objectives/assets/sprites/arbre_mort.png new file mode 100644 index 0000000000000000000000000000000000000000..c945b2306a5740623cc784a80387b6f4cf1c4433 GIT binary patch literal 129708 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�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%0ADCYL< z9W~UAcr_Tgf6P_qIAv{$+>J~!Jfr^@g6}7l3%(eesg~%}H26!>hbnTI__Km1W;Q;e z3sWbcby;Q`&5n*AEb4#HJPGKm>74&2Het)V3?Z4BJRDrS$ah|s_7t;TwUL1*q0GnA z0F0_w!2Ws1mdRgiFUyD285kYZ4ks3AQ@W=tIn-obfLa3?U)A^B(o7eAZPpy!@e`fD zVs8N;+UGqS17kVeHa_-vBW}t-{-{{)N%!WB*l`BTj?uILH0Vo3vx~v3SBt*S`|#FH zd1U)?Fkws7#7S>G{-s5XIPY*LQW3z!^3I2K>s_g#F82A%2st5cE)l!E`+4@kBAaSv zc(%4=1!%>HGx$=B2XS|oH4Kb-jL#O7$fA&?ElvC zT}IBim4ey>UcUd;4ea=^qzC07xW3}dg-d!v;)MVzY>x;1=~8ogOR?ZPgccB7(b#)k z|52w-ZU)C=IQ31muau?^0hdW+1OpeMIydOWHfxeW3xX~l2@0jmN5(dAAFyn(EtDd literal 0 HcmV?d00001 diff --git a/entities/objectives/assets/sprites/little_plant.png.import b/entities/objectives/assets/sprites/little_plant.png.import new file mode 100644 index 0000000..d954e55 --- /dev/null +++ b/entities/objectives/assets/sprites/little_plant.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c4pv2o7crchc0" +path="res://.godot/imported/little_plant.png-e9ed84e9420c629c3911ff755b194643.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://entities/objectives/assets/sprites/little_plant.png" +dest_files=["res://.godot/imported/little_plant.png-e9ed84e9420c629c3911ff755b194643.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/entities/objectives/objective.tscn b/entities/objectives/objective.tscn new file mode 100644 index 0000000..f109562 --- /dev/null +++ b/entities/objectives/objective.tscn @@ -0,0 +1,281 @@ +[gd_scene load_steps=11 format=3 uid="uid://djl2le58ckgdx"] + +[ext_resource type="Script" uid="uid://j8fpi8rd8eyy" path="res://entities/objectives/scripts/objective.gd" id="1_3hqw5"] +[ext_resource type="Texture2D" uid="uid://dbednu7eygtrf" path="res://entities/objectives/assets/sprites/arbre_mort.png" id="2_3hqw5"] +[ext_resource type="Texture2D" uid="uid://c4pv2o7crchc0" path="res://entities/objectives/assets/sprites/little_plant.png" id="3_dulsb"] +[ext_resource type="FontFile" uid="uid://cpnsnrqhfkj3k" path="res://gui/ressources/fonts/spincycle_ot.otf" id="4_6uhem"] +[ext_resource type="Texture2D" uid="uid://bo3o2qf3i20ke" path="res://common/icons/scuba-diving-tank.svg" id="5_6uhem"] + +[sub_resource type="Animation" id="Animation_v08i5"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ArbreMort:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(0.443137, 0.443137, 0.443137, 1)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("LittlePlant:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("LittlePlant:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0.094358, 0.094358)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("LittlePlant2: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("LittlePlant2:scale") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0.094358, 0.094358)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("LittlePlant3:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("LittlePlant3:scale") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0.094358, 0.094358)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("ArbreMort:scale") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0.162791, 0.162791)] +} + +[sub_resource type="Animation" id="Animation_6uhem"] +resource_name = "activate" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ArbreMort:modulate") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.266667), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(0.443137, 0.443137, 0.443137, 1), Color(1, 1, 1, 1)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("LittlePlant:visible") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.0333333), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("LittlePlant:scale") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.433333, 0.6), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(0.094358, 0.094358)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("LittlePlant2:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.0333333), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("LittlePlant2:scale") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0.6, 0.8), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(0.094358, 0.094358)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("LittlePlant3:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0.0333333), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("LittlePlant3:scale") +tracks/6/interp = 2 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0.4, 0.533333), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(0.094358, 0.094358)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("ArbreMort:scale") +tracks/7/interp = 2 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0, 0.1, 0.266667, 0.4), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Vector2(0.162791, 0.162791), Vector2(0.183, 0.093), Vector2(0.123, 0.178), Vector2(0.162791, 0.162791)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_047qm"] +_data = { +&"RESET": SubResource("Animation_v08i5"), +&"activate": SubResource("Animation_6uhem") +} + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_bvagy"] +radius = 24.0 +height = 160.0 + +[sub_resource type="LabelSettings" id="LabelSettings_v08i5"] +font = ExtResource("4_6uhem") +font_size = 18 + +[node name="Objective" type="Area2D"] +script = ExtResource("1_3hqw5") +metadata/_custom_type_script = "uid://d3bk52402ylvl" + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +unique_name_in_owner = true +libraries = { +&"": SubResource("AnimationLibrary_047qm") +} + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(0, -20) +rotation = 1.5708 +shape = SubResource("CapsuleShape2D_bvagy") + +[node name="ArbreMort" type="Sprite2D" parent="."] +modulate = Color(0.443137, 0.443137, 0.443137, 1) +position = Vector2(5, 4) +scale = Vector2(0.162791, 0.162791) +texture = ExtResource("2_3hqw5") +centered = false +offset = Vector2(-627.055, -607.11) + +[node name="LittlePlant" type="Sprite2D" parent="."] +visible = false +position = Vector2(-22, -46) +scale = Vector2(0.094358, 0.094358) +texture = ExtResource("3_dulsb") + +[node name="LittlePlant2" type="Sprite2D" parent="."] +visible = false +position = Vector2(39, -25) +scale = Vector2(0.094358, 0.094358) +texture = ExtResource("3_dulsb") + +[node name="LittlePlant3" type="Sprite2D" parent="."] +visible = false +position = Vector2(-49, -14) +scale = Vector2(0.094358, 0.094358) +texture = ExtResource("3_dulsb") + +[node name="RewardInfo" type="HBoxContainer" parent="."] +unique_name_in_owner = true +offset_left = -67.0 +offset_top = -34.0 +offset_right = 51.0 +offset_bottom = -15.0 +theme_override_constants/separation = 2 +alignment = 1 + +[node name="RewardText" type="Label" parent="RewardInfo"] +unique_name_in_owner = true +layout_mode = 2 +text = "bla" +label_settings = SubResource("LabelSettings_v08i5") + +[node name="RewardIcon" type="TextureRect" parent="RewardInfo"] +unique_name_in_owner = true +layout_mode = 2 +texture = ExtResource("5_6uhem") +expand_mode = 2 diff --git a/entities/objectives/resources/increase_day_limit_5_reward.tres b/entities/objectives/resources/increase_day_limit_5_reward.tres new file mode 100644 index 0000000..3f563cf --- /dev/null +++ b/entities/objectives/resources/increase_day_limit_5_reward.tres @@ -0,0 +1,8 @@ +[gd_resource type="Resource" script_class="IncreaseDayLimitReward" load_steps=2 format=3 uid="uid://b11qyyi8k0mua"] + +[ext_resource type="Script" uid="uid://df6i1hivw4ymn" path="res://entities/objectives/scripts/rewards/increase_day_limit_reward.gd" id="1_gt31s"] + +[resource] +script = ExtResource("1_gt31s") +day_limit_increase = 5 +metadata/_custom_type_script = "uid://df6i1hivw4ymn" diff --git a/entities/objectives/resources/loot_5_random_seeds_reward.tres b/entities/objectives/resources/loot_5_random_seeds_reward.tres new file mode 100644 index 0000000..94ae592 --- /dev/null +++ b/entities/objectives/resources/loot_5_random_seeds_reward.tres @@ -0,0 +1,8 @@ +[gd_resource type="Resource" script_class="LootRandomSeedsReward" load_steps=2 format=3 uid="uid://ca62vcsijbxgc"] + +[ext_resource type="Script" uid="uid://bcdilfb4j7f6d" path="res://entities/objectives/scripts/rewards/loot_random_seeds_reward.gd" id="1_yjhoy"] + +[resource] +script = ExtResource("1_yjhoy") +seeds_number = 5 +metadata/_custom_type_script = "uid://bcdilfb4j7f6d" diff --git a/entities/objectives/resources/loot_compost_reward.tres b/entities/objectives/resources/loot_compost_reward.tres new file mode 100644 index 0000000..2d101b8 --- /dev/null +++ b/entities/objectives/resources/loot_compost_reward.tres @@ -0,0 +1,21 @@ +[gd_resource type="Resource" script_class="LootItemReward" load_steps=6 format=3 uid="uid://clmsn7r2shw6j"] + +[ext_resource type="Script" uid="uid://dva05p817w00f" path="res://entities/objectives/scripts/rewards/loot_item_reward.gd" id="1_dyn78"] +[ext_resource type="Texture2D" uid="uid://0xg54agef5gh" path="res://common/icons/package.svg" id="1_gvg4i"] +[ext_resource type="PackedScene" uid="uid://bkwh1ntvgkkrt" path="res://entities/interactables/machines/compost/compost.tscn" id="2_22dgr"] +[ext_resource type="Script" uid="uid://b6kubqgq0k7vj" path="res://common/inventory/scripts/items/package.gd" id="3_0bwtl"] + +[sub_resource type="Resource" id="Resource_00nan"] +script = ExtResource("3_0bwtl") +scene = ExtResource("2_22dgr") +name = "Compost" +description = "The compost allow you to upgrade your max energy when putting in it a certain amount of seeds." +icon = ExtResource("1_gvg4i") +use_zone_radius = 5 +use_energy = 1 +metadata/_custom_type_script = "uid://b6kubqgq0k7vj" + +[resource] +script = ExtResource("1_dyn78") +item = SubResource("Resource_00nan") +metadata/_custom_type_script = "uid://dva05p817w00f" diff --git a/entities/objectives/scripts/objective.gd b/entities/objectives/scripts/objective.gd new file mode 100644 index 0000000..2dc3c9e --- /dev/null +++ b/entities/objectives/scripts/objective.gd @@ -0,0 +1,37 @@ +extends InspectableEntity +class_name Objective + +const RANDOM_MAX_OBJECTIVE_INTERVAL = 1. + +var completed : bool = false +var planet : Planet +@export var reward : ObjectiveReward = null : + set(r): + reward = r + update_reward_info(r) + +func _ready(): + update_reward_info(reward) + +func pointer_text(): + return "Contamination Objective" + +func inspector_info() -> Inspector.Info: + return Inspector.Info.new( + pointer_text(), + "If the zone around is decontaminated, give the following reward.\n\n" + reward.get_description(), + ) + +func _end_pass_day(): + if planet and not completed: + if not planet.is_there_contamination(global_position): + reward.reward(self) + %AnimationPlayer.play("activate") + %RewardInfo.visible = false + completed = true + +func update_reward_info(r : ObjectiveReward): + if r: + %RewardText.text = r.get_text() + %RewardIcon.texture = r.get_icon() + %RewardInfo.visible = r != null diff --git a/entities/objectives/scripts/objective.gd.uid b/entities/objectives/scripts/objective.gd.uid new file mode 100644 index 0000000..5243287 --- /dev/null +++ b/entities/objectives/scripts/objective.gd.uid @@ -0,0 +1 @@ +uid://j8fpi8rd8eyy diff --git a/entities/objectives/scripts/objective_reward.gd b/entities/objectives/scripts/objective_reward.gd new file mode 100644 index 0000000..fbaa828 --- /dev/null +++ b/entities/objectives/scripts/objective_reward.gd @@ -0,0 +1,14 @@ +extends Resource +class_name ObjectiveReward + +func reward(_objective : Objective): + pass + +func get_icon() -> Texture: + return null + +func get_text() -> String: + return "" + +func get_description() -> String: + return "" \ No newline at end of file diff --git a/entities/objectives/scripts/objective_reward.gd.uid b/entities/objectives/scripts/objective_reward.gd.uid new file mode 100644 index 0000000..b96959b --- /dev/null +++ b/entities/objectives/scripts/objective_reward.gd.uid @@ -0,0 +1 @@ +uid://bsh4b8miag8w1 diff --git a/entities/objectives/scripts/rewards/increase_day_limit_reward.gd b/entities/objectives/scripts/rewards/increase_day_limit_reward.gd new file mode 100644 index 0000000..133b4f7 --- /dev/null +++ b/entities/objectives/scripts/rewards/increase_day_limit_reward.gd @@ -0,0 +1,19 @@ +extends ObjectiveReward +class_name IncreaseDayLimitReward + +@export var day_limit_increase = 5 + +func _init(_day_limit_increase : int): + day_limit_increase = _day_limit_increase + +func reward(objective : Objective): + objective.planet.day_limit += day_limit_increase + +func get_icon() -> Texture: + return preload("res://common/icons/hourglass-empty.svg") + +func get_text() -> String: + return "+"+str(day_limit_increase) + +func get_description() -> String: + return "Increase the day limitation by " + str(day_limit_increase) diff --git a/entities/objectives/scripts/rewards/increase_day_limit_reward.gd.uid b/entities/objectives/scripts/rewards/increase_day_limit_reward.gd.uid new file mode 100644 index 0000000..b5e40a2 --- /dev/null +++ b/entities/objectives/scripts/rewards/increase_day_limit_reward.gd.uid @@ -0,0 +1 @@ +uid://df6i1hivw4ymn diff --git a/entities/objectives/scripts/rewards/loot_item_reward.gd b/entities/objectives/scripts/rewards/loot_item_reward.gd new file mode 100644 index 0000000..278dcac --- /dev/null +++ b/entities/objectives/scripts/rewards/loot_item_reward.gd @@ -0,0 +1,25 @@ +extends ObjectiveReward +class_name LootItemReward + +const REWARD_ITEM_RANDOM_DISPLACEMENT_FACTOR = 100 + +@export var item : Item + +func _init(i : Item): + item = i + +func get_icon() -> Texture: + return preload("res://common/icons/package.svg") + +func get_text() -> String: + return "" + +func get_description() -> String: + return "Loot the following item: " + item.name + "." + +func reward(objective : Objective): + objective.planet.drop_item( + item, + objective.global_position, + REWARD_ITEM_RANDOM_DISPLACEMENT_FACTOR + ) diff --git a/entities/objectives/scripts/rewards/loot_item_reward.gd.uid b/entities/objectives/scripts/rewards/loot_item_reward.gd.uid new file mode 100644 index 0000000..54abc4d --- /dev/null +++ b/entities/objectives/scripts/rewards/loot_item_reward.gd.uid @@ -0,0 +1 @@ +uid://dva05p817w00f diff --git a/entities/objectives/scripts/rewards/loot_items_reward.gd.uid b/entities/objectives/scripts/rewards/loot_items_reward.gd.uid new file mode 100644 index 0000000..871c587 --- /dev/null +++ b/entities/objectives/scripts/rewards/loot_items_reward.gd.uid @@ -0,0 +1 @@ +uid://dot5gfkbm7p6s diff --git a/entities/objectives/scripts/rewards/loot_random_seeds_reward.gd b/entities/objectives/scripts/rewards/loot_random_seeds_reward.gd new file mode 100644 index 0000000..989a41a --- /dev/null +++ b/entities/objectives/scripts/rewards/loot_random_seeds_reward.gd @@ -0,0 +1,26 @@ +extends ObjectiveReward +class_name LootRandomSeedsReward + +const REWARD_SEED_RANDOM_DISPLACEMENT_FACTOR = 100 + +@export var seeds_number : int + +func _init(number : int): + seeds_number = number + +func get_icon() -> Texture: + return preload("res://common/icons/seedling.svg") + +func get_text() -> String: + return str(seeds_number) + +func get_description() -> String: + return "Loot " + str(seeds_number) + " random seeds." + +func reward(objective : Objective): + for i in range(seeds_number): + objective.planet.drop_item( + Seed.new(GameInfo.game_data.unlocked_plant_types_path.pick_random()), + objective.global_position, + REWARD_SEED_RANDOM_DISPLACEMENT_FACTOR + ) \ No newline at end of file diff --git a/entities/objectives/scripts/rewards/loot_random_seeds_reward.gd.uid b/entities/objectives/scripts/rewards/loot_random_seeds_reward.gd.uid new file mode 100644 index 0000000..6665067 --- /dev/null +++ b/entities/objectives/scripts/rewards/loot_random_seeds_reward.gd.uid @@ -0,0 +1 @@ +uid://bcdilfb4j7f6d diff --git a/entities/objectives/scripts/rewards/upgrade_player_max_energy_reward.gd b/entities/objectives/scripts/rewards/upgrade_player_max_energy_reward.gd new file mode 100644 index 0000000..f39f372 --- /dev/null +++ b/entities/objectives/scripts/rewards/upgrade_player_max_energy_reward.gd @@ -0,0 +1,19 @@ +extends ObjectiveReward +class_name UpgradePlayerMaxEnergyReward + +@export var upgrade_amount = 1 + +func _init(_upgrade_amount : int = 1): + upgrade_amount = _upgrade_amount + +func reward(objective : Objective): + objective.planet.player.upgrade_max_energy(upgrade_amount) + +func get_icon() -> Texture: + return preload("res://common/icons/bolt.svg") + +func get_text() -> String: + return "+"+str(upgrade_amount)+" max" + +func get_description() -> String: + return "Increase player max energy by " + str(upgrade_amount) diff --git a/entities/objectives/scripts/rewards/upgrade_player_max_energy_reward.gd.uid b/entities/objectives/scripts/rewards/upgrade_player_max_energy_reward.gd.uid new file mode 100644 index 0000000..1af2ed2 --- /dev/null +++ b/entities/objectives/scripts/rewards/upgrade_player_max_energy_reward.gd.uid @@ -0,0 +1 @@ +uid://cflvw3bfcocnn diff --git a/entities/plants/scripts/plant.gd b/entities/plants/scripts/plant.gd index b78bb4e..2aebd96 100644 --- a/entities/plants/scripts/plant.gd +++ b/entities/plants/scripts/plant.gd @@ -2,7 +2,7 @@ extends InspectableEntity class_name Plant const PLANT_AREA_WIDTH = 20 -const HARVESTED_SEED_POSITION_RANGE = 100 +const HARVESTED_SEED_DISPLACEMENT_FACTOR = 100 const RANDOM_MAX_GROW_INTERVAL = Planet.PASS_DAY_ANIMATION_TIME/2. - 0.1 @@ -88,24 +88,12 @@ func harvest(): var seed_plant_type : PlantType = plant_type if len(plant_type.harvest_types_path): seed_plant_type = load(plant_type.harvest_types_path.pick_random()) - loot_seed(seed_plant_type) + planet.drop_item( + Seed.new(seed_plant_type), + global_position, + HARVESTED_SEED_DISPLACEMENT_FACTOR, + ) plant_sprite.start_harvest_animation() await plant_sprite.harvest_animation_finished queue_free() - -func loot_seed(type : PlantType): - var item_object = planet.drop_item( - Seed.new(type), - global_position - ) - var tween : Tween = get_tree().create_tween() - tween.tween_property( - item_object, - "position", - Vector2( - item_object.position.x + randi()%HARVESTED_SEED_POSITION_RANGE, - item_object.position.y + randi()%HARVESTED_SEED_POSITION_RANGE - ), - 0.2 - ) diff --git a/entities/plants/scripts/plant_effects/produce_seeds.gd b/entities/plants/scripts/plant_effects/produce_seeds.gd index b82ea5b..e22f1a9 100644 --- a/entities/plants/scripts/plant_effects/produce_seeds.gd +++ b/entities/plants/scripts/plant_effects/produce_seeds.gd @@ -5,7 +5,11 @@ class_name ProduceSeedsEffect @export var produce_number : Array[int] = [1] func effect(plant): - for _i in range(produce_number.pick_random()): - if len(produce_types_path): - var seed_plant_type = load(produce_types_path.pick_random()) - plant.loot_seed(seed_plant_type) \ No newline at end of file + for _i in range(produce_number.pick_random()): + if len(produce_types_path): + var seed_plant_type = load(produce_types_path.pick_random()) + plant.planet.drop_item( + Seed.new(seed_plant_type), + plant.global_position, + plant.HARVESTED_SEED_DISPLACEMENT_FACTOR, + ) diff --git a/entities/plants/scripts/plant_type.gd b/entities/plants/scripts/plant_type.gd index bf1efa1..796d9a9 100644 --- a/entities/plants/scripts/plant_type.gd +++ b/entities/plants/scripts/plant_type.gd @@ -14,4 +14,4 @@ class_name PlantType @export var cyclic_effect : PlantEffect @export_file var harvest_types_path : Array[String] = [] -@export var harvest_number : Array[int] = [1,2] +@export var harvest_number : Array[int] = [1,2] \ No newline at end of file diff --git a/entities/player/player.tscn b/entities/player/player.tscn index 567d057..9e9a9f7 100644 --- a/entities/player/player.tscn +++ b/entities/player/player.tscn @@ -3,7 +3,7 @@ [ext_resource type="Script" uid="uid://das7twcy5153p" path="res://entities/player/scripts/player.gd" id="1_abrql"] [ext_resource type="Texture2D" uid="uid://c7ff87jniga5m" path="res://entities/player/assets/sprites/robot.png" id="1_symyc"] [ext_resource type="AudioStream" uid="uid://dfrp66a4isnt6" path="res://entities/player/sounds/dig/dig_1.wav" id="3_gx6sm"] -[ext_resource type="Texture2D" uid="uid://bf6nw4onkhavr" path="res://common/inventory/assets/icons/shovel.svg" id="3_yqrof"] +[ext_resource type="Texture2D" uid="uid://bf6nw4onkhavr" path="res://common/icons/shovel.svg" id="3_yqrof"] [ext_resource type="AudioStream" uid="uid://bdxkvaciw4mb3" path="res://entities/player/sounds/dig/dig_2.wav" id="4_yqrof"] [ext_resource type="AudioStream" uid="uid://llxrlwfccywb" path="res://entities/player/sounds/dig/dig_3.wav" id="5_3wlsy"] [ext_resource type="AudioStream" uid="uid://8nmr5vifkt1f" path="res://entities/player/sounds/harvest/harvest_1.wav" id="6_b2kln"] diff --git a/entities/player/scripts/player.gd b/entities/player/scripts/player.gd index 7c4923e..5599f78 100644 --- a/entities/player/scripts/player.gd +++ b/entities/player/scripts/player.gd @@ -41,7 +41,7 @@ func _start_pass_day(): # Méthode déclenchée par la classe planet func _pass_day(): - recharge() + full_recharge() # Méthode déclenchée par la classe planet func _end_pass_day(): @@ -149,15 +149,19 @@ func use_item(item : Item): if item.is_one_time_use(): delete_item(item) -func upgrade(): - max_energy += 1 - energy += 1 +func upgrade_max_energy(amount = 1): + max_energy += amount upgraded.emit() + player_updated.emit(self) func recharge(amount : int = max_energy): - energy = min(energy + amount, max_energy) + energy = energy + amount + upgraded.emit() -func generate_action_area(radius : int = 0) -> Area2D: +func full_recharge(): + energy = max(energy, max_energy) + +func generate_action_zone(radius : int = 0) -> Area2D: var area2D = Area2D.new() var collision_shape = CollisionShape2D.new() var circle_shape = CircleShape2D.new() @@ -173,13 +177,13 @@ func generate_action_area(radius : int = 0) -> Area2D: func setup_preview_zone(zone_radius : int) -> Area2D: if preview_zone: preview_zone.queue_free() - preview_zone = generate_action_area(zone_radius) + preview_zone = generate_action_zone(zone_radius) return preview_zone func setup_action_zone(zone_position : Vector2, zone_radius : int) -> Area2D: if action_zone: action_zone.queue_free() - action_zone = generate_action_area(zone_radius) + action_zone = generate_action_zone(zone_radius) action_zone.global_position = zone_position return action_zone diff --git a/game.tscn b/game.tscn deleted file mode 100644 index 01ca087..0000000 --- a/game.tscn +++ /dev/null @@ -1,136 +0,0 @@ -[gd_scene load_steps=27 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"] -[ext_resource type="PackedScene" uid="uid://bgvbgeq46wee2" path="res://entities/player/player.tscn" id="2_lc2xo"] -[ext_resource type="PackedScene" uid="uid://v41hfc7haaye" path="res://gui/game/win/win.tscn" id="3_7sc4i"] -[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="Resource" uid="uid://bya8sm6rm6747" path="res://common/inventory/resources/items/compost.tres" id="7_215e1"] -[ext_resource type="Script" uid="uid://bq7admu4ahs5r" path="res://common/inventory/scripts/item.gd" id="7_rvswv"] -[ext_resource type="PackedScene" uid="uid://d324mlmgls4fs" path="res://entities/interactables/machines/recharge_station/recharge_station.tscn" id="8_7sc4i"] -[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/plant_types/chardi.tres" id="9_e36ub"] -[ext_resource type="Script" uid="uid://bypjcvlc15gsm" path="res://common/inventory/scripts/items/seed.gd" id="10_hb5m1"] -[ext_resource type="Resource" uid="uid://dsctivn1vrem2" path="res://entities/plants/resources/plant_types/maias.tres" id="11_x5p1p"] -[ext_resource type="PackedScene" uid="uid://dj7gp3crtg2yt" path="res://entities/camera/camera.tscn" id="12_qhcbd"] -[ext_resource type="Resource" uid="uid://cxrc5wchpqm18" path="res://entities/plants/resources/plant_types/champ.tres" id="15_80cx4"] -[ext_resource type="Resource" uid="uid://c5oxxif3h5yxo" path="res://entities/plants/resources/plant_types/pili.tres" id="16_e8heu"] - -[sub_resource type="AtlasTexture" id="AtlasTexture_qt76e"] -atlas = ExtResource("8_boyg6") -region = Rect2(1140, 345, 141, 128) - -[sub_resource type="Resource" id="Resource_7sc4i"] -script = ExtResource("10_hb5m1") -plant_type = ExtResource("9_e36ub") -name = "Chardi" -description = "This plant remove a lot of contamination around when it becomes mature." -icon = SubResource("AtlasTexture_qt76e") -use_zone_radius = 5 -use_energy = 1 -metadata/_custom_type_script = "uid://bypjcvlc15gsm" - -[sub_resource type="Resource" id="Resource_80cx4"] -script = ExtResource("10_hb5m1") -plant_type = ExtResource("9_e36ub") -name = "Chardi" -description = "This plant remove a lot of contamination around when it becomes mature." -icon = SubResource("AtlasTexture_qt76e") -use_zone_radius = 5 -use_energy = 1 -metadata/_custom_type_script = "uid://bypjcvlc15gsm" - -[sub_resource type="AtlasTexture" id="AtlasTexture_sri3b"] -atlas = ExtResource("8_boyg6") -region = Rect2(1697, 331, 125, 158) - -[sub_resource type="Resource" id="Resource_e8heu"] -script = ExtResource("10_hb5m1") -plant_type = ExtResource("11_x5p1p") -name = "Maias" -description = "This gorgeous flower produce a lot of seeds." -icon = SubResource("AtlasTexture_sri3b") -use_zone_radius = 5 -use_energy = 1 -metadata/_custom_type_script = "uid://bypjcvlc15gsm" - -[sub_resource type="AtlasTexture" id="AtlasTexture_my6by"] -atlas = ExtResource("8_boyg6") -region = Rect2(610, 315, 124, 180) - -[sub_resource type="Resource" id="Resource_rvswv"] -script = ExtResource("10_hb5m1") -plant_type = ExtResource("15_80cx4") -name = "Champ" -description = "When mature, produce a seed every day" -icon = SubResource("AtlasTexture_my6by") -use_zone_radius = 5 -use_energy = 1 -metadata/_custom_type_script = "uid://bypjcvlc15gsm" - -[sub_resource type="AtlasTexture" id="AtlasTexture_kidty"] -atlas = ExtResource("8_boyg6") -region = Rect2(1415, 91, 149, 102) - -[sub_resource type="Resource" id="Resource_boyg6"] -script = ExtResource("10_hb5m1") -plant_type = ExtResource("16_e8heu") -name = "Pili" -description = "Pili slowly decontaminate each day when mature." -icon = SubResource("AtlasTexture_kidty") -use_zone_radius = 5 -use_energy = 1 -metadata/_custom_type_script = "uid://bypjcvlc15gsm" - -[node name="Game" type="Node2D"] - -[node name="CanvasLayer" type="CanvasLayer" parent="."] - -[node name="RootGui" parent="CanvasLayer" instance=ExtResource("1_iotsf")] -metadata/_edit_use_anchors_ = true - -[node name="Pause" parent="CanvasLayer" instance=ExtResource("2_215e1")] -process_mode = 3 -visible = false -z_index = 1000 - -[node name="Win" parent="CanvasLayer" instance=ExtResource("3_7sc4i")] -visible = false - -[node name="Entities" type="Node2D" parent="."] -y_sort_enabled = true - -[node name="Player" parent="Entities" instance=ExtResource("2_lc2xo")] - -[node name="ItemObject" type="Area2D" parent="Entities"] -position = Vector2(0, 129) -script = ExtResource("3_215e1") -item = ExtResource("6_lc2xo") -metadata/_custom_type_script = "uid://dedg615xudpoq" - -[node name="ItemObject2" type="Area2D" parent="Entities"] -position = Vector2(-162, 23) -script = ExtResource("3_215e1") -item = ExtResource("7_215e1") -metadata/_custom_type_script = "uid://dedg615xudpoq" - -[node name="RechargeStation" parent="Entities" instance=ExtResource("8_7sc4i")] -position = Vector2(-1, -217) - -[node name="Planet" parent="." node_paths=PackedStringArray("import_entities_from_node") instance=ExtResource("6_e8heu")] -loot_items = Array[ExtResource("7_rvswv")]([SubResource("Resource_7sc4i"), SubResource("Resource_80cx4"), SubResource("Resource_e8heu"), SubResource("Resource_rvswv"), SubResource("Resource_boyg6")]) -import_entities_from_node = NodePath("../Entities") - -[node name="Camera" parent="." node_paths=PackedStringArray("following") instance=ExtResource("12_qhcbd")] -position = Vector2(2.22, 0) -following = NodePath("../Entities/Player") - -[connection signal="pause_asked" from="CanvasLayer/RootGui" to="CanvasLayer/Pause" method="_on_root_gui_pause_asked"] -[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="pass_day_ended" from="Planet" to="CanvasLayer/RootGui" method="_on_planet_pass_day_ended"] -[connection signal="pass_day_started" from="Planet" to="CanvasLayer/RootGui" method="_on_planet_pass_day_started"] -[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 f81115f..3c70796 100644 --- a/gui/game/game_gui.tscn +++ b/gui/game/game_gui.tscn @@ -3,10 +3,10 @@ [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/ressources/default_theme.tres" id="2_nq5i2"] [ext_resource type="Texture2D" uid="uid://cm3ehinvvj52i" path="res://gui/game/assets/texture/Interface sans boutons.png" id="3_n4kem"] -[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://gui/game/assets/icons/bolt.svg" id="4_k4juk"] +[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="4_k4juk"] [ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="4_ujg5r"] [ext_resource type="PackedScene" uid="uid://d3lff5fui1k0c" path="res://gui/game/inspector/inspector.tscn" id="6_dr1y2"] -[ext_resource type="Texture2D" uid="uid://b5cuxgisrsfgt" path="res://gui/game/pause/assets/icons/player-pause.svg" id="9_2wykm"] +[ext_resource type="Texture2D" uid="uid://b5cuxgisrsfgt" path="res://common/icons/player-pause.svg" id="9_2wykm"] [sub_resource type="Gradient" id="Gradient_id0t5"] interpolation_mode = 1 @@ -279,10 +279,10 @@ stretch_mode = 5 unique_name_in_owner = true layout_mode = 1 anchors_preset = -1 -anchor_left = 0.281899 -anchor_top = 0.384375 -anchor_right = 0.281899 -anchor_bottom = 0.584375 +anchor_left = 0.267062 +anchor_top = 0.453125 +anchor_right = 0.267062 +anchor_bottom = 0.496875 offset_left = -44.0 offset_top = -12.5 offset_right = 44.0 @@ -296,6 +296,7 @@ metadata/_edit_use_anchors_ = true custom_minimum_size = Vector2(36.64, 0) layout_mode = 2 texture = ExtResource("4_k4juk") +expand_mode = 2 stretch_mode = 5 [node name="EnergyCount" type="Label" parent="MarginContainer/PlayerInfo/EnergyInfo"] diff --git a/gui/game/pause/pause.tscn b/gui/game/pause/pause.tscn index a9c2c2d..b4b5eda 100644 --- a/gui/game/pause/pause.tscn +++ b/gui/game/pause/pause.tscn @@ -4,9 +4,9 @@ [ext_resource type="Script" uid="uid://crt2d4m5ba25i" path="res://gui/game/pause/scripts/pause.gd" id="1_he4ox"] [ext_resource type="FontFile" uid="uid://cpnsnrqhfkj3k" path="res://gui/ressources/fonts/spincycle_ot.otf" id="2_8d1kg"] [ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="3_0pdto"] -[ext_resource type="Texture2D" uid="uid://vmsn54d1ptih" path="res://gui/game/pause/assets/icons/player-play.svg" id="5_apjlw"] -[ext_resource type="Texture2D" uid="uid://bewr0t1wi8pff" path="res://gui/game/pause/assets/icons/rotate.svg" id="6_58dya"] -[ext_resource type="Texture2D" uid="uid://dex283rx00fjb" path="res://gui/game/pause/assets/icons/logout.svg" id="7_yj6f1"] +[ext_resource type="Texture2D" uid="uid://vmsn54d1ptih" path="res://common/icons/player-play.svg" id="5_apjlw"] +[ext_resource type="Texture2D" uid="uid://bewr0t1wi8pff" path="res://common/icons/rotate.svg" id="6_58dya"] +[ext_resource type="Texture2D" uid="uid://dex283rx00fjb" path="res://common/icons/logout.svg" id="7_yj6f1"] [sub_resource type="LabelSettings" id="LabelSettings_apjlw"] font = ExtResource("2_8d1kg") diff --git a/gui/game/scripts/game_gui.gd b/gui/game/scripts/game_gui.gd index b814a1f..5cfa703 100644 --- a/gui/game/scripts/game_gui.gd +++ b/gui/game/scripts/game_gui.gd @@ -19,8 +19,8 @@ func _on_day_pass_pressed(): await $AnimationPlayer.animation_finished func _on_planet_updated(planet:Planet): - %DayCount.text = "Day " + str(planet.day) - %DecontaminationCoverage.text = str(roundi(planet.decontamination_coverage * 100)) + "%" + %DayCount.text = "Day " + str(planet.day) + "/" + str(planet.day_limit) + %DecontaminationCoverage.text = str(roundi(planet.decontamination_surface)) + " m2" func _on_player_action_tried_without_energy(): diff --git a/gui/game/win/scripts/win.gd b/gui/game/win/scripts/win.gd index 392e647..91a3f6e 100644 --- a/gui/game/win/scripts/win.gd +++ b/gui/game/win/scripts/win.gd @@ -3,10 +3,10 @@ extends Control func _ready(): visible = false -func win(decontamination_coverage : float): +func win(decontamination_surface : float): visible = true get_tree().paused = true - %WinTitle.text = "Score : " + str(roundi(decontamination_coverage * 100)) + "%" + %WinTitle.text = "Score : " + str(roundi(decontamination_surface)) + " m2" func _on_restart_pressed(): get_tree().reload_current_scene() @@ -16,4 +16,4 @@ func _on_quit_pressed(): func _on_planet_day_limit_exceed(planet : Planet): - win(planet.decontamination_coverage) + win(planet.decontamination_surface) diff --git a/gui/game/win/win.tscn b/gui/game/win/win.tscn index 4ed02d7..f24d8a1 100644 --- a/gui/game/win/win.tscn +++ b/gui/game/win/win.tscn @@ -4,8 +4,8 @@ [ext_resource type="Script" uid="uid://b3wuxv04clyed" path="res://gui/game/win/scripts/win.gd" id="1_sehw2"] [ext_resource type="FontFile" uid="uid://cpnsnrqhfkj3k" path="res://gui/ressources/fonts/spincycle_ot.otf" id="2_sehw2"] [ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="3_0b3c6"] -[ext_resource type="Texture2D" uid="uid://bewr0t1wi8pff" path="res://gui/game/pause/assets/icons/rotate.svg" id="4_8p3aj"] -[ext_resource type="Texture2D" uid="uid://dex283rx00fjb" path="res://gui/game/pause/assets/icons/logout.svg" id="5_j3wid"] +[ext_resource type="Texture2D" uid="uid://bewr0t1wi8pff" path="res://common/icons/rotate.svg" id="4_8p3aj"] +[ext_resource type="Texture2D" uid="uid://dex283rx00fjb" path="res://common/icons/logout.svg" id="5_j3wid"] [sub_resource type="LabelSettings" id="LabelSettings_eq457"] font = ExtResource("2_sehw2") diff --git a/gui/menu/scripts/menu.gd b/gui/menu/scripts/menu.gd index c7366e4..51540a8 100644 --- a/gui/menu/scripts/menu.gd +++ b/gui/menu/scripts/menu.gd @@ -6,4 +6,5 @@ func _ready(): %Version.text = ProjectSettings.get_setting("application/config/version") func _on_start_pressed(): + GameInfo.game_data.current_terrain_data = TerrainData.new() get_tree().change_scene_to_file(start_scene_path) diff --git a/gui/pointer/pointer.tscn b/gui/pointer/pointer.tscn index 38e32e5..880639b 100644 --- a/gui/pointer/pointer.tscn +++ b/gui/pointer/pointer.tscn @@ -3,8 +3,8 @@ [ext_resource type="Script" uid="uid://vhumsfntpqcl" path="res://gui/pointer/scripts/pointer.gd" id="1_1pe2k"] [ext_resource type="Texture2D" uid="uid://bspffyprdywgc" path="res://gui/pointer/assets/cursors/pointer.svg" id="2_q4bvb"] [ext_resource type="AudioStream" uid="uid://bym03qp4n6vep" path="res://gui/pointer/assets/sounds/click.wav" id="3_kj0cm"] -[ext_resource type="Texture2D" uid="uid://djb52fosgmv4j" path="res://gui/pointer/assets/icons/left_click.svg" id="3_pshoq"] -[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://gui/game/assets/icons/bolt.svg" id="4_b4uwv"] +[ext_resource type="Texture2D" uid="uid://djb52fosgmv4j" path="res://common/icons/left_click.svg" id="3_pshoq"] +[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="4_b4uwv"] [ext_resource type="Script" uid="uid://c2en2hc6a7ils" path="res://gui/pointer/scripts/action_zone.gd" id="4_pshoq"] [node name="Pointer" type="Node"] @@ -46,11 +46,13 @@ layout_mode = 2 [node name="MouseImage" type="TextureRect" parent="CanvasLayer/Inspector/Container/Action"] layout_mode = 2 texture = ExtResource("3_pshoq") +expand_mode = 2 [node name="ActionEnergyImage" type="TextureRect" parent="CanvasLayer/Inspector/Container/Action"] unique_name_in_owner = true layout_mode = 2 texture = ExtResource("4_b4uwv") +expand_mode = 2 [node name="ActionText" type="Label" parent="CanvasLayer/Inspector/Container/Action"] unique_name_in_owner = true diff --git a/project.godot b/project.godot index f253d77..d440007 100644 --- a/project.godot +++ b/project.godot @@ -21,6 +21,7 @@ config/icon="uid://df0y0s666ui4h" Pointer="*res://gui/pointer/pointer.tscn" Music="*res://common/music/music.tscn" +GameInfo="*res://common/game_info/game_info.gd" [input] diff --git a/root.tscn b/root.tscn index 73ba0b6..1ae26b0 100644 --- a/root.tscn +++ b/root.tscn @@ -6,7 +6,7 @@ [ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/default_theme.tres" id="4_gd4vy"] [ext_resource type="Texture2D" uid="uid://nx4wxpr6mk8l" path="res://gui/menu/assets/texture/SeedingPlanetsLogo.png" id="5_qw60f"] [ext_resource type="Texture2D" uid="uid://03ijmo6xlytu" path="res://gui/menu/assets/texture/abre1glow.png" id="6_eji0w"] -[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://gui/game/assets/icons/bolt.svg" id="7_qwhpj"] +[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="7_qwhpj"] [ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="8_bf3um"] [node name="Root" type="Node2D"] diff --git a/stages/planet_run/planet_run.tscn b/stages/planet_run/planet_run.tscn new file mode 100644 index 0000000..df35ef1 --- /dev/null +++ b/stages/planet_run/planet_run.tscn @@ -0,0 +1,59 @@ +[gd_scene load_steps=10 format=3 uid="uid://d28cp7a21kwou"] + +[ext_resource type="PackedScene" uid="uid://12nak7amd1uq" path="res://gui/game/game_gui.tscn" id="1_yy1uy"] +[ext_resource type="PackedScene" uid="uid://csiacsndm62ll" path="res://gui/game/pause/pause.tscn" id="2_bt4fd"] +[ext_resource type="PackedScene" uid="uid://v41hfc7haaye" path="res://gui/game/win/win.tscn" id="3_6guxm"] +[ext_resource type="PackedScene" uid="uid://bgvbgeq46wee2" path="res://entities/player/player.tscn" id="4_g33f4"] +[ext_resource type="Script" uid="uid://dedg615xudpoq" path="res://entities/interactables/item_object/script/item_object.gd" id="5_kgrdw"] +[ext_resource type="Resource" uid="uid://ddqalo1k30i5x" path="res://common/inventory/resources/items/default_shovel.tres" id="6_4rjiq"] +[ext_resource type="PackedScene" uid="uid://d324mlmgls4fs" path="res://entities/interactables/machines/recharge_station/recharge_station.tscn" id="7_h4bgy"] +[ext_resource type="PackedScene" uid="uid://tsi5j1uxppa4" path="res://stages/terrain/planet/planet.tscn" id="8_t31p7"] +[ext_resource type="PackedScene" uid="uid://dj7gp3crtg2yt" path="res://entities/camera/camera.tscn" id="16_m18ms"] + +[node name="PlanetRun" type="Node2D"] + +[node name="CanvasLayer" type="CanvasLayer" parent="."] + +[node name="RootGui" parent="CanvasLayer" instance=ExtResource("1_yy1uy")] +metadata/_edit_use_anchors_ = true + +[node name="Pause" parent="CanvasLayer" instance=ExtResource("2_bt4fd")] +process_mode = 3 +visible = false +z_index = 1000 + +[node name="Win" parent="CanvasLayer" instance=ExtResource("3_6guxm")] +visible = false + +[node name="Entities" type="Node2D" parent="."] +y_sort_enabled = true + +[node name="Player" parent="Entities" instance=ExtResource("4_g33f4")] +position = Vector2(0, 13.49) + +[node name="ItemObject" type="Area2D" parent="Entities"] +position = Vector2(0, 129) +script = ExtResource("5_kgrdw") +item = ExtResource("6_4rjiq") +metadata/_custom_type_script = "uid://dedg615xudpoq" + +[node name="RechargeStation" parent="Entities" instance=ExtResource("7_h4bgy")] + +[node name="Planet" parent="." node_paths=PackedStringArray("import_entities_from_node") instance=ExtResource("8_t31p7")] +loot_number = Array[int]([1]) +loot_item_number = Array[int]([1]) +objective_first_distance = 150 +objective_between_distance = 150 +import_entities_from_node = NodePath("../Entities") + +[node name="Camera" parent="." node_paths=PackedStringArray("following") instance=ExtResource("16_m18ms")] +position = Vector2(2.22, 0) +following = NodePath("../Entities/Player") + +[connection signal="pause_asked" from="CanvasLayer/RootGui" to="CanvasLayer/Pause" method="_on_root_gui_pause_asked"] +[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="pass_day_ended" from="Planet" to="CanvasLayer/RootGui" method="_on_planet_pass_day_ended"] +[connection signal="pass_day_started" from="Planet" to="CanvasLayer/RootGui" method="_on_planet_pass_day_started"] +[connection signal="planet_updated" from="Planet" to="CanvasLayer/RootGui" method="_on_planet_updated"] diff --git a/stages/scripts/game.gd b/stages/scripts/game.gd new file mode 100644 index 0000000..c6680ed --- /dev/null +++ b/stages/scripts/game.gd @@ -0,0 +1,15 @@ +extends Node2D +class_name PlanetRun + +@export var planet : Planet +@export var game_data : GameData + +func _ready(): + if not game_data: + game_data = GameData.new() + + if not game_data.current_terrain_data: + game_data.current_terrain_data = TerrainData.new() + + if planet: + planet.instant \ No newline at end of file diff --git a/stages/scripts/game.gd.uid b/stages/scripts/game.gd.uid new file mode 100644 index 0000000..937dd0b --- /dev/null +++ b/stages/scripts/game.gd.uid @@ -0,0 +1 @@ +uid://gn3dt881v5tk diff --git a/stages/terrain/planet/scripts/planet.gd b/stages/terrain/planet/scripts/planet.gd index 57d5e2f..1737561 100644 --- a/stages/terrain/planet/scripts/planet.gd +++ b/stages/terrain/planet/scripts/planet.gd @@ -8,14 +8,19 @@ signal pass_day_proceeded(planet : Planet) signal pass_day_ended(planet : Planet) const PASS_DAY_ANIMATION_TIME : float = 1.5 -const DAY_LIMIT : int = 10 +const DEFAULT_DAY_LIMIT : int = 10 const PLANET_TEXTURE_SCALE : float = 5.0 +const OBJECTIVE_MAX_LEVEL : int = 10 +const OBJECTIVE_MIN_ANGLE_DIFF = PI/2 @export_group("Loot") @export var first_loot_number : int = 3 @export var loot_number : Array[int] = [0,1,2] @export var loot_item_number : Array[int] = [1,2] -@export var loot_items : Array[Item] = [] + +@export_group("Objectives") +@export var objective_first_distance : int = 200 +@export var objective_between_distance : int = 200 @export_group("Textures") @export var background_texture : Texture2D @@ -23,20 +28,43 @@ const PLANET_TEXTURE_SCALE : float = 5.0 @onready var background_sprite : Polygon2D = generate_background_sprite() @onready var contamination_sprite : Polygon2D = generate_contamination_terrain_sprite() -@onready var decontamination_coverage : float = terrainData.get_decontamination_coverage() : +@onready var decontamination_surface : float = terrain_data.get_decontamination_surface() : set(v): - decontamination_coverage = v + print(v) + decontamination_surface = v planet_updated.emit(self) +@onready var objective_scene : PackedScene = preload("res://entities/objectives/objective.tscn") var contamination_texture : ImageTexture var day : int = 1 : set(v): day = v planet_updated.emit(self) +var day_limit = DEFAULT_DAY_LIMIT : + set(v): + day_limit = v + planet_updated.emit(self) +var player : Player func _ready(): planet_updated.emit(self) generate_loot(first_loot_number) + generate_objectives() + + # queue_redraw() + +# func _draw(): +# var factor = 10 +# for x in range(terrain_data.terrain_size.x / factor): +# for y in range(terrain_data.terrain_size.y / factor): +# var point = Vector2(x, y) * factor + +# draw_circle( +# point, +# factor/10, +# Color.BLUE if is_there_contamination(point) else Color.RED, +# true +# ) #region ------------------ Generation ------------------ @@ -53,12 +81,15 @@ func add_entity(e : Node2D, container : Node2D = entityContainer): if "planet" in e: e.planet = self + + if e is Player: + player = e container.add_child(e) func generate_polygon_sprite(order : int = 0) -> Polygon2D: var sprite = Polygon2D.new() - var size = terrainData.terrainSize + var size = terrain_data.terrain_size sprite.polygon = PackedVector2Array([ Vector2(0,0), Vector2(size.x, 0), @@ -82,15 +113,15 @@ func generate_background_sprite() -> Polygon2D: return sprite func generate_contamination_terrain_sprite() -> Polygon2D: - if not terrainData.contamination: - terrainData.generate_default_contamination() + if not terrain_data.contamination: + terrain_data.generate_default_contamination() var sprite :Polygon2D = generate_polygon_sprite(1) - contamination_texture = ImageTexture.create_from_image(terrainData.contamination) + contamination_texture = ImageTexture.create_from_image(terrain_data.contamination) contamination_material.set_shader_parameter("data_texture", contamination_texture) - contamination_material.set_shader_parameter("data_texture_size", terrainData.terrainSize) + contamination_material.set_shader_parameter("data_texture_size", terrain_data.terrain_size) contamination_material.set_shader_parameter("texture_scale", PLANET_TEXTURE_SCALE) sprite.material = contamination_material @@ -117,15 +148,15 @@ func plant( return true func impact_contamination(impact_position : Vector2, impact_radius : int, contamination : bool = false): - terrainData.impact_contamination(impact_position, impact_radius, 0. if contamination else 1.) + terrain_data.impact_contamination(impact_position, impact_radius, 0. if contamination else 1.) if contamination_texture: - contamination_texture.update(terrainData.contamination) + contamination_texture.update(terrain_data.contamination) func is_in_zone(point : Vector2) -> bool: - return terrainData.is_in_image(terrainData.get_pixel_point(point), terrainData.contamination) + return terrain_data.is_in_image(terrain_data.get_pixel_point(point), terrain_data.contamination) func is_there_contamination(point : Vector2) -> bool: - return terrainData.get_contamination(point) < 0.5 + return terrain_data.get_contamination(point) < 0.5 func pass_day(): for e : Node2D in entityContainer.get_children(): @@ -147,23 +178,50 @@ func pass_day(): if e.has_method("_end_pass_day"): e._end_pass_day() - decontamination_coverage = terrainData.get_decontamination_coverage() - if day + 1 > DAY_LIMIT: + decontamination_surface = terrain_data.get_decontamination_surface() + if day + 1 > day_limit: day_limit_exceed.emit(self) func generate_loot(number : int = loot_number.pick_random()): for i in range(number): var loot = UndergroundLoot.new(self) for j in range(loot_item_number.pick_random()): - loot.loot.append(loot_items.pick_random()) + loot.loot.append( + Seed.new(GameInfo.game_data.unlocked_plant_types_path.pick_random()) + ) add_entity(loot) var loot_random_range = UndergroundLoot.LOOTED_ITEM_RANDOM_RANGE loot.global_position = Vector2( - randf_range(loot_random_range, terrainData.terrainSize.x - loot_random_range), - randf_range(loot_random_range, terrainData.terrainSize.y - loot_random_range) + randf_range(loot_random_range, terrain_data.terrain_size.x - loot_random_range), + randf_range(loot_random_range, terrain_data.terrain_size.y - loot_random_range) ) +func generate_objectives(): + var last_objective_angle = 10 + for i in range(OBJECTIVE_MAX_LEVEL): + var objective_rewards : Array[ObjectiveReward] = terrain_data.generate_objective_rewards(i, 2) + + for objective_reward in objective_rewards: + var objective_angle = randf_range(0, PI*2) + while abs(objective_angle - last_objective_angle) < OBJECTIVE_MIN_ANGLE_DIFF: + objective_angle = randf_range(0, PI*2) + + last_objective_angle = objective_angle + + generate_objective( + objective_first_distance + objective_between_distance * i, + objective_angle, + objective_reward, + ) + +func generate_objective(distance : int, angle : float, reward : ObjectiveReward): + var objective : Objective = objective_scene.instantiate() as Objective + add_entity(objective) + objective.reward = reward + + objective.position = Vector2.ONE.rotated(angle) * distance + #endregion diff --git a/stages/terrain/scripts/terrain.gd b/stages/terrain/scripts/terrain.gd index 505d2f6..bf13369 100644 --- a/stages/terrain/scripts/terrain.gd +++ b/stages/terrain/scripts/terrain.gd @@ -5,15 +5,11 @@ const BORDER_WIDTH = 100 @export var import_entities_from_node : Node2D = null -@export var terrainData : TerrainData +@onready var terrain_data : TerrainData = GameInfo.game_data.current_terrain_data if GameInfo.game_data.current_terrain_data else TerrainData.new() @onready var borderLimit : StaticBody2D = create_border_limit() @onready var entityContainer : Node2D = create_entity_container() -func _init(): - if not terrainData: - terrainData = TerrainData.new() - func add_entity(e : Node2D, container : Node2D = entityContainer): if e.get_parent(): e.get_parent().remove_child(e) @@ -23,7 +19,7 @@ func add_entity(e : Node2D, container : Node2D = entityContainer): func create_entity_container() -> Node2D: var container = Node2D.new() container.y_sort_enabled = true - container.position = terrainData.terrainSize/2 + container.position = terrain_data.terrain_size/2 add_child(container) @@ -33,10 +29,22 @@ func create_entity_container() -> Node2D: return container -func drop_item(item: Item, item_position : Vector2) -> ItemObject: +func drop_item(item: Item, item_position : Vector2, random_displacement_factor = 0) -> ItemObject: var item_object = ItemObject.new(item) add_entity(item_object) item_object.global_position = item_position + + if random_displacement_factor: + var displacement_direction = randf_range(0,2*PI) + var displacement = Vector2.ONE.rotated(displacement_direction) * randf_range(0, random_displacement_factor) + var tween : Tween = get_tree().create_tween() + tween.tween_property( + item_object, + "position", + item_object.position + displacement, + 0.2 + ) + return item_object func create_border_limit() -> StaticBody2D: @@ -46,7 +54,7 @@ func create_border_limit() -> StaticBody2D: add_child(staticBody) staticBody.add_child(staticBodyCollision) - var size = terrainData.terrainSize + var size = terrain_data.terrain_size staticBodyCollision.polygon = PackedVector2Array([ Vector2(0,0), Vector2(0, size.y),