diff --git a/common/game_data/scripts/progression_data.gd b/common/game_data/scripts/progression_data.gd index 9b98b40..9629074 100644 --- a/common/game_data/scripts/progression_data.gd +++ b/common/game_data/scripts/progression_data.gd @@ -45,7 +45,10 @@ func get_all_mutations() -> Array[PlantMutation]: ErmitMutation.new(), TropicalMutation.new(), RhizomeMutation.new(), - SpontaneousMutation.new() + SpontaneousMutation.new(), + SaviorMutation.new(), + AdaptiveMutation.new(), + ResistantMutation.new(), ] func get_all_artifacts() -> Array[Artefact]: diff --git a/common/icons/brand-tiktok.svg b/common/icons/brand-tiktok.svg new file mode 100644 index 0000000..ecc91eb --- /dev/null +++ b/common/icons/brand-tiktok.svg @@ -0,0 +1,23 @@ + + + + + + diff --git a/common/icons/brand-tiktok.svg.import b/common/icons/brand-tiktok.svg.import new file mode 100644 index 0000000..7a447ac --- /dev/null +++ b/common/icons/brand-tiktok.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dcpi3j7568ssj" +path="res://.godot/imported/brand-tiktok.svg-90d59fe4c9acbda3dd44d01df8d28aaf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/icons/brand-tiktok.svg" +dest_files=["res://.godot/imported/brand-tiktok.svg-90d59fe4c9acbda3dd44d01df8d28aaf.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/icons/brand-youtube.svg b/common/icons/brand-youtube.svg new file mode 100644 index 0000000..e1b265a --- /dev/null +++ b/common/icons/brand-youtube.svg @@ -0,0 +1,23 @@ + + + + + + diff --git a/common/icons/brand-youtube.svg.import b/common/icons/brand-youtube.svg.import new file mode 100644 index 0000000..c7f5d7e --- /dev/null +++ b/common/icons/brand-youtube.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://r5xl8pwfnxwj" +path="res://.godot/imported/brand-youtube.svg-31f5c2fee0d5c1adf44bc13b41fe4ea0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/icons/brand-youtube.svg" +dest_files=["res://.godot/imported/brand-youtube.svg-31f5c2fee0d5c1adf44bc13b41fe4ea0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/icons/lifebuoy.svg b/common/icons/lifebuoy.svg new file mode 100644 index 0000000..3a5c82b --- /dev/null +++ b/common/icons/lifebuoy.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + diff --git a/common/icons/lifebuoy.svg.import b/common/icons/lifebuoy.svg.import new file mode 100644 index 0000000..c9b8864 --- /dev/null +++ b/common/icons/lifebuoy.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bu7t6am6rptlw" +path="res://.godot/imported/lifebuoy.svg-cc678597b00928806b7d9adfb55d35f6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/icons/lifebuoy.svg" +dest_files=["res://.godot/imported/lifebuoy.svg-cc678597b00928806b7d9adfb55d35f6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/scene_manager/scripts/scenes/credits_scene.gd b/common/scene_manager/scripts/scenes/credits_scene.gd new file mode 100644 index 0000000..bcdece5 --- /dev/null +++ b/common/scene_manager/scripts/scenes/credits_scene.gd @@ -0,0 +1,11 @@ +extends Scene +class_name CreditsScene + +func get_scene_id() -> String: + return "CREDITS" + +func get_scene_path() -> String: + return "res://gui/credits/credits.tscn" + +func is_needed_to_be_saved() -> bool: + return false \ No newline at end of file diff --git a/common/scene_manager/scripts/scenes/credits_scene.gd.uid b/common/scene_manager/scripts/scenes/credits_scene.gd.uid new file mode 100644 index 0000000..bcbf015 --- /dev/null +++ b/common/scene_manager/scripts/scenes/credits_scene.gd.uid @@ -0,0 +1 @@ +uid://c1a1t8k7b4nny diff --git a/common/steam_connection/steam_connection.gd b/common/steam_connection/steam_connection.gd index 251c1f7..535ee2d 100644 --- a/common/steam_connection/steam_connection.gd +++ b/common/steam_connection/steam_connection.gd @@ -19,7 +19,7 @@ const ACH_STW_HIT_30_INFINITE="STW_HIT_30_INFINITE" func unlock_achievement(achivement_name : String): if Steam.isSteamRunning(): var status = Steam.getAchievement(achivement_name) - print("Steam Achievement %s" %achivement_name) + print_verbose("Steam Achievement %s" %achivement_name) if status.has("ret") and status.ret and not status.achieved: Steam.setAchievement(achivement_name) Steam.storeStats() \ No newline at end of file diff --git a/entities/interactables/truck/recharge/scripts/truck_recharge.gd b/entities/interactables/truck/recharge/scripts/truck_recharge.gd index 5612a26..580f5d6 100644 --- a/entities/interactables/truck/recharge/scripts/truck_recharge.gd +++ b/entities/interactables/truck/recharge/scripts/truck_recharge.gd @@ -11,7 +11,9 @@ func update(): else Color.RED ) %EnergyText.text = str(region.data.charges) if not region.data.pass_day_ended.is_connected(update): - region.data.pass_day_ended.connect(update) + region.data.pass_day_ended.connect( + func (_data): update() + ) func can_interact(_p : Player) -> bool: return ( diff --git a/entities/plants/scripts/plant.gd b/entities/plants/scripts/plant.gd index a007366..39caf2f 100644 --- a/entities/plants/scripts/plant.gd +++ b/entities/plants/scripts/plant.gd @@ -131,11 +131,9 @@ func harvest(): if do_produce_seeds: for i in range(data.get_seed_number()): await produce_seed() - if data.get_state() == PlantData.State.MATURE: for m in data.mutations: m._start_harvested_effect(self) - harvested = true plant_sprite.start_harvest_animation() diff --git a/entities/plants/scripts/plant_data.gd b/entities/plants/scripts/plant_data.gd index bd9a847..933c2a0 100644 --- a/entities/plants/scripts/plant_data.gd +++ b/entities/plants/scripts/plant_data.gd @@ -17,6 +17,7 @@ enum State {PLANTED, GROWING, MATURE, DEAD} var decontamination_area_factor = 0. var nearby_plants : Array[PlantData] +var region_data : RegionData func _init( _position: Vector2 = Vector2.ZERO, @@ -149,7 +150,14 @@ func get_score_buff() -> int: buff = m.mutate_score_buff(self, buff) return buff + +func get_mutation_probability_boost() -> float: + var boost = 0 + + for m in mutations: + boost = m.mutate_mutation_probability_boost(self, boost) + return boost func disappear(): disappeared.emit(self ) diff --git a/entities/plants/scripts/plant_mutation.gd b/entities/plants/scripts/plant_mutation.gd index 817d944..808ff16 100644 --- a/entities/plants/scripts/plant_mutation.gd +++ b/entities/plants/scripts/plant_mutation.gd @@ -18,6 +18,9 @@ func get_icon() -> Texture: func get_base_rarity() -> int: return 0 +func get_max_rarity() -> int: + return MAX_RARITY + @abstract func get_mutation_id() -> String func get_mutation_name() -> String: @@ -31,6 +34,9 @@ func mutate_plant_data(_plant_data: PlantData): func nullify_score(_plant_data: PlantData) -> bool: return false +func allow_planting_on_decontamined_terrain(_seed : Seed) -> bool: + return false + func mutate_score(_plant_data: PlantData, score: int) -> int: return score @@ -61,6 +67,9 @@ func mutate_seed_buff(_plant_data: PlantData, seed_buff : int) -> int: func mutate_score_buff(_plant_data: PlantData, score_buff : int) -> int: return score_buff +func mutate_mutation_probability_boost(_plant_data: PlantData, mutation_probability_boost : int) -> float: + return mutation_probability_boost + func _start_planted_effect(_plant: Plant): pass @@ -83,7 +92,7 @@ func get_rarity() -> int: return get_base_rarity() + level - 1 func is_max_level() -> bool: - return get_base_rarity() + level < MAX_RARITY + return get_base_rarity() + level < get_max_rarity() func card_info() -> CardInfo: var info = CardInfo.new( diff --git a/entities/plants/scripts/plant_mutation/adaptive_mutation.gd b/entities/plants/scripts/plant_mutation/adaptive_mutation.gd new file mode 100644 index 0000000..9157bb7 --- /dev/null +++ b/entities/plants/scripts/plant_mutation/adaptive_mutation.gd @@ -0,0 +1,19 @@ +extends PlantMutation +class_name AdaptiveMutation + +func get_icon() -> Texture: + return preload("res://common/icons/dna.svg") + +func get_mutation_id() -> String: + return "ADAPTIVE" + +func get_base_rarity() -> int: + return 0 + +func get_mutation_description() -> String: + return tr("ADAPTIVE_EFFECT_TEXT").format({ + "mutation_probability_boost": get_mutation_probability_boost(), + }) + +func get_mutation_probability_boost()->float: + return level * 0.05 diff --git a/entities/plants/scripts/plant_mutation/adaptive_mutation.gd.uid b/entities/plants/scripts/plant_mutation/adaptive_mutation.gd.uid new file mode 100644 index 0000000..343496b --- /dev/null +++ b/entities/plants/scripts/plant_mutation/adaptive_mutation.gd.uid @@ -0,0 +1 @@ +uid://blwkliqwgqs32 diff --git a/entities/plants/scripts/plant_mutation/pure_mutation.gd b/entities/plants/scripts/plant_mutation/pure_mutation.gd index e4b10c4..b280f32 100644 --- a/entities/plants/scripts/plant_mutation/pure_mutation.gd +++ b/entities/plants/scripts/plant_mutation/pure_mutation.gd @@ -21,5 +21,5 @@ func mutate_score_multiplier(plant_data: PlantData, multiplier: float) -> float: return multiplier + get_score_multiplier() return multiplier -func get_score_multiplier()->int: - return level +func get_score_multiplier()->float: + return 0.5 * level diff --git a/entities/plants/scripts/plant_mutation/resistant_mutation.gd b/entities/plants/scripts/plant_mutation/resistant_mutation.gd new file mode 100644 index 0000000..3ae1aef --- /dev/null +++ b/entities/plants/scripts/plant_mutation/resistant_mutation.gd @@ -0,0 +1,20 @@ +extends PlantMutation +class_name ResistantMutation + +func get_icon() -> Texture: + return preload("res://common/icons/radioactive.svg") + +func get_mutation_id() -> String: + return "RESISTANT" + +func get_base_rarity() -> int: + return 0 + +func get_mutation_description() -> String: + return tr("RESISTANT_EFFECT_TEXT") + +func is_max_level() -> bool: + return true + +func allow_planting_on_decontamined_terrain(_seed : Seed) -> bool: + return true \ No newline at end of file diff --git a/entities/plants/scripts/plant_mutation/resistant_mutation.gd.uid b/entities/plants/scripts/plant_mutation/resistant_mutation.gd.uid new file mode 100644 index 0000000..80878cc --- /dev/null +++ b/entities/plants/scripts/plant_mutation/resistant_mutation.gd.uid @@ -0,0 +1 @@ +uid://dfuknjnoo1fp8 diff --git a/entities/plants/scripts/plant_mutation/savior_mutation.gd b/entities/plants/scripts/plant_mutation/savior_mutation.gd new file mode 100644 index 0000000..9f38046 --- /dev/null +++ b/entities/plants/scripts/plant_mutation/savior_mutation.gd @@ -0,0 +1,25 @@ +extends PlantMutation +class_name SaviorMutation + +func get_icon() -> Texture: + return preload("res://common/icons/lifebuoy.svg") + +func get_mutation_id() -> String: + return "SAVIOR" + +func get_base_rarity() -> int: + return 0 + +func get_mutation_description() -> String: + return tr("SAVIOR_EFFECT_TEXT").format({ + "score_icon": Text.bbcode_icon(Plant.SCORE_ICON), + "score_multiplier": get_score_multiplier() + 1, + }) + +func mutate_score_multiplier(plant_data: PlantData, multiplier: float) -> float: + if plant_data.region_data and plant_data.region_data.charges == 0: + return multiplier + get_score_multiplier() + return multiplier + +func get_score_multiplier()->float: + return 0.5 * level diff --git a/entities/plants/scripts/plant_mutation/savior_mutation.gd.uid b/entities/plants/scripts/plant_mutation/savior_mutation.gd.uid new file mode 100644 index 0000000..4e5501a --- /dev/null +++ b/entities/plants/scripts/plant_mutation/savior_mutation.gd.uid @@ -0,0 +1 @@ +uid://dn1qruq8wu8y7 diff --git a/entities/plants/scripts/plant_mutation/spontaneous_mutation.gd b/entities/plants/scripts/plant_mutation/spontaneous_mutation.gd index aaeb0e3..9289f1d 100644 --- a/entities/plants/scripts/plant_mutation/spontaneous_mutation.gd +++ b/entities/plants/scripts/plant_mutation/spontaneous_mutation.gd @@ -5,7 +5,7 @@ func get_icon() -> Texture: return preload("res://common/icons/sparkles.svg") func get_base_rarity() -> int: - return 0 + return 1 func is_max_level() -> bool: return true diff --git a/entities/player/inventory/scripts/items/seed.gd b/entities/player/inventory/scripts/items/seed.gd index 7973d32..806f579 100644 --- a/entities/player/inventory/scripts/items/seed.gd +++ b/entities/player/inventory/scripts/items/seed.gd @@ -19,7 +19,10 @@ func _init( static func generate_from_parent(plant_data : PlantData, nearby_plants : Array[PlantData] = []) -> Seed: var mutations : Array[PlantMutation] = plant_data.mutations - var mutation_probability = GameInfo.game_data.current_run.plant_info.get_mutation_probability() + var mutation_probability = ( + GameInfo.game_data.current_run.plant_info.get_mutation_probability() + + plant_data.get_mutation_probability_boost() + ) var nearby_mutations : Array[PlantMutation] = [] for pd in nearby_plants: @@ -107,9 +110,15 @@ func can_use(player : Player, zone : Player.ActionZone) -> bool: zone.get_global_position(), )] as Array[Vector2i] + var is_decontaminated = player.region.is_coords_decontaminated(plant_tiles) + + for m in plant_mutations: + if m.allow_planting_on_decontamined_terrain(self): + is_decontaminated = true + return ( not is_there_a_plant_here - and player.region.is_coords_decontaminated(plant_tiles) + and is_decontaminated and not player.region.is_coords_rocky(plant_tiles) ) @@ -178,11 +187,12 @@ static func generate_first_mutations(rarity := 0) -> Array[PlantMutation]: if rarity < 0: return [] - var possible_mutation : PlantMutation = GameInfo.game_data.progression_data.get_available_mutations().filter( + var possible_mutations : Array[PlantMutation] = GameInfo.game_data.progression_data.get_available_mutations().filter( func (m : PlantMutation): return m.get_base_rarity() <= rarity - ).pick_random() + ) - if possible_mutation: + if len(possible_mutations): + var possible_mutation = possible_mutations.pick_random() possible_mutation = possible_mutation.duplicate_deep() var level_to_add = rarity - possible_mutation.get_base_rarity() @@ -197,9 +207,11 @@ static func mutate_mutations(mutations : Array[PlantMutation], nearby_mutations var mutation_possibility : Array[MutationPossibility] = [] var evolvable_mutations : Array[PlantMutation] = mutations.filter( - func (m : PlantMutation): return not m.is_max_level() + func (m : PlantMutation): + return not m.is_max_level() ) + if ( len(mutations) < GameInfo.game_data.current_run.plant_info.get_mutation_max_number() ): @@ -208,9 +220,12 @@ static func mutate_mutations(mutations : Array[PlantMutation], nearby_mutations if len(evolvable_mutations) > 0: mutation_possibility.append(UpgradeMutation.new()) - var chosen_mutation_possibility = mutation_possibility.pick_random() - - return chosen_mutation_possibility.mutate(mutations,nearby_mutations) + if len(mutation_possibility) > 0: + var chosen_mutation_possibility = mutation_possibility.pick_random() + return chosen_mutation_possibility.mutate(mutations,nearby_mutations) + else: + print_debug("No mutation possility available") + return mutations class MutationPossibility: func mutate(_mutations : Array[PlantMutation], _nearby_mutations : Array[PlantMutation])-> Array[PlantMutation]: @@ -229,13 +244,16 @@ class AddMutation extends MutationPossibility: return mutations.find_custom(func(m2: PlantMutation): return m2.id == m.id) == -1 ) + var nearby_impacted_possible_new_mutations : Array[PlantMutation] = [] + for m1 in possible_new_mutations: + nearby_impacted_possible_new_mutations.append(m1) for m2 in nearby_mutations: if m1.id == m2.id: - possible_new_mutations.append(m1) # Double les chances d'avoir la mutation si elle est présente dans les voisins + nearby_impacted_possible_new_mutations.append(m1) # Double les chances d'avoir la mutation si elle est présente dans les voisins - if len(possible_new_mutations): - new_mutations.append(possible_new_mutations.pick_random()) + if len(nearby_impacted_possible_new_mutations): + new_mutations.append(nearby_impacted_possible_new_mutations.pick_random()) return new_mutations @@ -250,7 +268,7 @@ class UpgradeMutation extends MutationPossibility: for i in range(len(mutations)): var m = mutations[i] - if m.get_rarity() < PlantMutation.MAX_RARITY: + if not m.is_max_level(): evolvable_mutations_id.append(i) if len(evolvable_mutations_id): diff --git a/entities/player/scripts/player.gd b/entities/player/scripts/player.gd index 81e4d86..fd24797 100644 --- a/entities/player/scripts/player.gd +++ b/entities/player/scripts/player.gd @@ -115,9 +115,6 @@ func _process(delta): elif velocity != Vector2.ZERO and %MovementAudioStreamPlayer.playing == false: %MovementAudioStreamPlayer.play() - # print("-----") - # print(elapsed_time) - # print(last_just_dropped_item_objects_updated) if elapsed_time > last_just_dropped_item_objects_updated + JUST_DROPPED_ITEM_UPDATE_INTERVAL: update_just_dropped_item_objects() diff --git a/gui/credits/credits.tscn b/gui/credits/credits.tscn index 66a56f3..4646237 100644 --- a/gui/credits/credits.tscn +++ b/gui/credits/credits.tscn @@ -4,15 +4,12 @@ [ext_resource type="Theme" uid="uid://5au2k3vf2po3" path="res://gui/ressources/menu.tres" id="2_luv2b"] [ext_resource type="Texture2D" uid="uid://cdpqg3pkjcw2h" path="res://stages/title_screen/assets/textures/title.png" id="3_urbel"] [ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="4_5k6jv"] -[ext_resource type="PackedScene" uid="uid://bc3byq8e45ejj" path="res://gui/credits/socials/steam.tscn" id="5_luv2b"] -[ext_resource type="Texture2D" uid="uid://baaujfw8piywi" path="res://common/icons/dna.svg" id="6_kip8e"] +[ext_resource type="PackedScene" uid="uid://c8flevrkelpvy" path="res://gui/credits/socials/instagram.tscn" id="5_urbel"] +[ext_resource type="PackedScene" uid="uid://cm5b7w7j6527f" path="res://stages/title_screen/planet_3d.tscn" id="6_luv2b"] [ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="7_urbel"] -[ext_resource type="Texture2D" uid="uid://b75k12a4wc5t4" path="res://common/icons/book-2.svg" id="8_a8ny4"] -[ext_resource type="Texture2D" uid="uid://dbv5hm7lyi1f6" path="res://common/icons/infinity.svg" id="9_xl2r5"] -[sub_resource type="LabelSettings" id="LabelSettings_m5waa"] -font = ExtResource("7_urbel") -font_size = 20 +[sub_resource type="ViewportTexture" id="ViewportTexture_urbel"] +viewport_path = NodePath("SubViewport") [sub_resource type="LabelSettings" id="LabelSettings_5k6jv"] font = ExtResource("7_urbel") @@ -68,9 +65,34 @@ tracks/3/keys = { "update": 1, "values": [true] } +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("SubViewport/Camera3D:rotation:x") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0.0] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("SubViewport/Planet3d:fertility_factor") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} [sub_resource type="Animation" id="Animation_kip8e"] resource_name = "appear" +length = 10.0 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -78,7 +100,7 @@ tracks/0/path = NodePath("MarginContainer/GridContainer:theme_override_constants tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0, 1), +"times": PackedFloat32Array(9, 10), "transitions": PackedFloat32Array(1, 1), "update": 0, "values": [2000, 0] @@ -90,7 +112,7 @@ tracks/1/path = NodePath("ColorRect:modulate") tracks/1/interp = 2 tracks/1/loop_wrap = true tracks/1/keys = { -"times": PackedFloat32Array(0.033333335, 0.5), +"times": PackedFloat32Array(9.033333, 9.5), "transitions": PackedFloat32Array(1, 1), "update": 0, "values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] @@ -102,7 +124,7 @@ tracks/2/path = NodePath("MarginContainer:modulate") tracks/2/interp = 2 tracks/2/loop_wrap = true tracks/2/keys = { -"times": PackedFloat32Array(0.43333334, 1), +"times": PackedFloat32Array(9.433333, 10), "transitions": PackedFloat32Array(1, 1), "update": 0, "values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] @@ -114,11 +136,35 @@ tracks/3/path = NodePath(".:visible") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { -"times": PackedFloat32Array(0.033333335), +"times": PackedFloat32Array(9.033333), "transitions": PackedFloat32Array(1), "update": 1, "values": [true] } +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("SubViewport/Camera3D:rotation:x") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 9.033333), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.51, 0.0] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("SubViewport/Planet3d:fertility_factor") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0.46666667, 9.066667), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 1.0] +} [sub_resource type="AnimationLibrary" id="AnimationLibrary_a8ny4"] _data = { @@ -126,6 +172,9 @@ _data = { &"appear": SubResource("Animation_kip8e") } +[sub_resource type="FastNoiseLite" id="FastNoiseLite_5k6jv"] +frequency = 1.0 + [node name="Credits" type="CanvasLayer" unique_id=180964898] layer = 99 script = ExtResource("1_kip8e") @@ -138,6 +187,17 @@ grow_horizontal = 2 grow_vertical = 2 color = Color(0.03529412, 0.019607844, 0.1254902, 0.8) +[node name="Background1" type="TextureRect" parent="." unique_id=799945411] +z_index = -1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = SubResource("ViewportTexture_urbel") +expand_mode = 2 +stretch_mode = 6 + [node name="MarginContainer" type="MarginContainer" parent="." unique_id=1349934988] anchors_preset = 15 anchor_right = 1.0 @@ -149,7 +209,7 @@ theme = ExtResource("2_luv2b") [node name="GridContainer" type="GridContainer" parent="MarginContainer" unique_id=1426452837] layout_mode = 2 theme_override_constants/h_separation = 544 -theme_override_constants/v_separation = 448 +theme_override_constants/v_separation = 0 columns = 2 [node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/GridContainer" unique_id=1825004235] @@ -169,63 +229,12 @@ stretch_mode = 5 [node name="Label" type="Label" parent="MarginContainer/GridContainer/VBoxContainer" unique_id=215880453] layout_mode = 2 -text = "THANKS_FOR_PLAYING_DEMO" +text = "THANKS_FOR_PLAYING" label_settings = ExtResource("4_5k6jv") horizontal_alignment = 1 -[node name="SteamButton" parent="MarginContainer/GridContainer/VBoxContainer" unique_id=1181450581 instance=ExtResource("5_luv2b")] +[node name="Button" parent="MarginContainer/GridContainer/VBoxContainer" unique_id=927302743 instance=ExtResource("5_urbel")] layout_mode = 2 -link = "https://store.steampowered.com/app/4444510/Seeding_The_Wasteland/" - -[node name="VBoxContainer2" type="VBoxContainer" parent="MarginContainer/GridContainer/VBoxContainer" unique_id=465861616] -modulate = Color(1, 0.6509804, 0.09019608, 1) -layout_mode = 2 -theme_override_constants/separation = 4 - -[node name="Label2" type="Label" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer2" unique_id=1013363580] -layout_mode = 2 -text = "IN_THE_COMPLETE_GAME" -label_settings = ExtResource("4_5k6jv") -horizontal_alignment = 1 - -[node name="VBoxContainer" type="HBoxContainer" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer2" unique_id=115205131] -layout_mode = 2 -alignment = 1 - -[node name="TextureRect" type="TextureRect" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer2/VBoxContainer" unique_id=148775652] -layout_mode = 2 -texture = ExtResource("6_kip8e") - -[node name="Label" type="Label" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer2/VBoxContainer" unique_id=1109596403] -layout_mode = 2 -text = "TWICE_MORE_MUTATIONS" -label_settings = SubResource("LabelSettings_m5waa") - -[node name="VBoxContainer2" type="HBoxContainer" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer2" unique_id=921966638] -layout_mode = 2 -alignment = 1 - -[node name="TextureRect" type="TextureRect" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer2/VBoxContainer2" unique_id=32161915] -layout_mode = 2 -texture = ExtResource("8_a8ny4") - -[node name="Label" type="Label" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer2/VBoxContainer2" unique_id=578114248] -layout_mode = 2 -text = "A_3_4_HOURS_STORY" -label_settings = SubResource("LabelSettings_m5waa") - -[node name="VBoxContainer3" type="HBoxContainer" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer2" unique_id=1755435556] -layout_mode = 2 -alignment = 1 - -[node name="TextureRect" type="TextureRect" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer2/VBoxContainer3" unique_id=1636037226] -layout_mode = 2 -texture = ExtResource("9_xl2r5") - -[node name="Label" type="Label" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer2/VBoxContainer3" unique_id=222316161] -layout_mode = 2 -text = "AN_INFINITE_MODE" -label_settings = SubResource("LabelSettings_m5waa") [node name="VBoxContainer2" type="VBoxContainer" parent="MarginContainer/GridContainer" unique_id=105267250] layout_mode = 2 @@ -276,7 +285,7 @@ alignment = 1 [node name="Name" type="Label" parent="MarginContainer/GridContainer/VBoxContainer2/CreditsLine4" unique_id=1820679506] layout_mode = 2 -text = "Eva" +text = "Eva Martel" label_settings = SubResource("LabelSettings_5k6jv") horizontal_alignment = 1 @@ -291,7 +300,7 @@ alignment = 1 [node name="Name" type="Label" parent="MarginContainer/GridContainer/VBoxContainer2/CreditsLine3" unique_id=1412859434] layout_mode = 2 -text = "Victor RJ" +text = "Victor Robert Jaunet" label_settings = SubResource("LabelSettings_5k6jv") horizontal_alignment = 1 @@ -330,6 +339,21 @@ layout_mode = 2 text = "COMMUNICATION" horizontal_alignment = 1 +[node name="CreditsLine11" type="HBoxContainer" parent="MarginContainer/GridContainer/VBoxContainer2" unique_id=544572887] +layout_mode = 2 +alignment = 1 + +[node name="Name" type="Label" parent="MarginContainer/GridContainer/VBoxContainer2/CreditsLine11" unique_id=1419201058] +layout_mode = 2 +text = "Madison" +label_settings = SubResource("LabelSettings_5k6jv") +horizontal_alignment = 1 + +[node name="Role" type="Label" parent="MarginContainer/GridContainer/VBoxContainer2/CreditsLine11" unique_id=550646115] +layout_mode = 2 +text = "PR_AND_MARKETING" +horizontal_alignment = 1 + [node name="CreditsLine6" type="HBoxContainer" parent="MarginContainer/GridContainer/VBoxContainer2" unique_id=192767961] layout_mode = 2 alignment = 1 @@ -375,13 +399,28 @@ layout_mode = 2 text = "TRAILER" horizontal_alignment = 1 +[node name="CreditsLine13" type="HBoxContainer" parent="MarginContainer/GridContainer/VBoxContainer2" unique_id=1407984580] +layout_mode = 2 +alignment = 1 + +[node name="Name" type="Label" parent="MarginContainer/GridContainer/VBoxContainer2/CreditsLine13" unique_id=651448224] +layout_mode = 2 +text = "Baptiste Pocard" +label_settings = SubResource("LabelSettings_5k6jv") +horizontal_alignment = 1 + +[node name="Role" type="Label" parent="MarginContainer/GridContainer/VBoxContainer2/CreditsLine13" unique_id=1434120919] +layout_mode = 2 +text = "CONCEPT_ARTS" +horizontal_alignment = 1 + [node name="CreditsLine10" type="HBoxContainer" parent="MarginContainer/GridContainer/VBoxContainer2" unique_id=1089087276] layout_mode = 2 alignment = 1 [node name="Name" type="Label" parent="MarginContainer/GridContainer/VBoxContainer2/CreditsLine10" unique_id=399643362] layout_mode = 2 -text = "Ny Andy" +text = "Ny Andy Ratinarivelo" label_settings = SubResource("LabelSettings_5k6jv") horizontal_alignment = 1 @@ -390,6 +429,46 @@ layout_mode = 2 text = "SPLASH_ART" horizontal_alignment = 1 +[node name="CreditsLine12" type="HBoxContainer" parent="MarginContainer/GridContainer/VBoxContainer2" unique_id=1932899531] +layout_mode = 2 +alignment = 1 + +[node name="Name" type="Label" parent="MarginContainer/GridContainer/VBoxContainer2/CreditsLine12" unique_id=2037812278] +layout_mode = 2 +text = "Cesire" +label_settings = SubResource("LabelSettings_5k6jv") +horizontal_alignment = 1 + +[node name="Role" type="Label" parent="MarginContainer/GridContainer/VBoxContainer2/CreditsLine12" unique_id=590486308] +layout_mode = 2 +text = "DEMETER_VOICE" +horizontal_alignment = 1 + [node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1455518318] unique_name_in_owner = true libraries/ = SubResource("AnimationLibrary_a8ny4") +autoplay = &"appear" + +[node name="SubViewport" type="SubViewport" parent="." unique_id=245713755] +size = Vector2i(1980, 1080) + +[node name="WorldEnvironment" type="WorldEnvironment" parent="SubViewport" unique_id=186360917] + +[node name="Planet3d" parent="SubViewport" unique_id=866166298 instance=ExtResource("6_luv2b")] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) +noise = SubResource("FastNoiseLite_5k6jv") + +[node name="Camera3D" type="Camera3D" parent="SubViewport" unique_id=232867368] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 64.323) +current = true +fov = 34.0 + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="SubViewport" unique_id=1781058708] +transform = Transform3D(0.044800885, 0.76661056, -0.6405476, -0.8325595, 0.38302267, 0.4001729, 0.55212104, 0.51536596, 0.65540874, -23.18848, 19.508549, 0) +light_volumetric_fog_energy = 0.0 +light_specular = 0.0 +shadow_enabled = true +shadow_normal_bias = 0.0 +shadow_opacity = 0.92 +shadow_blur = 4.667 diff --git a/gui/game/pass_day/pass_day.tscn b/gui/game/pass_day/pass_day.tscn index f88d06f..af5e2c4 100644 --- a/gui/game/pass_day/pass_day.tscn +++ b/gui/game/pass_day/pass_day.tscn @@ -3,7 +3,6 @@ [ext_resource type="Script" uid="uid://2qomrdxbvxqa" path="res://gui/game/pass_day/scripts/pass_day.gd" id="1_0pm4g"] [ext_resource type="PackedScene" uid="uid://brfsapvj2quxm" path="res://gui/game/energy_info/energy_info.tscn" id="2_feyaf"] [ext_resource type="Theme" uid="uid://5au2k3vf2po3" path="res://gui/ressources/menu.tres" id="4_0pm4g"] -[ext_resource type="Script" uid="uid://0dhj8sdpil7q" path="res://gui/tools/control_animation_player.gd" id="5_dqmg8"] [ext_resource type="Texture2D" uid="uid://cymrmhsihkj44" path="res://common/icons/recharge.svg" id="6_h2bel"] [ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="7_h2bel"] [ext_resource type="Texture2D" uid="uid://cihiibon53147" path="res://gui/game/pass_day/assets/day_night_sprite.svg" id="7_m84xg"] @@ -51,9 +50,121 @@ _data = { &"pass": SubResource("Animation_5ap0m") } +[sub_resource type="Animation" id="Animation_0pm4g"] +resource_name = "Appear" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Background:modulate:a") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 1.0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("NightAnimation:modulate:a") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 1.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("PassDayInfo:modulate:a") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.23333333, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 1.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("MarginContainer/EnergyPassDayInfo:modulate:a") +tracks/3/interp = 2 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.33333334, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 1.0] +} + +[sub_resource type="Animation" id="Animation_dqmg8"] +resource_name = "Disappear" + +[sub_resource type="Animation" id="Animation_m84xg"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Background:modulate:a") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0.0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("NightAnimation:modulate:a") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("PassDayInfo:modulate:a") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("MarginContainer/EnergyPassDayInfo:modulate:a") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0.0] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_h2bel"] +_data = { +&"Appear": SubResource("Animation_0pm4g"), +&"Disappear": SubResource("Animation_dqmg8"), +&"RESET": SubResource("Animation_m84xg") +} + [node name="PassDay" type="CanvasLayer" unique_id=335255544] layer = 3 -visible = false script = ExtResource("1_0pm4g") [node name="Background" type="ColorRect" parent="." unique_id=527935985] @@ -68,7 +179,7 @@ color = Color(0.0627451, 0.05882353, 0.16862746, 1) [node name="PassDayInfo" type="VBoxContainer" parent="." unique_id=833110506] unique_name_in_owner = true -visible = false +modulate = Color(1, 1, 1, 0) anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 @@ -77,11 +188,6 @@ grow_vertical = 2 theme = ExtResource("4_0pm4g") alignment = 1 -[node name="PassDayInfoAnimationPlayer" type="Node" parent="PassDayInfo" unique_id=857480517] -unique_name_in_owner = true -script = ExtResource("5_dqmg8") -metadata/_custom_type_script = "uid://0dhj8sdpil7q" - [node name="TextureRect" type="TextureRect" parent="PassDayInfo" unique_id=1350962162] layout_mode = 2 size_flags_horizontal = 4 @@ -99,6 +205,7 @@ vertical_alignment = 1 [node name="NightAnimation" type="TextureRect" parent="." unique_id=126988628] unique_name_in_owner = true +modulate = Color(1, 1, 1, 0) custom_minimum_size = Vector2(500, 0) anchors_preset = 8 anchor_left = 0.5 @@ -140,8 +247,13 @@ theme_override_constants/margin_bottom = 15 [node name="EnergyPassDayInfo" parent="MarginContainer" unique_id=2044341204 instance=ExtResource("2_feyaf")] unique_name_in_owner = true +modulate = Color(1, 1, 1, 0) layout_mode = 2 theme_override_constants/margin_left = 15 theme_override_constants/margin_top = 15 theme_override_constants/margin_right = 15 theme_override_constants/margin_bottom = 15 + +[node name="PassDayAnimationPlayer" type="AnimationPlayer" parent="." unique_id=2130854776] +unique_name_in_owner = true +libraries/ = SubResource("AnimationLibrary_h2bel") diff --git a/gui/game/pass_day/scripts/pass_day.gd b/gui/game/pass_day/scripts/pass_day.gd index 9fd4014..91dee81 100644 --- a/gui/game/pass_day/scripts/pass_day.gd +++ b/gui/game/pass_day/scripts/pass_day.gd @@ -24,8 +24,6 @@ var is_animation_disappeared := false func _ready(): hide() setup_energy_values() - %PassDayInfo.hide() - %Background.modulate.a = 0. func _process(delta): if recharging: @@ -71,36 +69,14 @@ func pass_day_animation(): func appear(): show() - add_tween( - "modulate:a", - %Background, - 1., - 0.5 - ) - await add_tween( - "modulate:a", - %NightAnimation, - 1., - 0.5 - ).finished + %PassDayAnimationPlayer.play("Appear") - await %PassDayInfoAnimationPlayer.appear() + await %PassDayAnimationPlayer.animation_finished func disappear(): - await %PassDayInfoAnimationPlayer.disappear() - add_tween( - "modulate:a", - %Background, - 0.0, - 0.5 - ) - await add_tween( - "modulate:a", - %NightAnimation, - 0., - 0.5 - ).finished + %PassDayAnimationPlayer.play_backwards("Appear") + await %PassDayAnimationPlayer.animation_finished hide() func add_tween( diff --git a/project.godot b/project.godot index e73399d..1eccda1 100644 --- a/project.godot +++ b/project.godot @@ -19,6 +19,7 @@ config/description="Seeding planets is a survival, managment and cosy game in wh config/version="0.1" run/main_scene="uid://c5bruelvqbm1k" config/features=PackedStringArray("4.7", "Forward Plus") +boot_splash/bg_color=Color(0.0627451, 0.05882353, 0.16862746, 1) config/icon="uid://df0y0s666ui4h" [audio] diff --git a/root.gd b/root.gd index 91cc92e..b58383b 100644 --- a/root.gd +++ b/root.gd @@ -1,4 +1,19 @@ extends Node +var game_loaded := false + func _ready(): - SceneManager.change_to_scene(TitleScene.new(), false) \ No newline at end of file + %SplashScreenAnimationPlayer.play("SplashScreen") + + await %SplashScreenAnimationPlayer.animation_finished + + load_game() + +func _input(event): + if event is InputEventKey or event is InputEventJoypadButton or event is InputEventMouseButton: + load_game() + +func load_game(): + if not game_loaded: + game_loaded = true + SceneManager.change_to_scene(TitleScene.new(), false) diff --git a/root.tscn b/root.tscn index 80c7258..871ff14 100644 --- a/root.tscn +++ b/root.tscn @@ -1,6 +1,68 @@ [gd_scene format=3 uid="uid://c5bruelvqbm1k"] [ext_resource type="Script" uid="uid://bely2if04v736" path="res://root.gd" id="1_pq8q7"] +[ext_resource type="Theme" uid="uid://5au2k3vf2po3" path="res://gui/ressources/menu.tres" id="2_vvh5c"] + +[sub_resource type="Animation" id="Animation_jnlp7"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("OrchindiePresentLabel:modulate:a") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [1.0] +} + +[sub_resource type="Animation" id="Animation_l8v81"] +resource_name = "SplashScreen" +length = 2.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("OrchindiePresentLabel:modulate:a") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2, 1.8, 2), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [0.0, 1.0, 1.0, 0.0] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_vyht1"] +_data = { +&"RESET": SubResource("Animation_jnlp7"), +&"SplashScreen": SubResource("Animation_l8v81") +} [node name="Root" type="Node" unique_id=72535230] script = ExtResource("1_pq8q7") + +[node name="SplashScreenAnimationPlayer" type="AnimationPlayer" parent="." unique_id=2094545804] +unique_name_in_owner = true +root_node = NodePath("../CanvasLayer") +libraries/ = SubResource("AnimationLibrary_vyht1") + +[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=1024220320] + +[node name="OrchindiePresentLabel" type="RichTextLabel" parent="CanvasLayer" unique_id=1828726261] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme = ExtResource("2_vvh5c") +theme_override_font_sizes/normal_font_size = 30 +theme_override_font_sizes/bold_font_size = 30 +theme_override_font_sizes/bold_italics_font_size = 30 +theme_override_font_sizes/italics_font_size = 30 +theme_override_font_sizes/mono_font_size = 30 +bbcode_enabled = true +text = "ORCHINDIE_PRESENTS" +horizontal_alignment = 1 +vertical_alignment = 1 diff --git a/stages/3d_scenes/aqua_base/aqua_base.tscn b/stages/3d_scenes/aqua_base/aqua_base.tscn index c67033c..fd75829 100644 --- a/stages/3d_scenes/aqua_base/aqua_base.tscn +++ b/stages/3d_scenes/aqua_base/aqua_base.tscn @@ -41,9 +41,6 @@ shading_mode = 0 albedo_color = Color(0.5882353, 0.7019608, 0.85882354, 1) albedo_texture = ExtResource("2_mr0dk") -[sub_resource type="ViewportTexture" id="ViewportTexture_dlfx2"] -viewport_path = NodePath("Screen/SubViewport") - [sub_resource type="QuadMesh" id="QuadMesh_m5l0g"] size = Vector2(3, 3) @@ -189,21 +186,6 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -3.9, -0.34409285) screen_text = "CONNECT_TO_POSEIDON" broken = true -[node name="Model" parent="AiReceptacle" index="0" unique_id=154868613] -visible = false - -[node name="ModelBroken" parent="AiReceptacle" index="1" unique_id=1633938801] -visible = true - -[node name="Support" parent="AiReceptacle/ModelBroken" index="5" unique_id=1098621972] -surface_material_override/0 = ExtResource("4_nydtf") - -[node name="Screen" parent="AiReceptacle" index="3" unique_id=1396407912] -texture = SubResource("ViewportTexture_dlfx2") - -[node name="ScreenTitle" parent="AiReceptacle/Screen/SubViewport/ScreenContent/VBoxContainer" parent_id_path=PackedInt32Array(1082354698, 1893636910) index="1" unique_id=443526476] -text = "CONNECT_TO_POSEIDON" - [node name="SpotLight3D" type="SpotLight3D" parent="AiReceptacle" unique_id=1906884086] transform = Transform3D(1, 0, 0, 0, -0.67415154, -0.73859304, 0, 0.73859304, -0.67415154, 0, 0.66735864, 3.2564082) light_color = Color(0.972549, 0.007843138, 0.3764706, 1) @@ -281,6 +263,4 @@ autoplay = &"blink" [connection signal="clicked" from="AiReceptacle" to="." method="_on_ai_receptacle_clicked"] [editable path="hub"] -[editable path="AiReceptacle"] -[editable path="AiReceptacle/ModelBroken"] [editable path="Player3D"] diff --git a/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/scripts/travel_screen_content.gd b/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/scripts/travel_screen_content.gd index d73eae4..77ce80a 100644 --- a/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/scripts/travel_screen_content.gd +++ b/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/scripts/travel_screen_content.gd @@ -33,7 +33,6 @@ var ship_icon : Sprite2D func update(with_animation := true, recreate_map = false): if is_node_ready() and story_step: - print(current_position) if recreate_map or not ship_icon: if story_step and get_step_number() < story_step.get_region_sequence_length(): diff --git a/stages/terrain/region/scripts/region_data.gd b/stages/terrain/region/scripts/region_data.gd index 547ee67..35b9bbb 100644 --- a/stages/terrain/region/scripts/region_data.gd +++ b/stages/terrain/region/scripts/region_data.gd @@ -141,6 +141,7 @@ func add_plant_data(plant_data : PlantData, with_update = true): func (pd : PlantData): return pd.random_seed == plant_data.random_seed ) == -1: plants.append(plant_data) + plant_data.region_data = self plant_data.disappeared.connect(_on_plant_disappeared) plant_data.updated.connect(func (_p : PlantData) : update()) if with_update: diff --git a/translation/game/gui.csv b/translation/game/gui.csv index 427f111..d930765 100644 --- a/translation/game/gui.csv +++ b/translation/game/gui.csv @@ -1,4 +1,5 @@ keys,en,fr +ORCHINDIE_PRESENTS,Orchindie presents,Orchindie présente TUTORIAL,Tutorial,Tutoriel ICONS_MEANINGS,Icons Meanings,Signification des Icônes PLANT_POINTS,Plant points,Points de plante @@ -62,7 +63,7 @@ MATURE_ON_DAY_%d,Mature on day [b]%d[/b],Mature au jour [b]%d[/b] ABSURD,[rainbow]Absurd[/rainbow],[rainbow]Absurde[/rainbow] GROW_IN_%d,Grow in [b]%d[/b] days,Mature dans [b]%d[/b] jours DIE_ON_DAY_%d,Die on day %d,Meurs au jour %d -ANCIENT,Ancient,Ancien +ANCIENT,Ancient,Ancienne ANCIENT_EFFECT_TEXT,"When mature, add [b]{score_increase}[/b]{score_icon} each [b]{day_factor}[/b]{duration_icon}","Une fois mature, ajoute [b]{score_increase}[/b]{score_icon} tous les [b]{day_factor}[/b]{duration_icon}" PRECOCIOUS,Precocious,Précoce PRECOCIOUS_EFFECT_TEXT,[b]{score}[/b]{score_icon} while the plant is growing,[b]{score}[/b]{score_icon} pendant que la plante grandit @@ -76,9 +77,9 @@ TOUGH,Tough,Solide TOUGH_EFFECT_TEXT,Multiplies {score_icon} by [b]{score_multiplier}[/b] and add [b]{growing_time}[/b]{growing_icon},"Multiplie {score_icon} par [b]{score_multiplier}[/b] et ajoute [b]{growing_time}[/b]{growing_icon}" FERTILE,Fertile,Fertile FERTILE_EFFECT_TEXT,"When mature, add [b]{seed_buff}[/b]{seed_icon} to all nearby plant but [b]{score_change}[/b]{score_icon} to itself","Si mature, ajoute [b]{seed_buff}[/b]{seed_icon} à toutes les plantes autour mais [b]{score_change}[/b]{score_icon} pour elle même" -PURIFICATION,Purification,Purification +PURIFICATION,Purification,Purificatrice PURIFICATION_EFFECT_TEXT,"When mature, create fertile zone in a radius of [b]{purification_radius}[/b]","Une fois mature, créée une zone fertile dans un rayon de [b]{purification_radius}[/b]" -HURRIED,Hurried,Pressé +HURRIED,Hurried,Pressée HURRIED_EFFECT_TEXT,"[b]{growing_time_change}[/b]{growing_time_icon}","[b]{growing_time_change}[/b]{growing_time_icon}" VIVACIOUS,Vivacious,Vivace VIVACIOUS_EFFECT_TEXT,[b]{score_change}[/b]{score_icon} the first day of maturation,[b]{score_change}[/b]{score_icon} le premier jour de maturation @@ -88,20 +89,26 @@ PROLIFIC,Prolific,Prolifique PROLIFIC_EFFECT_TEXT,[b]+{seeds_change}[/b]{seeds_icon} if mature,[b]+{seeds_change}[/b]{seeds_icon} si mature PURE,Pure,Pure PURE_EFFECT_TEXT,Multiplies {score_icon} by [b]{score_multiplier}[/b] if the all the area around is fertile,Multiplie {score_icon} par [b]{score_multiplier}[/b] si toute la zone autour est fertile -GENEROUS,Generous,Généreux +GENEROUS,Generous,Généreuse GENEROUS_EFFECT_TEXT,"When mature, add [b]{score_buff}[/b]{score_icon} to all nearby plants, but no longer make point","Si mature, ajoute [b]{score_buff}[/b]{score_icon} à toutes les plantes à proximité, mais ne génère plus de points" -PROTECTIVE,Protective,Protecteur +PROTECTIVE,Protective,Protectrice PROTECTIVE_EFFECT_TEXT,"Add [b]{lifetime_buff}[/b]{lifetime_icon} to all nearby plants","Ajoute [b]{lifetime_buff}[/b]{lifetime_icon} à toutes les plantes à proximité" -CLEANING,Cleaning,Nettoyage +CLEANING,Cleaner,Nettoyante CLEANING_EFFECT_TEXT,"At the end of its lifetime, create fertile zone in a radius of [b]{purification_radius}[/b]","À la fin de sa durée de vie, créée une zone fertile dans un rayon de [b]{purification_radius}[/b]" HERMIT,Hermit,Ermite HERMIT_EFFECT_TEXT,"Multiplies {score_icon} by [b]{score_multiplier}[/b] but make no points near other plants","Multiplie {score_icon} par [b]{score_multiplier}[/b] mais ne fait aucun point si à proximité d'autres plantes" -TROPICAL,Tropical,Tropical +TROPICAL,Tropical,Tropicale TROPICAL_EFFECT_TEXT,Multiplies {score_icon} by [b]{score_multiplier}[/b] if the day is rainy (1/4 chance),"Multiplie {score_icon} par [b]{score_multiplier}[/b] s'il pleut (1 chance sur 4)" RHIZOME,Rhizome,Rhizome RHIZOME_EFFECT_TEXT,"On maturation, dig on a radius of {digging_radius} around","À la maturation, creuse sur un rayon de {digging_radius} autour" SPONTANEOUS,Spontaneous,Spontanée SPONTANEOUS_EFFECT_TEXT,Now produces seeds only on maturation,Produit maintenant des graines uniquement à la maturation +SAVIOR,Savior,Sauveuse +SAVIOR_EFFECT_TEXT,Multiplies {score_icon} by [b]{score_multiplier}[/b] when out of recharge,"Multiplie {score_icon} par [b]{score_multiplier}[/b] si aucune recharge restante" +ADAPTIVE,Adaptive,Adaptative +ADAPTIVE_EFFECT_TEXT,Increase mutation chance by [b]{mutation_probability_boost}[/b],Augmente les chances de mutations de [b]{mutation_probability_boost}[/b] +RESISTANT,Resistant,Résistante +RESISTANT_EFFECT_TEXT,Can be planted on non fertile terrain,Peut être plantée sur un terrain non fertile COST_%d_ENERGY,Cost %d energy,Coûte %d d'énergie ONE_TIME_USE,Single use,Usage unique BUILD_%s,Build %s,Construit %s @@ -292,6 +299,9 @@ WRITING_DEV_AND_GAME_DESIGN,"Writing, Development and Game Design","Écriture, MUSIC_SOUND_DESIGN_AND_WRITING,"Music, Sound design and Wrinting","Musique, Sons et Écriture" COMMUNICATION,"Communication","Communication" SPLASH_ART,Splash Art,Splash Art +PR_AND_MARKETING,"PR & Marketing","PR & Marketing" +DEMETER_VOICE,"Demeter's Voice","Voix de Demeter" +CONCEPT_ARTS,"Concept Arts","Concept Arts" TRAILER,"Trailer","Trailer" CREDITS,Credits,Crédits ASTRA_FACTORY,Astra Factory,Usine Astra