From cb5a2421ae6de158acf30c7d56312b314077abb6 Mon Sep 17 00:00:00 2001 From: Zacharie Guet Date: Fri, 10 Jul 2026 16:25:33 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20de=20l'am=C3=A9lioration=20du=20mod?= =?UTF-8?q?=C3=A8le=20du=20robot=20au=20cours=20de=20l'histoire,=20d'une?= =?UTF-8?q?=20annonce=20sur=20cette=20am=C3=A9lioration=20ainsi=20qu'un=20?= =?UTF-8?q?succ=C3=A8s=20=C3=A0=20l'utilisation=20de=20toutes=20les=20incu?= =?UTF-8?q?bateurs=20d'orchid=20dans=20une=20base?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/game_data/scripts/game_data.gd | 5 +- common/game_data/scripts/progression_data.gd | 6 +-- common/game_data/scripts/run/run_data.gd | 2 +- common/game_data/scripts/story/story_step.gd | 8 ++- .../story_steps/1_2_mercury_story_step.gd | 2 +- .../story/story_steps/1_3_borea_story_step.gd | 5 ++ .../story/story_steps/2_aqua_story_step.gd | 6 +++ .../story_steps/3_subterra_story_step.gd | 6 +++ .../story/story_steps/4_estia_story_step.gd | 6 +++ .../story/story_steps/5_astra_story_step.gd | 6 +++ .../scripts/scenes/relay_base_scene.gd | 3 ++ common/steam_connection/steam_connection.gd | 3 +- .../cristal/artefact_announce.tscn | 3 +- entities/interactable_3d/cristal/cristal.tscn | 3 +- .../cristal/mutation_announce.tscn | 5 +- .../cristal/scripts/artefact_announce.gd | 8 +-- .../cristal/scripts/mutation_announce.gd | 6 +-- entities/player/scripts/player_data.gd | 18 +++---- gui/credits/credits.tscn | 54 ++++++++++++++++++- gui/credits/scripts/credits.gd | 6 ++- gui/game/announce/announce.tscn | 25 +++++---- gui/game/announce/scripts/announce.gd | 36 ++++++++++--- gui/game/announce/scripts/announce_model.gd | 32 +++++++++++ .../announce/scripts/announce_model.gd.uid | 1 + .../{annouce_object.gd => announce_object.gd} | 5 +- ...e_object.gd.uid => announce_object.gd.uid} | 0 .../{annouce_tool.gd => announce_tool.gd} | 2 +- ...nouce_tool.gd.uid => announce_tool.gd.uid} | 0 project.godot | 4 +- stages/terrain/region/scripts/region.gd | 1 + stages/title_screen/title_screen.tscn | 35 ++++++++++++ translation/game/gui.csv | 3 ++ 32 files changed, 254 insertions(+), 51 deletions(-) create mode 100644 gui/game/announce/scripts/announce_model.gd create mode 100644 gui/game/announce/scripts/announce_model.gd.uid rename gui/game/announce/scripts/{annouce_object.gd => announce_object.gd} (82%) rename gui/game/announce/scripts/{annouce_object.gd.uid => announce_object.gd.uid} (100%) rename gui/game/announce/scripts/{annouce_tool.gd => announce_tool.gd} (97%) rename gui/game/announce/scripts/{annouce_tool.gd.uid => announce_tool.gd.uid} (100%) diff --git a/common/game_data/scripts/game_data.gd b/common/game_data/scripts/game_data.gd index 396748f..817e0f4 100644 --- a/common/game_data/scripts/game_data.gd +++ b/common/game_data/scripts/game_data.gd @@ -41,13 +41,15 @@ func _init( @export var dead_orchid_rotation : Vector3 @export var item_announced = [] +@export var max_energy_announced = PlayerData.DEFAULT_MAX_ENERGY +@export var max_inventory_announced = PlayerData.DEFAULT_INVENTORY_SIZE @export var dialogs_done : Array[String] = [] #Chemin des dialogues terminés @export var tutorials_done : Array[String] = [] + func start_run() -> RunData: player_data.clear_inventory() - player_data.update_with_artefacts([]) current_run = RunData.new() current_run.story_step = progression_data.get_story_step().duplicate_deep() current_run.generate_next_run_points() @@ -55,6 +57,7 @@ func start_run() -> RunData: func(rp : RunPoint): start_region(rp.region_parameter) ) + player_data.update_with_run_data(current_run) ship_in_space = false return current_run diff --git a/common/game_data/scripts/progression_data.gd b/common/game_data/scripts/progression_data.gd index 9629074..d600b73 100644 --- a/common/game_data/scripts/progression_data.gd +++ b/common/game_data/scripts/progression_data.gd @@ -63,9 +63,9 @@ func get_all_artifacts() -> Array[Artefact]: func get_all_story_steps() -> Array[StoryStep]: return [ - # TutorialStoryStep.new(), - # StartStoryStep.new(), - # MercuryStoryStep.new(), + TutorialStoryStep.new(), + StartStoryStep.new(), + MercuryStoryStep.new(), BoreaStoryStep.new(), AquaStoryStep.new(), SubterraStoryStep.new(), diff --git a/common/game_data/scripts/run/run_data.gd b/common/game_data/scripts/run/run_data.gd index dbe6124..79ccfa3 100644 --- a/common/game_data/scripts/run/run_data.gd +++ b/common/game_data/scripts/run/run_data.gd @@ -145,6 +145,6 @@ func generate_challenge_modifiers() -> Array[RegionModifier]: func add_artefacts(a: Artefact): artefacts.append(a) - GameInfo.game_data.player_data.update_with_artefacts(artefacts) + GameInfo.game_data.player_data.update_with_run_data(self) #endregion diff --git a/common/game_data/scripts/story/story_step.gd b/common/game_data/scripts/story/story_step.gd index 0028bf2..f3a6e17 100644 --- a/common/game_data/scripts/story/story_step.gd +++ b/common/game_data/scripts/story/story_step.gd @@ -28,8 +28,14 @@ func is_run_finished(level : int) -> bool: func is_region_sequence_infinite() -> bool: return false +func get_player_max_energy() -> int: + return PlayerData.DEFAULT_MAX_ENERGY + +func get_player_max_inventory() -> int: + return PlayerData.DEFAULT_INVENTORY_SIZE + func get_region_sequence_length() -> int: - return 2 #TO CHANGE TO 7 + return 3 #TOCHANGE TO 7 func get_first_vending_machine_occurence(_level : int) -> int: return 2 diff --git a/common/game_data/scripts/story/story_steps/1_2_mercury_story_step.gd b/common/game_data/scripts/story/story_steps/1_2_mercury_story_step.gd index 7525732..16b6637 100644 --- a/common/game_data/scripts/story/story_steps/1_2_mercury_story_step.gd +++ b/common/game_data/scripts/story/story_steps/1_2_mercury_story_step.gd @@ -26,7 +26,7 @@ func get_destination_scene() -> Scene: func get_ship_dialog_path(level : int, ship_in_space := true) -> String: if level == 0: return MERCURY_DEPARTURE_DIALOG_PATH - if level == 1: + if level == 2: return VENDING_MACHINE_DIALOG_PATH if ship_in_space and is_run_finished(level + 1): return VENUS_ARRIVAL_DIALOG_PATH diff --git a/common/game_data/scripts/story/story_steps/1_3_borea_story_step.gd b/common/game_data/scripts/story/story_steps/1_3_borea_story_step.gd index 4570024..ad24c15 100644 --- a/common/game_data/scripts/story/story_steps/1_3_borea_story_step.gd +++ b/common/game_data/scripts/story/story_steps/1_3_borea_story_step.gd @@ -16,6 +16,11 @@ func get_destination_text() -> String: func get_destination_scene() -> Scene: return BoreaScene.new() +func get_player_max_energy() -> int: + return 4 + +func get_player_max_inventory() -> int: + return 3 func get_ship_dialog_path(_level : int, _ship_in_space := true) -> String: return VENUS_DEPARTURE_DIALOG_PATH \ No newline at end of file diff --git a/common/game_data/scripts/story/story_steps/2_aqua_story_step.gd b/common/game_data/scripts/story/story_steps/2_aqua_story_step.gd index 2c0504d..c071500 100644 --- a/common/game_data/scripts/story/story_steps/2_aqua_story_step.gd +++ b/common/game_data/scripts/story/story_steps/2_aqua_story_step.gd @@ -16,6 +16,12 @@ func get_destination_text() -> String: func get_destination_scene() -> Scene: return AquaScene.new() +func get_player_max_energy() -> int: + return 4 + +func get_player_max_inventory() -> int: + return 4 + func get_ship_dialog_path(level : int, _ship_in_space := true) -> String: if level == 5: return AQUA_TRAVEL_PHONE_CALL_DIALOG_PATH diff --git a/common/game_data/scripts/story/story_steps/3_subterra_story_step.gd b/common/game_data/scripts/story/story_steps/3_subterra_story_step.gd index e520061..8921058 100644 --- a/common/game_data/scripts/story/story_steps/3_subterra_story_step.gd +++ b/common/game_data/scripts/story/story_steps/3_subterra_story_step.gd @@ -16,6 +16,12 @@ func get_destination_text() -> String: func get_destination_scene() -> Scene: return SubterraScene.new() +func get_player_max_energy() -> int: + return 4 + +func get_player_max_inventory() -> int: + return 5 + func get_ship_dialog_path(level : int, _ship_in_space := true) -> String: if level == 5: return TRAVEL_PHONE_CALL_DIALOG_PATH diff --git a/common/game_data/scripts/story/story_steps/4_estia_story_step.gd b/common/game_data/scripts/story/story_steps/4_estia_story_step.gd index 5436ad4..c3ae165 100644 --- a/common/game_data/scripts/story/story_steps/4_estia_story_step.gd +++ b/common/game_data/scripts/story/story_steps/4_estia_story_step.gd @@ -16,6 +16,12 @@ func get_destination_text() -> String: func get_destination_scene() -> Scene: return EstiaScene.new() +func get_player_max_energy() -> int: + return 5 + +func get_player_max_inventory() -> int: + return 5 + func get_ship_dialog_path(level : int, _ship_in_space := true) -> String: if level == 5: return TRAVEL_PHONE_CALL_DIALOG_PATH diff --git a/common/game_data/scripts/story/story_steps/5_astra_story_step.gd b/common/game_data/scripts/story/story_steps/5_astra_story_step.gd index 6fe7620..f2e7b6d 100644 --- a/common/game_data/scripts/story/story_steps/5_astra_story_step.gd +++ b/common/game_data/scripts/story/story_steps/5_astra_story_step.gd @@ -16,6 +16,12 @@ func get_destination_text() -> String: func get_destination_scene() -> Scene: return AstraEndScene.new() +func get_player_max_energy() -> int: + return 5 + +func get_player_max_inventory() -> int: + return 6 + func get_ship_dialog_path(level : int, _ship_in_space := true) -> String: if level == 4: return TRAVEL_PHONE_CALL_DIALOG_PATH diff --git a/common/scene_manager/scripts/scenes/relay_base_scene.gd b/common/scene_manager/scripts/scenes/relay_base_scene.gd index f556220..7ae3daf 100644 --- a/common/scene_manager/scripts/scenes/relay_base_scene.gd +++ b/common/scene_manager/scripts/scenes/relay_base_scene.gd @@ -61,8 +61,11 @@ func spawn_player(relay_base : RelayBase): GameInfo.game_data.incubator_used.append( incubators.find(choosen_incubator) ) + if len(possible_incubators) == 1: + SteamConnection.unlock_achievement(SteamConnection.ACH_STW_ALL_CASES) else: choosen_incubator = incubators.pick_random() + SteamConnection.unlock_achievement(SteamConnection.ACH_STW_ALL_CASES) choosen_incubator.used = true relay_base.player.global_position = choosen_incubator.global_position + Vector3.UP diff --git a/common/steam_connection/steam_connection.gd b/common/steam_connection/steam_connection.gd index 535ee2d..6a567f8 100644 --- a/common/steam_connection/steam_connection.gd +++ b/common/steam_connection/steam_connection.gd @@ -15,11 +15,12 @@ const ACH_STW_REPAIR_THE_PLANET="STW_REPAIR_THE_PLANET" const ACH_STW_HIT_10_INFINITE="STW_HIT_10_INFINITE" const ACH_STW_HIT_20_INFINITE="STW_HIT_20_INFINITE" const ACH_STW_HIT_30_INFINITE="STW_HIT_30_INFINITE" +const ACH_STW_ALL_CASES="STW_ALL_CASES" func unlock_achievement(achivement_name : String): if Steam.isSteamRunning(): var status = Steam.getAchievement(achivement_name) - print_verbose("Steam Achievement %s" %achivement_name) + print("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/interactable_3d/cristal/artefact_announce.tscn b/entities/interactable_3d/cristal/artefact_announce.tscn index 8b099d4..e99cdc4 100644 --- a/entities/interactable_3d/cristal/artefact_announce.tscn +++ b/entities/interactable_3d/cristal/artefact_announce.tscn @@ -167,6 +167,7 @@ _data = { [node name="ArtefactAnnounce" type="CanvasLayer" unique_id=1447182082] layer = 2 +visible = false script = ExtResource("1_2sroa") announce_artefact = SubResource("Resource_3vg7r") @@ -261,7 +262,7 @@ own_world_3d = true transparent_bg = true size = Vector2i(300, 300) -[node name="AnnouceObject" type="Node3D" parent="Container/AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=1527573801] +[node name="AnnounceObject" type="Node3D" parent="Container/AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=1527573801] unique_name_in_owner = true transform = Transform3D(0.49246997, -0.037707455, 0.8692438, 0.6477846, -0.65092874, -0.39512447, 0.5810579, 0.75763476, -0.2962104, 0, 0, 0) diff --git a/entities/interactable_3d/cristal/cristal.tscn b/entities/interactable_3d/cristal/cristal.tscn index feabe25..2ebe1f7 100644 --- a/entities/interactable_3d/cristal/cristal.tscn +++ b/entities/interactable_3d/cristal/cristal.tscn @@ -39,6 +39,7 @@ metadata/_custom_type_script = "uid://bj4d1x8n8ina" unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0430325, 0) stream = SubResource("AudioStreamRandomizer_amehi") +bus = &"Sfx" [node name="BreakParticles" type="CPUParticles3D" parent="." unique_id=1968257379] unique_name_in_owner = true @@ -76,11 +77,9 @@ shape = SubResource("BoxShape3D_nvfy2") [node name="ArtefactAnnounce" parent="." unique_id=114641656 instance=ExtResource("8_3rrt0")] unique_name_in_owner = true -visible = true announce_artefact = null [node name="MutationAnnounce" parent="." unique_id=1447182082 instance=ExtResource("9_247i2")] unique_name_in_owner = true -visible = false [editable path="CristalModelCrack"] diff --git a/entities/interactable_3d/cristal/mutation_announce.tscn b/entities/interactable_3d/cristal/mutation_announce.tscn index 0e73865..c129cf2 100644 --- a/entities/interactable_3d/cristal/mutation_announce.tscn +++ b/entities/interactable_3d/cristal/mutation_announce.tscn @@ -164,6 +164,7 @@ _data = { [node name="MutationAnnounce" type="CanvasLayer" unique_id=1447182082] layer = 2 +visible = false script = ExtResource("1_02o74") [node name="Container" type="Control" parent="." unique_id=250759747] @@ -272,11 +273,11 @@ own_world_3d = true transparent_bg = true size = Vector2i(300, 300) -[node name="AnnouceObject" type="Node3D" parent="Container/AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=1527573801] +[node name="AnnounceObject" type="Node3D" parent="Container/AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=1527573801] unique_name_in_owner = true transform = Transform3D(-0.66996473, 0.079749085, -0.73779225, -0.56796145, 0.58463466, 0.5788058, 0.47777697, 0.80682886, -0.34651512, 0, 0, 0) -[node name="cristal" parent="Container/AnnounceContainer/ObjectVisualiser/SubViewport/AnnouceObject" unique_id=1362490576 instance=ExtResource("12_wy2oe")] +[node name="cristal" parent="Container/AnnounceContainer/ObjectVisualiser/SubViewport/AnnounceObject" unique_id=1362490576 instance=ExtResource("12_wy2oe")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0) [node name="Camera3D" type="Camera3D" parent="Container/AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=173755338] diff --git a/entities/interactable_3d/cristal/scripts/artefact_announce.gd b/entities/interactable_3d/cristal/scripts/artefact_announce.gd index 58ac829..bc435a8 100644 --- a/entities/interactable_3d/cristal/scripts/artefact_announce.gd +++ b/entities/interactable_3d/cristal/scripts/artefact_announce.gd @@ -50,13 +50,13 @@ func update_rotation(delta): else : object_acceleration = object_acceleration.lerp(DEFAULT_OBJECT_ACCELERATION, 0.1) - %AnnouceObject.rotate(Vector3.UP, object_rotation.x * delta) - %AnnouceObject.rotate(Vector3.RIGHT, object_rotation.y * delta) + %AnnounceObject.rotate(Vector3.UP, object_rotation.x * delta) + %AnnounceObject.rotate(Vector3.RIGHT, object_rotation.y * delta) func set_announce_artefact(artefact := announce_artefact): if is_node_ready(): - for c in %AnnouceObject.get_children(): + for c in %AnnounceObject.get_children(): c.queue_free() if is_node_ready() and artefact: @@ -65,7 +65,7 @@ func set_announce_artefact(artefact := announce_artefact): %AnnounceText.text = artefact.get_artefact_name() %ObjectVisualiser.info = artefact.card_info() - %AnnouceObject.add_child( + %AnnounceObject.add_child( artefact.get_3d_scene().instantiate() ) diff --git a/entities/interactable_3d/cristal/scripts/mutation_announce.gd b/entities/interactable_3d/cristal/scripts/mutation_announce.gd index f5b5b13..f8d23ca 100644 --- a/entities/interactable_3d/cristal/scripts/mutation_announce.gd +++ b/entities/interactable_3d/cristal/scripts/mutation_announce.gd @@ -8,7 +8,7 @@ const DEFAULT_OBJECT_ACCELERATION = Vector2(3,0) @export_tool_button("Update", "Callable") var update_action = set_announce_mutation -var announce_objects : Array[AnnouceObject] = [] +var announce_objects : Array[AnnounceObject] = [] var object_acceleration := Vector2(0,0) @@ -52,8 +52,8 @@ func update_rotation(delta): else : object_acceleration = object_acceleration.lerp(DEFAULT_OBJECT_ACCELERATION, 0.1) - %AnnouceObject.rotate(Vector3.UP, object_rotation.x * delta) - %AnnouceObject.rotate(Vector3.RIGHT, object_rotation.y * delta) + %AnnounceObject.rotate(Vector3.UP, object_rotation.x * delta) + %AnnounceObject.rotate(Vector3.RIGHT, object_rotation.y * delta) func set_announce_mutation(mutation := announce_mutation): diff --git a/entities/player/scripts/player_data.gd b/entities/player/scripts/player_data.gd index d752dec..5056b8f 100644 --- a/entities/player/scripts/player_data.gd +++ b/entities/player/scripts/player_data.gd @@ -20,20 +20,20 @@ func get_artefacts() -> Array[Artefact]: return GameInfo.game_data.current_run.artefacts return [] -func update_with_artefacts(artefacts : Array[Artefact]): - inventory.seeds_size = calculate_inventory_size(artefacts) - max_energy = calculate_max_energy(artefacts) +func update_with_run_data(run_data : RunData): + inventory.seeds_size = calculate_inventory_size(run_data) + max_energy = calculate_max_energy(run_data) updated.emit() -func calculate_max_energy(artefacts : Array[Artefact]) -> int: - var v = DEFAULT_MAX_ENERGY - for a in artefacts: +func calculate_max_energy(run_data : RunData) -> int: + var v = run_data.story_step.get_player_max_energy() + for a in run_data.artefacts: v = a.modify_player_max_energy(v) return v -func calculate_inventory_size(artefacts : Array[Artefact]) -> int: - var v = DEFAULT_INVENTORY_SIZE - for a in artefacts: +func calculate_inventory_size(run_data : RunData) -> int: + var v = run_data.story_step.get_player_max_inventory() + for a in run_data.artefacts: v = a.modify_player_inventory_size(v) return v diff --git a/gui/credits/credits.tscn b/gui/credits/credits.tscn index 4646237..6dd381b 100644 --- a/gui/credits/credits.tscn +++ b/gui/credits/credits.tscn @@ -5,12 +5,49 @@ [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://c8flevrkelpvy" path="res://gui/credits/socials/instagram.tscn" id="5_urbel"] +[ext_resource type="Texture2D" uid="uid://bcjkds8n5qu6x" path="res://common/icons/rotate-rectangle.svg" id="6_5k6jv"] [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"] [sub_resource type="ViewportTexture" id="ViewportTexture_urbel"] viewport_path = NodePath("SubViewport") +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_kip8e"] +bg_color = Color(1, 0.6509804, 0.09019608, 1) +border_width_left = 6 +border_width_top = 6 +border_width_right = 6 +border_width_bottom = 6 +border_color = Color(1, 0.6509804, 0.09019608, 1) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_a8ny4"] +bg_color = Color(0.692349, 0.477218, 0.112321, 1) +border_width_left = 6 +border_width_top = 6 +border_width_right = 6 +border_width_bottom = 6 +border_color = Color(0.694118, 0.478431, 0.113725, 1) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_xl2r5"] +bg_color = Color(0.976471, 0.741176, 0.4, 1) +border_width_left = 6 +border_width_top = 6 +border_width_right = 6 +border_width_bottom = 6 +border_color = Color(0.975367, 0.740445, 0.401877, 1) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 + [sub_resource type="LabelSettings" id="LabelSettings_5k6jv"] font = ExtResource("7_urbel") font_size = 20 @@ -234,8 +271,21 @@ label_settings = ExtResource("4_5k6jv") horizontal_alignment = 1 [node name="Button" parent="MarginContainer/GridContainer/VBoxContainer" unique_id=927302743 instance=ExtResource("5_urbel")] +visible = false layout_mode = 2 +[node name="TitleScreen" type="Button" parent="MarginContainer/GridContainer/VBoxContainer" unique_id=1912426702] +layout_mode = 2 +size_flags_horizontal = 4 +theme = ExtResource("2_luv2b") +theme_override_constants/icon_max_width = 30 +theme_override_font_sizes/font_size = 20 +theme_override_styles/normal = SubResource("StyleBoxFlat_kip8e") +theme_override_styles/pressed = SubResource("StyleBoxFlat_a8ny4") +theme_override_styles/hover = SubResource("StyleBoxFlat_xl2r5") +text = "RETURN_TO_TITLE_SCREEN" +icon = ExtResource("6_5k6jv") + [node name="VBoxContainer2" type="VBoxContainer" parent="MarginContainer/GridContainer" unique_id=105267250] layout_mode = 2 size_flags_horizontal = 3 @@ -435,7 +485,7 @@ alignment = 1 [node name="Name" type="Label" parent="MarginContainer/GridContainer/VBoxContainer2/CreditsLine12" unique_id=2037812278] layout_mode = 2 -text = "Cesire" +text = "Cesire / ItsATreee on Twitch" label_settings = SubResource("LabelSettings_5k6jv") horizontal_alignment = 1 @@ -472,3 +522,5 @@ shadow_enabled = true shadow_normal_bias = 0.0 shadow_opacity = 0.92 shadow_blur = 4.667 + +[connection signal="pressed" from="MarginContainer/GridContainer/VBoxContainer/TitleScreen" to="." method="_on_title_screen_pressed"] diff --git a/gui/credits/scripts/credits.gd b/gui/credits/scripts/credits.gd index 1e8bc13..62221c2 100644 --- a/gui/credits/scripts/credits.gd +++ b/gui/credits/scripts/credits.gd @@ -2,4 +2,8 @@ extends CanvasLayer class_name Credits func appear(): - %AnimationPlayer.play("appear") \ No newline at end of file + %AnimationPlayer.play("appear") + +func _on_title_screen_pressed(): + SceneManager.change_to_scene(TitleScene.new(), false) + diff --git a/gui/game/announce/announce.tscn b/gui/game/announce/announce.tscn index 4c7ce5b..9a8f9dc 100644 --- a/gui/game/announce/announce.tscn +++ b/gui/game/announce/announce.tscn @@ -22,11 +22,6 @@ point_count = 4 offsets = PackedFloat32Array(0, 0.8689956, 0.98253274) colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) -[sub_resource type="LabelSettings" id="LabelSettings_6qyp1"] -font = ExtResource("4_aao0q") -font_size = 50 -font_color = Color(1, 0.6509804, 0.09019608, 1) - [sub_resource type="ViewportTexture" id="ViewportTexture_aao0q"] viewport_path = NodePath("AnnounceContainer/HBoxContainer/ObjectVisualiser/SubViewport") @@ -227,11 +222,22 @@ text = "NEW_TOOL" label_settings = ExtResource("3_7nrno") horizontal_alignment = 1 -[node name="AnnounceText" type="Label" parent="AnnounceContainer" unique_id=1537255164] +[node name="AnnounceText" type="RichTextLabel" parent="AnnounceContainer" unique_id=1992702255] unique_name_in_owner = true layout_mode = 2 +theme_override_colors/default_color = Color(1, 0.6509804, 0.08627451, 1) +theme_override_fonts/normal_font = ExtResource("4_aao0q") +theme_override_fonts/bold_font = ExtResource("4_aao0q") +theme_override_fonts/bold_italics_font = ExtResource("4_aao0q") +theme_override_fonts/italics_font = ExtResource("4_aao0q") +theme_override_font_sizes/normal_font_size = 50 +theme_override_font_sizes/bold_font_size = 60 +theme_override_font_sizes/bold_italics_font_size = 50 +theme_override_font_sizes/italics_font_size = 50 +theme_override_font_sizes/mono_font_size = 50 +bbcode_enabled = true text = "Pelle" -label_settings = SubResource("LabelSettings_6qyp1") +fit_content = true horizontal_alignment = 1 [node name="HBoxContainer" type="GridContainer" parent="AnnounceContainer" unique_id=802355154] @@ -279,11 +285,12 @@ own_world_3d = true transparent_bg = true size = Vector2i(300, 300) -[node name="AnnouceObject" type="Node3D" parent="AnnounceContainer/HBoxContainer/ObjectVisualiser/SubViewport" unique_id=986671004] +[node name="AnnounceObject" type="Node3D" parent="AnnounceContainer/HBoxContainer/ObjectVisualiser/SubViewport" unique_id=986671004] unique_name_in_owner = true -transform = Transform3D(-0.054461285, 0.73170173, 0.6795513, -0.8508927, 0.32199714, -0.4149924, -0.52245957, -0.6008157, 0.60510355, 0, 0, 0) +transform = Transform3D(0.9687702, -0.030383619, -0.24602485, -0.11000262, 0.83650446, -0.53682446, 0.22209063, 0.54715794, 0.8071189, 0, 0, 0) [node name="Camera3D" type="Camera3D" parent="AnnounceContainer/HBoxContainer/ObjectVisualiser/SubViewport" unique_id=1788331074] +unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1) keep_aspect = 0 current = true diff --git a/gui/game/announce/scripts/announce.gd b/gui/game/announce/scripts/announce.gd index 319211f..a6f9ffb 100644 --- a/gui/game/announce/scripts/announce.gd +++ b/gui/game/announce/scripts/announce.gd @@ -4,11 +4,11 @@ class_name Announce const DEFAULT_OBJECT_ACCELERATION = Vector2(3,0) -@export var announce_object : AnnouceObject = null : set = set_announce_object +@export var announce_object : AnnounceObject = null : set = set_announce_object @export_tool_button("Update", "Callable") var update_action = set_announce_object -var announce_objects : Array[AnnouceObject] = [] +var announce_objects : Array[AnnounceObject] = [] var object_acceleration := Vector2(0,0) @@ -33,6 +33,26 @@ func _ready(): GameInfo.game_data.item_announced.append(i.name) ) + if ( + GameInfo.game_data.max_energy_announced != GameInfo.game_data.player_data.max_energy + ): + announce_objects.append(AnnounceModel.new( + tr("UPGRADED_MAX_ENERGY_TO_%d") % GameInfo.game_data.player_data.max_energy + )) + GameInfo.game_data.max_energy_announced = GameInfo.game_data.player_data.max_energy + + if ( + GameInfo.game_data.max_inventory_announced != GameInfo.game_data.player_data.inventory.seeds_size + ): + announce_objects.append(AnnounceModel.new( + tr("UPGRADED_INVENTORY_SIZE_TO_%d") % GameInfo.game_data.player_data.inventory.seeds_size + )) + GameInfo.game_data.max_inventory_announced = GameInfo.game_data.player_data.inventory.seeds_size + + + + + func _process(delta): if announce_object == null and not visible and len(announce_objects) > 0: announce_object = announce_objects.pop_front() @@ -71,18 +91,20 @@ func update_rotation(delta): else : object_acceleration = object_acceleration.lerp(DEFAULT_OBJECT_ACCELERATION, 0.1) - %AnnouceObject.rotate(Vector3.UP, object_rotation.x * delta) - %AnnouceObject.rotate(Vector3.RIGHT, object_rotation.y * delta) + %AnnounceObject.rotate(Vector3.UP, object_rotation.x * delta) + %AnnounceObject.rotate(Vector3.RIGHT, object_rotation.y * delta) func set_announce_object(object := announce_object): Pointer.action_disabled = not object if is_node_ready() and object: - for children in %AnnouceObject.get_children(): + for children in %AnnounceObject.get_children(): children.queue_free() - %AnnouceObject.add_child(object.get_3d_object()) - %AnnouceObject.rotation = Vector3.ZERO + %Camera3D.position.z = object.get_camera_z_pos() + + %AnnounceObject.add_child(object.get_3d_object()) + %AnnounceObject.rotation = Vector3.ZERO %AnnounceTitle.text = object.get_title() %AnnounceText.text = object.get_text() %AnnounceDesc.text = object.get_desc() diff --git a/gui/game/announce/scripts/announce_model.gd b/gui/game/announce/scripts/announce_model.gd new file mode 100644 index 0000000..9d7d5da --- /dev/null +++ b/gui/game/announce/scripts/announce_model.gd @@ -0,0 +1,32 @@ +@tool +extends AnnounceObject +class_name AnnounceModel + +const ORCHID_3D_SCENE = preload("res://entities/player_3d/resources/3d_orchid.blend") + +@export var text : String + + +func _init( + _text := text +): + text = _text + +func get_3d_object() -> Node3D: + return ORCHID_3D_SCENE.instantiate() + +func get_title() -> String: + return "MODEL_HAS_BEEN_UPGRADED" + +func get_text() -> String: + return text + +func get_camera_z_pos() -> float: + return 5. + +func get_card_info() -> CardInfo: + return null + +func _on_dismiss(): + pass + # GameInfo.game_data.player_data.tool_discovered.append(tool_item.get_item_name()) \ No newline at end of file diff --git a/gui/game/announce/scripts/announce_model.gd.uid b/gui/game/announce/scripts/announce_model.gd.uid new file mode 100644 index 0000000..e26384a --- /dev/null +++ b/gui/game/announce/scripts/announce_model.gd.uid @@ -0,0 +1 @@ +uid://dnemq1wa14s8g diff --git a/gui/game/announce/scripts/annouce_object.gd b/gui/game/announce/scripts/announce_object.gd similarity index 82% rename from gui/game/announce/scripts/annouce_object.gd rename to gui/game/announce/scripts/announce_object.gd index 1f9e96d..980b63a 100644 --- a/gui/game/announce/scripts/annouce_object.gd +++ b/gui/game/announce/scripts/announce_object.gd @@ -1,6 +1,6 @@ @abstract extends Resource -class_name AnnouceObject +class_name AnnounceObject var desc := "" var image : Texture = null @@ -17,6 +17,9 @@ func get_desc() -> String: func get_image() -> Texture: return image +func get_camera_z_pos() -> float: + return 1.0 + @abstract func get_card_info() -> CardInfo @abstract func _on_dismiss() \ No newline at end of file diff --git a/gui/game/announce/scripts/annouce_object.gd.uid b/gui/game/announce/scripts/announce_object.gd.uid similarity index 100% rename from gui/game/announce/scripts/annouce_object.gd.uid rename to gui/game/announce/scripts/announce_object.gd.uid diff --git a/gui/game/announce/scripts/annouce_tool.gd b/gui/game/announce/scripts/announce_tool.gd similarity index 97% rename from gui/game/announce/scripts/annouce_tool.gd rename to gui/game/announce/scripts/announce_tool.gd index 917f7a7..57cf9c9 100644 --- a/gui/game/announce/scripts/annouce_tool.gd +++ b/gui/game/announce/scripts/announce_tool.gd @@ -1,5 +1,5 @@ @tool -extends AnnouceObject +extends AnnounceObject class_name AnnounceTool const ITEM_3D_SCENE = preload("res://gui/game/inventory_gui/inventory_item/inventory_item_3d.tscn") diff --git a/gui/game/announce/scripts/annouce_tool.gd.uid b/gui/game/announce/scripts/announce_tool.gd.uid similarity index 100% rename from gui/game/announce/scripts/annouce_tool.gd.uid rename to gui/game/announce/scripts/announce_tool.gd.uid diff --git a/project.godot b/project.godot index 1eccda1..12cec43 100644 --- a/project.godot +++ b/project.godot @@ -128,7 +128,7 @@ variables={ "whoareyou": "false", "whynorth": "false" } -translation/id_counter=280 +translation/id_counter=295 translation/locales=[] history/visited_event_history_enabled=true audio/type_sound_bus="Sfx" @@ -264,7 +264,7 @@ zoom_out={ [internationalization] locale/translation_remaps={} -locale/translations=PackedStringArray("res://translation/game/gui.en.translation", "res://translation/game/gui.fr.translation", "res://translation/dialogs/dialogic_character_translations.en.translation", "res://translation/dialogs/dialogic_demeter_ship_failed_translation.en.translation", "res://translation/dialogs/dialogic_demeter_ship_failed_translation.fr.translation", "res://translation/dialogs/dialogic_1_waking_up_translation.en.translation", "res://translation/dialogs/dialogic_1_waking_up_translation.fr.translation", "res://translation/dialogs/dialogic_2_demeter_intro_translation.en.translation", "res://translation/dialogs/dialogic_2_demeter_intro_translation.fr.translation", "res://translation/dialogs/dialogic_3_demeter_ship_presentation_translation.en.translation", "res://translation/dialogs/dialogic_3_demeter_ship_presentation_translation.fr.translation", "res://translation/dialogs/dialogic_4_cave_translation.en.translation", "res://translation/dialogs/dialogic_4_cave_translation.fr.translation", "res://translation/dialogs/dialogic_5_mercury_arrival_translation.en.translation", "res://translation/dialogs/dialogic_5_mercury_arrival_translation.fr.translation", "res://translation/dialogs/dialogic_6_mercury_departure_translation.en.translation", "res://translation/dialogs/dialogic_6_mercury_departure_translation.fr.translation", "res://translation/dialogs/dialogic_7_venus_arrival_translation.en.translation", "res://translation/dialogs/dialogic_7_venus_arrival_translation.fr.translation", "res://translation/dialogs/dialogic_8_venus_departure_translation.en.translation", "res://translation/dialogs/dialogic_8_venus_departure_translation.fr.translation", "res://translation/dialogs/dialogic_9_borea_translation.en.translation", "res://translation/dialogs/dialogic_cave_translation.en.translation", "res://translation/dialogs/dialogic_cave_translation.fr.translation", "res://translation/dialogs/dialogic_character_translations.fr.translation", "res://translation/dialogs/dialogic_6_vending_machine_presentation_translation.en.translation", "res://translation/dialogs/dialogic_6_vending_machine_presentation_translation.fr.translation") +locale/translations=PackedStringArray("res://translation/game/gui.en.translation", "res://translation/game/gui.fr.translation", "res://translation/dialogs/dialogic_character_translations.en.translation", "res://translation/dialogs/dialogic_demeter_ship_failed_translation.en.translation", "res://translation/dialogs/dialogic_demeter_ship_failed_translation.fr.translation", "res://translation/dialogs/dialogic_1_waking_up_translation.en.translation", "res://translation/dialogs/dialogic_1_waking_up_translation.fr.translation", "res://translation/dialogs/dialogic_2_demeter_intro_translation.en.translation", "res://translation/dialogs/dialogic_2_demeter_intro_translation.fr.translation", "res://translation/dialogs/dialogic_3_demeter_ship_presentation_translation.en.translation", "res://translation/dialogs/dialogic_3_demeter_ship_presentation_translation.fr.translation", "res://translation/dialogs/dialogic_4_cave_translation.en.translation", "res://translation/dialogs/dialogic_4_cave_translation.fr.translation", "res://translation/dialogs/dialogic_5_mercury_arrival_translation.en.translation", "res://translation/dialogs/dialogic_5_mercury_arrival_translation.fr.translation", "res://translation/dialogs/dialogic_6_mercury_departure_translation.en.translation", "res://translation/dialogs/dialogic_6_mercury_departure_translation.fr.translation", "res://translation/dialogs/dialogic_7_venus_arrival_translation.en.translation", "res://translation/dialogs/dialogic_7_venus_arrival_translation.fr.translation", "res://translation/dialogs/dialogic_8_venus_departure_translation.en.translation", "res://translation/dialogs/dialogic_8_venus_departure_translation.fr.translation", "res://translation/dialogs/dialogic_9_borea_translation.en.translation", "res://translation/dialogs/dialogic_cave_translation.en.translation", "res://translation/dialogs/dialogic_cave_translation.fr.translation", "res://translation/dialogs/dialogic_character_translations.fr.translation", "res://translation/dialogs/dialogic_6_vending_machine_presentation_translation.en.translation", "res://translation/dialogs/dialogic_6_vending_machine_presentation_translation.fr.translation", "res://translation/dialogs/dialogic_1_aqua_travel_phone_call_translation.en.translation", "res://translation/dialogs/dialogic_1_astra_travel_phone_call_translation.en.translation", "res://translation/dialogs/dialogic_1_estia_travel_phone_call_translation.en.translation", "res://translation/dialogs/dialogic_1_subterra_travel_phone_call_translation.en.translation", "res://translation/dialogs/dialogic_2_aqua_arrival_translation.en.translation", "res://translation/dialogs/dialogic_2_astra_top_translation.en.translation", "res://translation/dialogs/dialogic_2_estia_arrival_translation.en.translation", "res://translation/dialogs/dialogic_2_subterra_arrival_translation.en.translation", "res://translation/dialogs/dialogic_3_astra_end_translation.en.translation", "res://translation/dialogs/dialogic_91_borea_comms_up_translation.en.translation", "res://translation/dialogs/dialogic_92_borea_later_translation.en.translation", "res://translation/dialogs/dialogic_9_borea_arrival_translation.en.translation") locale/test="fr" [rendering] diff --git a/stages/terrain/region/scripts/region.gd b/stages/terrain/region/scripts/region.gd index 78e7027..53e7e8a 100644 --- a/stages/terrain/region/scripts/region.gd +++ b/stages/terrain/region/scripts/region.gd @@ -48,6 +48,7 @@ var data_last_updated = 0. var plant_grid : PlantGrid # Cheat Code +# TOCHANGE func _input(_e): if ( Input.is_action_pressed("drop") diff --git a/stages/title_screen/title_screen.tscn b/stages/title_screen/title_screen.tscn index 75317fe..a4d0539 100644 --- a/stages/title_screen/title_screen.tscn +++ b/stages/title_screen/title_screen.tscn @@ -181,6 +181,18 @@ tracks/8/keys = { "update": 1, "values": [1.0] } +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("../ColorRect:modulate:a") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0.0] +} [sub_resource type="Animation" id="Animation_ofiho"] resource_name = "arrive" @@ -292,6 +304,18 @@ tracks/8/keys = { "update": 0, "values": [0.0, 1.0] } +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("../ColorRect:modulate:a") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0, 0.33333334), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [1.0, 0.0] +} [sub_resource type="AnimationLibrary" id="AnimationLibrary_1xafb"] _data = { @@ -543,6 +567,17 @@ unique_name_in_owner = true z_index = 100 mouse_filter = 2 +[node name="ColorRect" type="ColorRect" parent="." unique_id=1251793255] +modulate = Color(1, 1, 1, 0) +z_index = 2 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +color = Color(0.0627451, 0.05882353, 0.16862746, 1) + [connection signal="pressed" from="MarginContainer/GridContainer/VBoxContainer/VBoxContainer/Start" to="." method="_on_start_pressed"] [connection signal="pressed" from="MarginContainer/GridContainer/VBoxContainer/VBoxContainer/StartInfinite" to="." method="_on_start_infinite_pressed"] [connection signal="button_down" from="MarginContainer/GridContainer/VBoxContainer/VBoxContainer/Settings" to="." method="_on_settings_button_down"] diff --git a/translation/game/gui.csv b/translation/game/gui.csv index d930765..60683b6 100644 --- a/translation/game/gui.csv +++ b/translation/game/gui.csv @@ -371,6 +371,9 @@ ORBIT,Orbit,Orbite RECHARGE_NUMBER,Recharge Number,Nombre de recharge ORCHID_ENERGY,Orchid's energy,Énergie d'Orchid NEW_TOOL,New tool,Nouvel Outil +MODEL_HAS_BEEN_UPGRADED,Model has been upgraded,Votre modèle à été amélioré +UPGRADED_MAX_ENERGY_TO_%d,Max energy set to [b]%d[/b],[b]%d[/b] d'énergie maximale +UPGRADED_INVENTORY_SIZE_TO_%d,Inventory size set to [b]%d[/b],[b]%d[/b] de taille d'inventaire NEW_MUTATION,New Mutation,Nouvelle Mutation THIS_MUTATION_CAN_NOW_APPEAR_ON_SEEDS,"This mutation can now appear on seeds","Cette mutation pourra désormais apparaître sur les graines" NEW_ARTEFACT,New Artefact,Nouvel Artefact