From 84a2eafe57f8c2fb02985ac6fbb2874d150c8fa2 Mon Sep 17 00:00:00 2001 From: Zacharie Guet Date: Sun, 29 Mar 2026 19:02:33 +0200 Subject: [PATCH] Fix pour l'alpha 1.3.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Correction du bug de collision des chunks (talion qui ne se détruit pas, zone fertile infertile, c'est fini !) * Equilibrage de la difficulté pour le mode infini * Correction de la mutation éphémère (ne donne maitenant des graines qu'à la maturation) --- .../plant_mutation/ephemeral_mutation.gd | 6 +- export_presets.cfg | 2 +- project.godot | 2 +- stages/terrain/region/scripts/chunk.gd | 87 ++++++++++--------- .../region/scripts/region_parameter.gd | 22 +++-- stages/terrain/region/test_chunk.tscn | 50 ++++++++--- 6 files changed, 105 insertions(+), 64 deletions(-) diff --git a/entities/plants/scripts/plant_mutation/ephemeral_mutation.gd b/entities/plants/scripts/plant_mutation/ephemeral_mutation.gd index 2ca1e99..6236d91 100644 --- a/entities/plants/scripts/plant_mutation/ephemeral_mutation.gd +++ b/entities/plants/scripts/plant_mutation/ephemeral_mutation.gd @@ -21,8 +21,10 @@ func get_mutation_description() -> String: func mutate_lifetime(_plant_data: PlantData, lifetime: int) -> int: return lifetime + get_lifetime_change() -func mutate_seed_number(_plant_data: PlantData, seed_number: int): - return seed_number + level + 1 +func mutate_seed_number(plant_data: PlantData, seed_number: int): + if plant_data.get_state() == PlantData.State.MATURE: + return seed_number + level + 1 + return seed_number func get_seed_increase() -> int: return floori((level + 1.0) / 2) diff --git a/export_presets.cfg b/export_presets.cfg index 4829a4d..5ba12f1 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -58,7 +58,7 @@ custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path=".export/win/Seeding The Wasteland.exe" +export_path=".export/steam/content_builder/content/win/Seeding The Wasteland.exe" patches=PackedStringArray() patch_delta_encoding=false patch_delta_compression_level_zstd=19 diff --git a/project.godot b/project.godot index e4d74a7..89807d3 100644 --- a/project.godot +++ b/project.godot @@ -16,7 +16,7 @@ compatibility/default_parent_skeleton_in_mesh_instance_3d=true config/name="Seeding The Wasteland" config/description="Seeding planets is a survival, managment and cosy game in which you play a little gardener robot." -config/version="alpha-1.3" +config/version="alpha-1.3.1" run/main_scene="uid://c5bruelvqbm1k" config/features=PackedStringArray("4.6", "Forward Plus") config/icon="uid://df0y0s666ui4h" diff --git a/stages/terrain/region/scripts/chunk.gd b/stages/terrain/region/scripts/chunk.gd index 50785c5..b69b109 100644 --- a/stages/terrain/region/scripts/chunk.gd +++ b/stages/terrain/region/scripts/chunk.gd @@ -1,3 +1,4 @@ +@tool extends Node2D class_name Chunk @@ -13,7 +14,7 @@ const ROCK_NOISE_FREQUENCY := 0.005 const CRISTAL_NOISE_FREQUENCY := 0.008 const DECONTAMINATION_NOISE_FREQUENCY := 0.008 -const CHUNK_RANDOM_PADDING := 2 +const CHUNK_RANDOM_PADDING := 1 @export var region_data : RegionData @export var chunk_coord : Vector2i @@ -36,18 +37,18 @@ var generation_semaphore : Semaphore var all_tiles : Array[Vector2i] var all_global_tiles : Array[Vector2i] -# @export_tool_button("Update", "Callable") var update_action = func(): -# generation_semaphore.post() -# for c in get_children(): -# c.queue_free() +@export_tool_button("Update", "Callable") var update_action = func(): + generation_semaphore.post() + for c in get_children(): + c.queue_free() -# setup_position() -# # queue_redraw() -# generate() + setup_position() + # queue_redraw() + generate() -# @export_tool_button("Clear", "Callable") var clear_action = func(): -# for c in get_children(): -# c.queue_free() +@export_tool_button("Clear", "Callable") var clear_action = func(): + for c in get_children(): + c.queue_free() func _init( _chunk_coord : Vector2i = Vector2i.ZERO, @@ -100,45 +101,51 @@ func generate(): func calculate_all_tiles() -> Array[Vector2i]: var coords : Array[Vector2i] = [] - for x in range(-CHUNK_RANDOM_PADDING, Region.CHUNK_TILE_SIZE + CHUNK_RANDOM_PADDING): - for y in range(-CHUNK_RANDOM_PADDING, Region.CHUNK_TILE_SIZE + CHUNK_RANDOM_PADDING): + for x in range(-Region.CHUNK_TILE_SIZE, Region.CHUNK_TILE_SIZE * 2): + for y in range(-Region.CHUNK_TILE_SIZE, Region.CHUNK_TILE_SIZE * 2): var coord := Vector2i(x,y) if is_tile_in_chunk(coord): coords.append(coord) return coords func is_tile_in_chunk(coord : Vector2i) -> bool: - var check_select = (chunk_coord.x + chunk_coord.y%2)%2 == 0 - var x := coord.x - var y := coord.y + var tile_value = get_tile_value_from_noise(coord, random_padding_noise) - if not ( - x in range(-CHUNK_RANDOM_PADDING, Region.CHUNK_TILE_SIZE + CHUNK_RANDOM_PADDING) - and y in range(-CHUNK_RANDOM_PADDING, Region.CHUNK_TILE_SIZE + CHUNK_RANDOM_PADDING) + if ( + coord.x > Region.CHUNK_TILE_SIZE + CHUNK_RANDOM_PADDING - 1 + or coord.x < -CHUNK_RANDOM_PADDING + or coord.y > Region.CHUNK_TILE_SIZE + CHUNK_RANDOM_PADDING - 1 + or coord.y < - CHUNK_RANDOM_PADDING ): return false + else: + var possible_chunk_x : Array[int] = [0] + var possible_chunk_y : Array[int] = [0] + + if coord.x >= Region.CHUNK_TILE_SIZE - CHUNK_RANDOM_PADDING: + possible_chunk_x.append(1) + if coord.y >= Region.CHUNK_TILE_SIZE - CHUNK_RANDOM_PADDING: + possible_chunk_y.append(1) + if coord.x < CHUNK_RANDOM_PADDING: + possible_chunk_x.append(-1) + if coord.y < CHUNK_RANDOM_PADDING: + possible_chunk_y.append(-1) + + var possible_chunk : Array[String] = [] + for dir_x in possible_chunk_x: + for dir_y in possible_chunk_y: + possible_chunk.append( + "%d:%d" % [dir_x + chunk_coord.x, dir_y + chunk_coord.y] + ) + possible_chunk.sort() - if not ( - (x < 0 or x >= Region.CHUNK_TILE_SIZE) - and (y < 0 or y >= Region.CHUNK_TILE_SIZE) - ): - if ( - x in range(-CHUNK_RANDOM_PADDING, CHUNK_RANDOM_PADDING) - or x in range(Region.CHUNK_TILE_SIZE - CHUNK_RANDOM_PADDING, Region.CHUNK_TILE_SIZE + CHUNK_RANDOM_PADDING) - or y in range(-CHUNK_RANDOM_PADDING, CHUNK_RANDOM_PADDING) - or y in range(Region.CHUNK_TILE_SIZE - CHUNK_RANDOM_PADDING, Region.CHUNK_TILE_SIZE + CHUNK_RANDOM_PADDING) - ): - var tile_value = get_tile_value_from_noise(Vector2i(x,y), random_padding_noise) - if check_select: - if tile_value >= 0.5: - return true - else : - if tile_value < 0.5: - return true - else: - return true - - return false + var choosen_chunk = possible_chunk[ + floori(tile_value * len(possible_chunk)) + ] + + return ( + choosen_chunk == "%d:%d" % [chunk_coord.x, chunk_coord.y] + ) # Debug diff --git a/stages/terrain/region/scripts/region_parameter.gd b/stages/terrain/region/scripts/region_parameter.gd index c048ea2..b71ca08 100644 --- a/stages/terrain/region/scripts/region_parameter.gd +++ b/stages/terrain/region/scripts/region_parameter.gd @@ -14,14 +14,20 @@ const DEFAULT_START_DECONTAMINATION_ZONE_RADIUS = 3 @export var modifiers : Array[RegionModifier] static func get_objective_by_level(l : int) -> int: - match l: - 0: return 5 - 1: return 8 - 2: return 10 - 3: return 15 - 4: return 20 - 5: return 30 - _: return get_objective_by_level(l-1) + (l-3) * 5 + if GameInfo and GameInfo.game_data.game_mode == GameData.GameMode.STORY: + match l: + 0: return 5 + 1: return 8 + 2: return 10 + 3: return 15 + 4: return 20 + 5: return 30 + _: return get_objective_by_level(l-1) + (l-3) * 5 + else : + match l: + 0: return 8 + 1: return 15 + _: return get_objective_by_level(l-1) + l * 5 func _init( _level = 0, diff --git a/stages/terrain/region/test_chunk.tscn b/stages/terrain/region/test_chunk.tscn index a5b6ebd..baebe5d 100644 --- a/stages/terrain/region/test_chunk.tscn +++ b/stages/terrain/region/test_chunk.tscn @@ -23,12 +23,6 @@ rock_tiles_data = SubResource("Resource_ame7t") decontamination_tiles_data = SubResource("Resource_0rtv3") metadata/_custom_type_script = "uid://cx30nvq8b34lj" -[sub_resource type="FastNoiseLite" id="FastNoiseLite_ct7cr"] -frequency = 0.0071 - -[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_0rtv3"] -noise = SubResource("FastNoiseLite_ct7cr") - [node name="TestChunk" type="Node2D" unique_id=990498648] [node name="Chunk" type="Node2D" parent="." unique_id=709095052] @@ -37,25 +31,57 @@ region_data = SubResource("Resource_tiw8g") metadata/_custom_type_script = "uid://d2ixbaa2uqlv4" [node name="Chunk2" type="Node2D" parent="." unique_id=509661921] -position = Vector2(1280, 0) +position = Vector2(640, 0) script = ExtResource("1_mhr83") region_data = SubResource("Resource_tiw8g") chunk_coord = Vector2i(1, 0) metadata/_custom_type_script = "uid://d2ixbaa2uqlv4" [node name="Chunk3" type="Node2D" parent="." unique_id=1505202284] -position = Vector2(0, 1280) +position = Vector2(1280, 0) +script = ExtResource("1_mhr83") +region_data = SubResource("Resource_tiw8g") +chunk_coord = Vector2i(2, 0) +metadata/_custom_type_script = "uid://d2ixbaa2uqlv4" + +[node name="Chunk4" type="Node2D" parent="." unique_id=774217732] +position = Vector2(0, 640) script = ExtResource("1_mhr83") region_data = SubResource("Resource_tiw8g") chunk_coord = Vector2i(0, 1) metadata/_custom_type_script = "uid://d2ixbaa2uqlv4" -[node name="Chunk4" type="Node2D" parent="." unique_id=774217732] -position = Vector2(1280, 1280) +[node name="Chunk5" type="Node2D" parent="." unique_id=653124103] +position = Vector2(640, 640) script = ExtResource("1_mhr83") region_data = SubResource("Resource_tiw8g") chunk_coord = Vector2i(1, 1) metadata/_custom_type_script = "uid://d2ixbaa2uqlv4" -[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1962434767] -texture = SubResource("NoiseTexture2D_0rtv3") +[node name="Chunk6" type="Node2D" parent="." unique_id=1783819673] +position = Vector2(1280, 640) +script = ExtResource("1_mhr83") +region_data = SubResource("Resource_tiw8g") +chunk_coord = Vector2i(2, 1) +metadata/_custom_type_script = "uid://d2ixbaa2uqlv4" + +[node name="Chunk7" type="Node2D" parent="." unique_id=701583017] +position = Vector2(0, 1280) +script = ExtResource("1_mhr83") +region_data = SubResource("Resource_tiw8g") +chunk_coord = Vector2i(0, 2) +metadata/_custom_type_script = "uid://d2ixbaa2uqlv4" + +[node name="Chunk8" type="Node2D" parent="." unique_id=1149469796] +position = Vector2(640, 1280) +script = ExtResource("1_mhr83") +region_data = SubResource("Resource_tiw8g") +chunk_coord = Vector2i(1, 2) +metadata/_custom_type_script = "uid://d2ixbaa2uqlv4" + +[node name="Chunk9" type="Node2D" parent="." unique_id=882201367] +position = Vector2(1280, 1280) +script = ExtResource("1_mhr83") +region_data = SubResource("Resource_tiw8g") +chunk_coord = Vector2i(2, 2) +metadata/_custom_type_script = "uid://d2ixbaa2uqlv4"