diff --git a/common/assets/materials/cristal.tres b/common/assets/materials/cristal.tres new file mode 100644 index 0000000..235dddb --- /dev/null +++ b/common/assets/materials/cristal.tres @@ -0,0 +1,14 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://di0m3uqgi3l08"] + +[ext_resource type="Texture2D" uid="uid://dfd72vla6crn4" path="res://common/assets/textures/cristal.png" id="1_m4qy0"] + +[resource] +diffuse_mode = 3 +specular_mode = 1 +disable_fog = true +albedo_texture = ExtResource("1_m4qy0") +metallic_specular = 1.0 +rim_tint = 0.48 +stencil_flags = 2 +stencil_reference = 5 +stencil_outline_thickness = 0.626 diff --git a/common/assets/textures/cristal.png b/common/assets/textures/cristal.png new file mode 100644 index 0000000..5c12845 Binary files /dev/null and b/common/assets/textures/cristal.png differ diff --git a/common/assets/textures/cristal.png.import b/common/assets/textures/cristal.png.import new file mode 100644 index 0000000..a8809c8 --- /dev/null +++ b/common/assets/textures/cristal.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dfd72vla6crn4" +path.s3tc="res://.godot/imported/cristal.png-542ce388785d47ebc69b0d8cd0728915.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://common/assets/textures/cristal.png" +dest_files=["res://.godot/imported/cristal.png-542ce388785d47ebc69b0d8cd0728915.s3tc.ctex"] + +[params] + +compress/mode=2 +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=true +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=0 diff --git a/common/audio_manager/assets/ambiance/cave/solarmusic-dripping-water-in-cave-114694.ogg b/common/audio_manager/assets/ambiance/cave/solarmusic-dripping-water-in-cave-114694.ogg new file mode 100644 index 0000000..1327327 Binary files /dev/null and b/common/audio_manager/assets/ambiance/cave/solarmusic-dripping-water-in-cave-114694.ogg differ diff --git a/common/audio_manager/assets/ambiance/cave/solarmusic-dripping-water-in-cave-114694.ogg.import b/common/audio_manager/assets/ambiance/cave/solarmusic-dripping-water-in-cave-114694.ogg.import new file mode 100644 index 0000000..6184012 --- /dev/null +++ b/common/audio_manager/assets/ambiance/cave/solarmusic-dripping-water-in-cave-114694.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://dq2nodhwnp73f" +path="res://.godot/imported/solarmusic-dripping-water-in-cave-114694.ogg-81f5d41775da1d0914399edcb9214d3c.oggvorbisstr" + +[deps] + +source_file="res://common/audio_manager/assets/ambiance/cave/solarmusic-dripping-water-in-cave-114694.ogg" +dest_files=["res://.godot/imported/solarmusic-dripping-water-in-cave-114694.ogg-81f5d41775da1d0914399edcb9214d3c.oggvorbisstr"] + +[params] + +loop=true +loop_offset=0.0 +bpm=0.0 +beat_count=0 +bar_beats=4 diff --git a/common/audio_manager/assets/sfx/cristal/freesound_community-wine-glass-clink-36036.mp3 b/common/audio_manager/assets/sfx/cristal/freesound_community-wine-glass-clink-36036.mp3 new file mode 100644 index 0000000..6439be8 Binary files /dev/null and b/common/audio_manager/assets/sfx/cristal/freesound_community-wine-glass-clink-36036.mp3 differ diff --git a/common/audio_manager/assets/sfx/cristal/freesound_community-wine-glass-clink-36036.mp3.import b/common/audio_manager/assets/sfx/cristal/freesound_community-wine-glass-clink-36036.mp3.import new file mode 100644 index 0000000..d67b166 --- /dev/null +++ b/common/audio_manager/assets/sfx/cristal/freesound_community-wine-glass-clink-36036.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://dnqq2sy3dxrb2" +path="res://.godot/imported/freesound_community-wine-glass-clink-36036.mp3-bc462b7f4a73f6e9bc3696ca5c63bc97.mp3str" + +[deps] + +source_file="res://common/audio_manager/assets/sfx/cristal/freesound_community-wine-glass-clink-36036.mp3" +dest_files=["res://.godot/imported/freesound_community-wine-glass-clink-36036.mp3-bc462b7f4a73f6e9bc3696ca5c63bc97.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/common/audio_manager/assets/sfx/earth_rumble/sslc2022-earth-rumble-128880.mp3 b/common/audio_manager/assets/sfx/earth_rumble/sslc2022-earth-rumble-128880.mp3 new file mode 100644 index 0000000..178306e Binary files /dev/null and b/common/audio_manager/assets/sfx/earth_rumble/sslc2022-earth-rumble-128880.mp3 differ diff --git a/common/audio_manager/assets/sfx/earth_rumble/sslc2022-earth-rumble-128880.mp3.import b/common/audio_manager/assets/sfx/earth_rumble/sslc2022-earth-rumble-128880.mp3.import new file mode 100644 index 0000000..f5b1886 --- /dev/null +++ b/common/audio_manager/assets/sfx/earth_rumble/sslc2022-earth-rumble-128880.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://di6id2kyfy2e1" +path="res://.godot/imported/sslc2022-earth-rumble-128880.mp3-cbdb82e7630ba8aed62692404d0e45e0.mp3str" + +[deps] + +source_file="res://common/audio_manager/assets/sfx/earth_rumble/sslc2022-earth-rumble-128880.mp3" +dest_files=["res://.godot/imported/sslc2022-earth-rumble-128880.mp3-cbdb82e7630ba8aed62692404d0e45e0.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/common/audio_manager/assets/sfx/pickaxe/pickaxe_1_reverb.wav b/common/audio_manager/assets/sfx/pickaxe/pickaxe_1_reverb.wav new file mode 100644 index 0000000..c80a232 Binary files /dev/null and b/common/audio_manager/assets/sfx/pickaxe/pickaxe_1_reverb.wav differ diff --git a/common/audio_manager/assets/sfx/pickaxe/pickaxe_1_reverb.wav.import b/common/audio_manager/assets/sfx/pickaxe/pickaxe_1_reverb.wav.import new file mode 100644 index 0000000..ee4519a --- /dev/null +++ b/common/audio_manager/assets/sfx/pickaxe/pickaxe_1_reverb.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://3c4nxjasebyk" +path="res://.godot/imported/pickaxe_1_reverb.wav-8d6172bc1e5c2f43ec5b5cf869d5b6e3.sample" + +[deps] + +source_file="res://common/audio_manager/assets/sfx/pickaxe/pickaxe_1_reverb.wav" +dest_files=["res://.godot/imported/pickaxe_1_reverb.wav-8d6172bc1e5c2f43ec5b5cf869d5b6e3.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/common/audio_manager/assets/sfx/pickaxe/pickaxe_2_reverb.wav b/common/audio_manager/assets/sfx/pickaxe/pickaxe_2_reverb.wav new file mode 100644 index 0000000..70f2d95 Binary files /dev/null and b/common/audio_manager/assets/sfx/pickaxe/pickaxe_2_reverb.wav differ diff --git a/common/audio_manager/assets/sfx/pickaxe/pickaxe_2_reverb.wav.import b/common/audio_manager/assets/sfx/pickaxe/pickaxe_2_reverb.wav.import new file mode 100644 index 0000000..588c4cb --- /dev/null +++ b/common/audio_manager/assets/sfx/pickaxe/pickaxe_2_reverb.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://bs5ldhabymm5p" +path="res://.godot/imported/pickaxe_2_reverb.wav-c953afb7e49205a0f4377738e1135a5b.sample" + +[deps] + +source_file="res://common/audio_manager/assets/sfx/pickaxe/pickaxe_2_reverb.wav" +dest_files=["res://.godot/imported/pickaxe_2_reverb.wav-c953afb7e49205a0f4377738e1135a5b.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/common/audio_manager/assets/sfx/pickaxe/pickaxe_3_reverb.wav b/common/audio_manager/assets/sfx/pickaxe/pickaxe_3_reverb.wav new file mode 100644 index 0000000..26c5cc0 Binary files /dev/null and b/common/audio_manager/assets/sfx/pickaxe/pickaxe_3_reverb.wav differ diff --git a/common/audio_manager/assets/sfx/pickaxe/pickaxe_3_reverb.wav.import b/common/audio_manager/assets/sfx/pickaxe/pickaxe_3_reverb.wav.import new file mode 100644 index 0000000..21a4dee --- /dev/null +++ b/common/audio_manager/assets/sfx/pickaxe/pickaxe_3_reverb.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://bu278eqn8krnb" +path="res://.godot/imported/pickaxe_3_reverb.wav-d3e3d8b6b50a16c6757536f43c8c6ccd.sample" + +[deps] + +source_file="res://common/audio_manager/assets/sfx/pickaxe/pickaxe_3_reverb.wav" +dest_files=["res://.godot/imported/pickaxe_3_reverb.wav-d3e3d8b6b50a16c6757536f43c8c6ccd.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/common/audio_manager/assets/sfx/signal/universfield-bubble-pop-07-487896.mp3 b/common/audio_manager/assets/sfx/signal/universfield-bubble-pop-07-487896.mp3 new file mode 100644 index 0000000..2b92796 Binary files /dev/null and b/common/audio_manager/assets/sfx/signal/universfield-bubble-pop-07-487896.mp3 differ diff --git a/common/audio_manager/assets/sfx/signal/universfield-bubble-pop-07-487896.mp3.import b/common/audio_manager/assets/sfx/signal/universfield-bubble-pop-07-487896.mp3.import new file mode 100644 index 0000000..a241f63 --- /dev/null +++ b/common/audio_manager/assets/sfx/signal/universfield-bubble-pop-07-487896.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://rf7hachl3042" +path="res://.godot/imported/universfield-bubble-pop-07-487896.mp3-9674fcc5b43af938e0c8845e16ca6bfd.mp3str" + +[deps] + +source_file="res://common/audio_manager/assets/sfx/signal/universfield-bubble-pop-07-487896.mp3" +dest_files=["res://.godot/imported/universfield-bubble-pop-07-487896.mp3-9674fcc5b43af938e0c8845e16ca6bfd.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/common/audio_manager/audio_manager.tscn b/common/audio_manager/audio_manager.tscn index b020151..793147e 100644 --- a/common/audio_manager/audio_manager.tscn +++ b/common/audio_manager/audio_manager.tscn @@ -1,6 +1,8 @@ [gd_scene format=3 uid="uid://b6hscxcrj065q"] [ext_resource type="Script" uid="uid://2p5d6vogtn82" path="res://common/audio_manager/scripts/audio_manager.gd" id="1_0tvca"] +[ext_resource type="AudioStream" uid="uid://dq2nodhwnp73f" path="res://common/audio_manager/assets/ambiance/cave/solarmusic-dripping-water-in-cave-114694.ogg" id="2_ge2sc"] +[ext_resource type="AudioStream" uid="uid://dipnmlprwfo12" path="res://common/audio_manager/assets/ambiance/niveau/ambiance_phase_1.ogg" id="2_tuvql"] [ext_resource type="AudioStream" uid="uid://dipnmlprwfo12" path="res://common/audio_manager/assets/ambiance/niveau/ambiance.ogg" id="3_qvjf5"] [ext_resource type="AudioStream" uid="uid://b1hut6lc1jevh" path="res://common/audio_manager/assets/morceaux/niveau/mines_phase_2.ogg" id="4_2fduo"] [ext_resource type="AudioStream" uid="uid://cdohaice7nc8d" path="res://common/audio_manager/assets/ambiance/niveau/ambiance_foggy.ogg" id="4_ipd1r"] @@ -129,6 +131,11 @@ script = ExtResource("1_0tvca") [node name="Ambiances" type="Node" parent="." unique_id=1989991562] unique_name_in_owner = true +[node name="Cave" type="AudioStreamPlayer" parent="Ambiances" unique_id=71769481] +stream = ExtResource("2_ge2sc") +volume_db = -7.195 +pitch_scale = 0.5 + [node name="BaseRelais" type="AudioStreamPlayer" parent="Ambiances" unique_id=1895636918] unique_name_in_owner = true stream = ExtResource("7_ge2sc") diff --git a/common/audio_manager/scripts/audio_manager.gd b/common/audio_manager/scripts/audio_manager.gd index 058ed63..c059c2f 100644 --- a/common/audio_manager/scripts/audio_manager.gd +++ b/common/audio_manager/scripts/audio_manager.gd @@ -67,6 +67,9 @@ func _on_change_scene(scene : Scene): elif scene is RelayBaseScene: stop_all_musics() play_ambiance_alone("BaseRelais", false) + elif scene is CaveScene: + stop_all_musics() + play_ambiance_alone("Cave", false) # Fonction s'exécutant à chaque début de timeline func _on_timeline_started(): diff --git a/common/game_data/scripts/artefacts/talion_overloader/talion_overloader.blend b/common/game_data/scripts/artefacts/talion_overloader/talion_overloader.blend index 7d8d0f1..eb41fd5 100644 Binary files a/common/game_data/scripts/artefacts/talion_overloader/talion_overloader.blend and b/common/game_data/scripts/artefacts/talion_overloader/talion_overloader.blend differ diff --git a/common/game_data/scripts/artefacts/talion_overloader/talion_overloader.blend.import b/common/game_data/scripts/artefacts/talion_overloader/talion_overloader.blend.import index 487b7da..5d4bf82 100644 --- a/common/game_data/scripts/artefacts/talion_overloader/talion_overloader.blend.import +++ b/common/game_data/scripts/artefacts/talion_overloader/talion_overloader.blend.import @@ -39,6 +39,11 @@ materials/extract_format=0 materials/extract_path="" _subresources={ "materials": { +"Cristal": { +"use_external/enabled": true, +"use_external/fallback_path": "res://common/assets/materials/cristal.tres", +"use_external/path": "uid://di0m3uqgi3l08" +}, "Material": { "use_external/enabled": true, "use_external/fallback_path": "res://common/assets/materials/default_3d.tres", diff --git a/common/game_data/scripts/artefacts/talion_overloader/talion_overloader.blend1 b/common/game_data/scripts/artefacts/talion_overloader/talion_overloader.blend1 index d7c2439..ab1ad9b 100644 Binary files a/common/game_data/scripts/artefacts/talion_overloader/talion_overloader.blend1 and b/common/game_data/scripts/artefacts/talion_overloader/talion_overloader.blend1 differ diff --git a/common/game_data/scripts/artefacts/talion_relay/talion_relay.blend b/common/game_data/scripts/artefacts/talion_relay/talion_relay.blend index 01fe511..7f77912 100644 Binary files a/common/game_data/scripts/artefacts/talion_relay/talion_relay.blend and b/common/game_data/scripts/artefacts/talion_relay/talion_relay.blend differ diff --git a/common/game_data/scripts/artefacts/talion_relay/talion_relay.blend.import b/common/game_data/scripts/artefacts/talion_relay/talion_relay.blend.import index 019b175..66ad1ae 100644 --- a/common/game_data/scripts/artefacts/talion_relay/talion_relay.blend.import +++ b/common/game_data/scripts/artefacts/talion_relay/talion_relay.blend.import @@ -39,6 +39,11 @@ materials/extract_format=0 materials/extract_path="" _subresources={ "materials": { +"Cristal": { +"use_external/enabled": true, +"use_external/fallback_path": "res://common/assets/materials/cristal.tres", +"use_external/path": "uid://di0m3uqgi3l08" +}, "Material": { "use_external/enabled": true, "use_external/fallback_path": "res://common/assets/materials/default_3d.tres", diff --git a/common/game_data/scripts/artefacts/talion_relay/talion_relay.blend1 b/common/game_data/scripts/artefacts/talion_relay/talion_relay.blend1 index 130550a..eb4c060 100644 Binary files a/common/game_data/scripts/artefacts/talion_relay/talion_relay.blend1 and b/common/game_data/scripts/artefacts/talion_relay/talion_relay.blend1 differ diff --git a/common/game_data/scripts/game_data.gd b/common/game_data/scripts/game_data.gd index 507ae64..7a9a026 100644 --- a/common/game_data/scripts/game_data.gd +++ b/common/game_data/scripts/game_data.gd @@ -33,6 +33,7 @@ signal current_region_data_updated(p : RegionData) @export var game_mode : GameMode = GameMode.STORY @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() diff --git a/common/game_data/scripts/progression_data.gd b/common/game_data/scripts/progression_data.gd index 191b6c3..46c6782 100644 --- a/common/game_data/scripts/progression_data.gd +++ b/common/game_data/scripts/progression_data.gd @@ -1,13 +1,12 @@ extends Resource class_name ProgressionData - @export var planted_mutation_ids: Array[String] = [] @export var story_step_i := 0 -@export var ship_tutorial_done = false +@export var mutations_unlocked = 8 var all_mutations: Array[PlantMutation] : get = get_all_mutations -var available_mutations: Array[PlantMutation] : get = get_all_mutations +var available_mutations: Array[PlantMutation] : get = get_available_mutations var available_artefacts: Array[Artefact] : get = get_all_artifacts var story_step : StoryStep : get = get_story_step @@ -19,23 +18,26 @@ func next_story_step() -> void: if story_step_i + 1 < len(get_all_story_steps()): story_step_i += 1 +func get_available_mutations() -> Array[PlantMutation]: + return get_all_mutations().slice(0, mutations_unlocked) + func get_all_mutations() -> Array[PlantMutation]: return [ - AncientMutation.new(), - FertileMutation.new(), - GenerousMutation.new(), - HurriedMutation.new(), - PrecociousMutation.new(), - ProlificMutation.new(), - ProtectiveMutation.new(), - PureMutation.new(), - PurificationMutation.new(), QualityMutation.new(), + AncientMutation.new(), + ProlificMutation.new(), + PrecociousMutation.new(), + PurificationMutation.new(), + VivaciousMutation.new(), QuickMutation.new(), RobustMutation.new(), SocialMutation.new(), + FertileMutation.new(), + HurriedMutation.new(), + GenerousMutation.new(), + ProtectiveMutation.new(), + PureMutation.new(), ToughMutation.new(), - VivaciousMutation.new(), ] func get_all_artifacts() -> Array[Artefact]: diff --git a/common/game_data/scripts/run/run_data.gd b/common/game_data/scripts/run/run_data.gd index 62bc27a..d5a80b2 100644 --- a/common/game_data/scripts/run/run_data.gd +++ b/common/game_data/scripts/run/run_data.gd @@ -32,42 +32,56 @@ func generate_next_run_points() -> Array[RunPoint]: next_run_points = [] for i in range(story_step.get_run_point_number(level+1)): + var last_modifiers : Array[String] = [] + if len(next_run_points): + for m in next_run_points[0].region_parameter.modifiers: + last_modifiers.append(m.modifier_name) next_run_points.append( - generate_next_run_point() + generate_next_run_point(last_modifiers) ) return next_run_points -func generate_next_run_point() -> RunPoint: +func generate_next_run_point(last_modifiers : Array[String] = []) -> RunPoint: var region_parameter = RegionParameter.new() var next_level = level+1 + var challenge_modifiers = generate_challenge_modifiers().filter( + func(m : RegionModifier): return not m.modifier_name in last_modifiers + ) + var benefic_modifiers = generate_benefic_modifiers().filter( + func(m : RegionModifier): return not m.modifier_name in last_modifiers + ) + var normal_modifiers = generate_normal_modifiers().filter( + func(m : RegionModifier): return not m.modifier_name in last_modifiers + ) + if story_step.need_gameplay_modifier(next_level): var is_challenge = randf() < story_step.get_challenge_chance(next_level) if is_challenge: region_parameter.modifiers = [ - generate_challenge_modifiers().pick_random(), - generate_benefic_modifiers().pick_random() + challenge_modifiers.pick_random(), + benefic_modifiers.pick_random() ] as Array[RegionModifier] else: region_parameter.modifiers = [ - generate_normal_modifiers().pick_random() + normal_modifiers.pick_random() ] as Array[RegionModifier] - var first_vending = story_step.get_first_vending_machine_occurence(next_level) - var vending_occurence = story_step.get_vending_machine_occurence(next_level) - if vending_occurence > 0: - if (level - first_vending)%vending_occurence == 0: - region_parameter.modifiers.append(VendingMachineModifier.new()) - + region_parameter.modifiers.append_array( + story_step.get_gameplay_modifiers_for_region(next_level) + ) + region_parameter.modifiers.append_array( story_step.get_story_modifiers_for_region(next_level) ) region_parameter.objective = story_step.get_objective_for_region(next_level) - + region_parameter.charge = story_step.get_charge_number(next_level) + + return RunPoint.new( region_parameter ) @@ -94,7 +108,7 @@ func generate_normal_modifiers() -> Array[RegionModifier]: HarshModifier.new(), ToxicModifier.new(), SandyModifier.new(), - + MagneticModifier.new(), ] func generate_benefic_modifiers() -> Array[RegionModifier]: @@ -102,6 +116,7 @@ func generate_benefic_modifiers() -> Array[RegionModifier]: VendingMachineModifier.new(), ResonnanceModifier.new(), InstableModifier.new(), + CaveModifier.new(), ] diff --git a/common/game_data/scripts/settings_data.gd b/common/game_data/scripts/settings_data.gd index 93c607d..dd8763a 100644 --- a/common/game_data/scripts/settings_data.gd +++ b/common/game_data/scripts/settings_data.gd @@ -57,8 +57,8 @@ const AVAILABLE_LANGUAGES_LABEL = [ #region ------------------ Game ------------------ -const MAX_ZOOM = 1.8 -const MIN_ZOOM = 0.8 +const MAX_ZOOM = 2. +const MIN_ZOOM = 0.5 # Not in settings pannel @export var zoom : float = 1. : diff --git a/common/game_data/scripts/story/astra_story_step.gd b/common/game_data/scripts/story/astra_story_step.gd index 7b8f40e..854f65b 100644 --- a/common/game_data/scripts/story/astra_story_step.gd +++ b/common/game_data/scripts/story/astra_story_step.gd @@ -2,6 +2,7 @@ extends StoryStep class_name AstraStoryStep const MERCURY_ARRIVAL_DIALOG_PATH="res://dialogs/timelines/astra/mercury_arrival.dtl" +const CAVE_DIALOG_PATH="res://dialogs/timelines/astra/cave.dtl" func get_respawn_scene() -> Scene: return AstraScene.new() @@ -15,9 +16,21 @@ func get_destination_scene() -> Scene: "001" ) +func get_cave_occurence(_level : int) -> int: + return 2 + func get_region_sequence_length() -> int: return 4 +func get_objective_for_region(level : int) -> int: + match level: + 1: return 6 + 2: return 10 + 3: return 16 + 4: return 24 + 5: return 34 + _: return get_objective_for_region(level-1) + (level-2) * 5 + func get_first_vending_machine_occurence(_level : int) -> int: return 0 @@ -28,6 +41,8 @@ func get_challenge_chance(_level : int) -> float: return 0. func get_ship_dialog_path(level : int, ship_in_space := true) -> String: - if ship_in_space and level == get_region_sequence_length() - 1: + if ship_in_space and level == get_cave_occurence(level) - 1: + return CAVE_DIALOG_PATH + if ship_in_space and is_run_finished(level + 1): return MERCURY_ARRIVAL_DIALOG_PATH return "" \ No newline at end of file diff --git a/common/game_data/scripts/story/mercury_story_step.gd b/common/game_data/scripts/story/mercury_story_step.gd index cb4f95c..0d242a7 100644 --- a/common/game_data/scripts/story/mercury_story_step.gd +++ b/common/game_data/scripts/story/mercury_story_step.gd @@ -22,11 +22,11 @@ func get_destination_scene() -> Scene: ) func get_first_vending_machine_occurence(_level : int) -> int: - return 0 + return 1 func get_ship_dialog_path(level : int, ship_in_space := true) -> String: if level == 0: return MERCURY_DEPARTURE_DIALOG_PATH - if ship_in_space and level == get_region_sequence_length() - 1: + if ship_in_space and is_run_finished(level + 1): return VENUS_ARRIVAL_DIALOG_PATH return "" \ No newline at end of file diff --git a/common/game_data/scripts/story/story_step.gd b/common/game_data/scripts/story/story_step.gd index 10d441c..6354391 100644 --- a/common/game_data/scripts/story/story_step.gd +++ b/common/game_data/scripts/story/story_step.gd @@ -19,7 +19,7 @@ func get_ship_dialog_path(_level : int, _ship_in_space := true) -> String: #region ------------------ Run ------------------ func is_run_finished(level : int) -> bool: - return level == get_region_sequence_length() + return level == get_region_sequence_length() - 1 func get_region_sequence_length() -> int: return 6 @@ -28,7 +28,13 @@ func get_first_vending_machine_occurence(_level : int) -> int: return 2 func get_vending_machine_occurence(_level : int) -> int: - return 4 + return 3 + +func get_first_cave_occurence(level : int) -> int: + return get_cave_occurence(level) + +func get_cave_occurence(_level : int) -> int: + return 3 func get_challenge_chance(_level : int) -> float: return 0.3 @@ -38,15 +44,17 @@ func get_run_point_number(level : int) -> int: return 1 return 2 +func get_charge_number(_level : int) -> int: + return 10 + func get_objective_for_region(level : int) -> int: match level: - 0: return 1 - 1: return 8 - 2: return 10 - 3: return 15 - 4: return 20 - 5: return 30 - _: return get_objective_for_region(level-1) + (level-3) * 5 + 1: return 10 + 2: return 15 + 3: return 20 + 4: return 30 + 5: return 45 + _: return get_objective_for_region(level-1) + (level-2) * 5 func get_story_modifiers_for_region(level : int) -> Array[RegionModifier]: var modifiers : Array[RegionModifier] = [] @@ -54,6 +62,25 @@ func get_story_modifiers_for_region(level : int) -> Array[RegionModifier]: var dest_mod = DestinationModifier.new() dest_mod.destination_scene = get_destination_scene() modifiers.append(dest_mod) + + var first_cave = get_first_cave_occurence(level) + var cave_occurence = get_cave_occurence(level) + if cave_occurence > 0 and level >= first_cave: + if (level - first_cave)%cave_occurence == 0: + modifiers.append(CaveModifier.new()) + + return modifiers + +func get_gameplay_modifiers_for_region(level : int) -> Array[RegionModifier]: + var modifiers : Array[RegionModifier] = [] + + if need_gameplay_modifier(level): + var first_vending = get_first_vending_machine_occurence(level) + var vending_occurence = get_vending_machine_occurence(level) + if vending_occurence > 0 and level >= first_vending: + if (level - first_vending)%vending_occurence == 0: + modifiers.append(VendingMachineModifier.new()) + return modifiers func need_gameplay_modifier(level : int): diff --git a/common/icons/cristal.svg b/common/icons/cristal.svg new file mode 100644 index 0000000..d27df19 --- /dev/null +++ b/common/icons/cristal.svg @@ -0,0 +1,23 @@ + + + + + + diff --git a/common/icons/cristal.svg.import b/common/icons/cristal.svg.import new file mode 100644 index 0000000..d190803 --- /dev/null +++ b/common/icons/cristal.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cqdyykjx6hdrr" +path.s3tc="res://.godot/imported/cristal.svg-7e9a919e9dbc36092f14a8401b5f4888.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://common/icons/cristal.svg" +dest_files=["res://.godot/imported/cristal.svg-7e9a919e9dbc36092f14a8401b5f4888.s3tc.ctex"] + +[params] + +compress/mode=2 +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=true +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=0 +svg/scale=2.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/common/icons/flag-2.svg b/common/icons/flag-2.svg new file mode 100644 index 0000000..9186aca --- /dev/null +++ b/common/icons/flag-2.svg @@ -0,0 +1,23 @@ + + + + + + diff --git a/common/icons/flag-2.svg.import b/common/icons/flag-2.svg.import new file mode 100644 index 0000000..58f270f --- /dev/null +++ b/common/icons/flag-2.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://uckrw5fan88k" +path="res://.godot/imported/flag-2.svg-b4658bfe95b153ec543e0e6f4d1176cb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/icons/flag-2.svg" +dest_files=["res://.godot/imported/flag-2.svg-b4658bfe95b153ec543e0e6f4d1176cb.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/hand-finger b/common/icons/hand-finger new file mode 100644 index 0000000..20f78a1 --- /dev/null +++ b/common/icons/hand-finger @@ -0,0 +1,39 @@ + + + + + + + + + diff --git a/common/icons/hand-finger.svg b/common/icons/hand-finger.svg new file mode 100644 index 0000000..20f78a1 --- /dev/null +++ b/common/icons/hand-finger.svg @@ -0,0 +1,39 @@ + + + + + + + + + diff --git a/common/icons/hand-finger.svg.import b/common/icons/hand-finger.svg.import new file mode 100644 index 0000000..c73dd11 --- /dev/null +++ b/common/icons/hand-finger.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b3vg3tipd4boh" +path="res://.godot/imported/hand-finger.svg-4b9fa57a07066292554e8fd7f7ad9dac.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/icons/hand-finger.svg" +dest_files=["res://.godot/imported/hand-finger.svg-4b9fa57a07066292554e8fd7f7ad9dac.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/magnet.svg b/common/icons/magnet.svg new file mode 100644 index 0000000..86cbb7a --- /dev/null +++ b/common/icons/magnet.svg @@ -0,0 +1,45 @@ + + + + + + + diff --git a/common/icons/magnet.svg.import b/common/icons/magnet.svg.import new file mode 100644 index 0000000..5cd619f --- /dev/null +++ b/common/icons/magnet.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://mv0emix7dwio" +path="res://.godot/imported/magnet.svg-210fc8631abfaf11eefb9e027a72fb42.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/icons/magnet.svg" +dest_files=["res://.godot/imported/magnet.svg-210fc8631abfaf11eefb9e027a72fb42.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/cave_scene.gd b/common/scene_manager/scripts/scenes/cave_scene.gd new file mode 100644 index 0000000..dc815a2 --- /dev/null +++ b/common/scene_manager/scripts/scenes/cave_scene.gd @@ -0,0 +1,31 @@ +extends Scene +class_name CaveScene + +@export var cave_room_seed = 0 + +func _init( + _crs : int = 0 +): + cave_room_seed = _crs + +func get_scene_id() -> String: + return "CRISTAL_CAVE" + +func get_scene_path() -> String: + return "res://stages/3d_scenes/cave/cave.tscn" + +func is_mouse_captured() -> bool: + return true + +func is_needed_to_be_announced() -> bool: + return true + +func get_scene_title() -> String: + return tr("CRISTAL_CAVE") + +func get_scene_icon() -> Texture: + return preload("res://common/icons/cristal.svg") + +func _on_generated(generated_scene : Node): + var cave : Cave = generated_scene as Cave + cave.setup_room(cave_room_seed) \ No newline at end of file diff --git a/common/scene_manager/scripts/scenes/cave_scene.gd.uid b/common/scene_manager/scripts/scenes/cave_scene.gd.uid new file mode 100644 index 0000000..47fbb00 --- /dev/null +++ b/common/scene_manager/scripts/scenes/cave_scene.gd.uid @@ -0,0 +1 @@ +uid://f143q00p8ph1 diff --git a/common/tools/scripts/math.gd b/common/tools/scripts/math.gd index 47d1ff7..44a96f0 100644 --- a/common/tools/scripts/math.gd +++ b/common/tools/scripts/math.gd @@ -12,16 +12,18 @@ static func get_tile_from_pos(coord) -> Vector2i: floori(coord.y / (Region.TILE_SIZE)), ) -static func get_tiles_in_circle(center: Vector2, radius : float) -> Array[Vector2i]: +static func get_tiles_in_circle(center: Vector2,radius : float) -> Array[Vector2i]: var tiles : Array[Vector2i] = [] + var margin = ceili(radius * 0.5) + for x in range( - floori((center.x - radius/2.) / Region.TILE_SIZE), - ceili((center.x + radius/2.) / Region.TILE_SIZE), + floori((center.x - radius/2.) / Region.TILE_SIZE) - margin, + ceili((center.x + radius/2.) / Region.TILE_SIZE) + margin, ): for y in range( - floori((center.y - radius/2.) / Region.TILE_SIZE), - ceili((center.y + radius/2.) / Region.TILE_SIZE), + floori((center.y - radius/2.) / Region.TILE_SIZE) - margin, + ceili((center.y + radius/2.) / Region.TILE_SIZE) + margin, ): if is_tile_on_circle(Vector2i(x,y), center, radius): tiles.append(Vector2i(x,y)) @@ -30,24 +32,29 @@ static func get_tiles_in_circle(center: Vector2, radius : float) -> Array[Vector static func is_tile_on_circle(tile_coord : Vector2i, circle_center: Vector2, circle_radius : float) -> bool: var absolute_tile_pos : Vector2 = tile_coord * Region.TILE_SIZE - # Loop over tile corners to know if the area collide - var corners : Array[Vector2] = [] - for x in [0,1]: - for y in [0,1]: - corners.append( - absolute_tile_pos - + Vector2.RIGHT * x * Region.TILE_SIZE - + Vector2.DOWN * y * Region.TILE_SIZE - ) - - # Check if segment touch area - for i in range(4): - var a = corners[i%4] - var b = corners[(i+1)%4] - if segment_intersect_circle(a,b,circle_center,circle_radius): - return true + var tile_center = absolute_tile_pos + Vector2.ONE * Region.TILE_SIZE / 2 + var tile_radius = roundf(Region.TILE_SIZE/2.) - return false + return pow(tile_center.x - circle_center.x, 2) + pow(tile_center.y - circle_center.y, 2) <= pow(tile_radius + circle_radius, 2) + + # Loop over tile corners to know if the area collide + # var corners : Array[Vector2] = [] + # for x in [0,1]: + # for y in [0,1]: + # corners.append( + # absolute_tile_pos + # + Vector2.RIGHT * x * Region.TILE_SIZE + # + Vector2.DOWN * y * Region.TILE_SIZE + # ) + + # # Check if segment touch area + # for i in range(4): + # var a = corners[i%4] + # var b = corners[(i+1)%4] + # if segment_intersect_circle(a,b,circle_center,circle_radius): + # return true + + # return false # Stolen here https://stackoverflow.com/questions/1073336/circle-line-segment-collision-detection-algorithm diff --git a/common/tools/scripts/test_tiles.gd b/common/tools/scripts/test_tiles.gd new file mode 100644 index 0000000..b28b04f --- /dev/null +++ b/common/tools/scripts/test_tiles.gd @@ -0,0 +1,3 @@ + + + diff --git a/common/tools/scripts/test_tiles.gd.uid b/common/tools/scripts/test_tiles.gd.uid new file mode 100644 index 0000000..17bca07 --- /dev/null +++ b/common/tools/scripts/test_tiles.gd.uid @@ -0,0 +1 @@ +uid://bebwor5r5nnov diff --git a/common/tools/test_tiles.tscn b/common/tools/test_tiles.tscn new file mode 100644 index 0000000..7586060 --- /dev/null +++ b/common/tools/test_tiles.tscn @@ -0,0 +1,9 @@ +[gd_scene format=3 uid="uid://6or2rnjt5ixv"] + +[ext_resource type="Script" uid="uid://bebwor5r5nnov" path="res://common/tools/scripts/test_tiles.gd" id="1_44t07"] + +[node name="TestTiles" type="Node2D" unique_id=949540000] +script = ExtResource("1_44t07") + +[node name="Grid" type="Node2D" parent="." unique_id=2109744474] +unique_name_in_owner = true diff --git a/common/vfx/materials/shaders/topology_map.gdshader b/common/vfx/materials/shaders/topology_map.gdshader new file mode 100644 index 0000000..053a8f8 --- /dev/null +++ b/common/vfx/materials/shaders/topology_map.gdshader @@ -0,0 +1,40 @@ +shader_type canvas_item; + +uniform float line_number = 6; +uniform vec4 line_color : source_color = vec4(1.); +uniform float line_thickness : hint_range(0.0, 0.01) = 0.001; + +const mat3 sobel_x = mat3( + vec3( 1.0, 2.0, 1.0), + vec3( 0.0, 0.0, 0.0), + vec3(-1.0, -2.0, -1.0) +); + +const mat3 sobel_y = mat3( + vec3(1.0, 0.0, -1.0), + vec3(2.0, 0.0, -2.0), + vec3(1.0, 0.0, -1.0) +); + +float sample_quantized(sampler2D text, vec2 uv) { + return ceil(texture(text, uv).r * line_number) / line_number; +} + +void fragment() { + float gx = 0.0; + float gy = 0.0; + + for (int x = 0; x < 3; x++) { + for (int y = 0; y < 3; y++) { + vec2 offset = vec2(float(x) - 1.0, float(y) - 1.0) * line_thickness; + float s = sample_quantized(TEXTURE, UV + offset); + gx += s * sobel_x[x][y]; + gy += s * sobel_y[x][y]; + } + } + + float edge = length(vec2(gx, gy)); + float line = step(0.0001, edge); + + COLOR = vec4(line_color.rgb, line * line_color.a * COLOR.r); +} \ No newline at end of file diff --git a/common/vfx/materials/shaders/topology_map.gdshader.uid b/common/vfx/materials/shaders/topology_map.gdshader.uid new file mode 100644 index 0000000..0de5c61 --- /dev/null +++ b/common/vfx/materials/shaders/topology_map.gdshader.uid @@ -0,0 +1 @@ +uid://bklafn6ulmkij diff --git a/dialogs/timelines/astra/cave.dtl b/dialogs/timelines/astra/cave.dtl new file mode 100644 index 0000000..6221168 --- /dev/null +++ b/dialogs/timelines/astra/cave.dtl @@ -0,0 +1,13 @@ +audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav" +join demeter center [animation="Bounce In" length="1.0"] +demeter: I hope everything is going well for you so far. I'm calling because the next regions you're heading to contain unique rock formations\: the [b]Caverns of Talion[/b]. #id:e5 +- Talion hadn't disappeared? #id:e6 + demeter: Precisely, I'd like you to check for me if its reappearance on the surface also means its reappearance in the caverns. #id:e7 +- How do you know? #id:e8 + demeter: These caverns were well known to humans. Some went there to study Talion, others to explore the cave. These explorations were very risky, but apparently some humans enjoyed risking their lives... #id:e9 +- What does that change for me? #id:ea +demeter: The crystals in these caverns are special; they don't produce life, but they release a powerful mutagenic energy into the air. This will surely help you grow more powerfull plants for the rest of your journey. #id:eb +demeter: Use your detector to find the entrance to the cave; humans had installed an elevator there. #id:ec +audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav" +[wait time="2.0"] +[end_timeline] \ No newline at end of file diff --git a/dialogs/timelines/astra/cave.dtl.uid b/dialogs/timelines/astra/cave.dtl.uid new file mode 100644 index 0000000..a295316 --- /dev/null +++ b/dialogs/timelines/astra/cave.dtl.uid @@ -0,0 +1 @@ +uid://pgqchxycwcpd diff --git a/entities/camera/scripts/camera.gd b/entities/camera/scripts/camera.gd index fc9e717..df10916 100644 --- a/entities/camera/scripts/camera.gd +++ b/entities/camera/scripts/camera.gd @@ -1,29 +1,52 @@ extends Camera2D -class_name Camera +class_name RegionCamera const MOVE_LERP_WEIGHT = 0.9 const ZOOM_LERP_WEIGHT = 0.05 +const SHAKE_INTENSITY = 10.0 +const SHAKE_SPEED = 500.0 + const ZOOM_STEP = 0.1 @export var following : Node2D +@export var should_follow : bool = true @onready var settings = GameInfo.settings_data +@export var shake_active_time = -1 +var shake_noise := FastNoiseLite.new() + func _input(_e): - if Input.is_action_just_pressed("zoom_in"): - settings.zoom = settings.zoom + ZOOM_STEP - GameInfo.save_settings() - if Input.is_action_just_pressed("zoom_out"): - settings.zoom = settings.zoom - ZOOM_STEP - GameInfo.save_settings() + if Input.is_action_just_pressed("zoom_in"): + settings.zoom = settings.zoom + ZOOM_STEP + GameInfo.save_settings() + if Input.is_action_just_pressed("zoom_out"): + settings.zoom = settings.zoom - ZOOM_STEP + GameInfo.save_settings() func _ready(): - if following: - zoom = Vector2.ONE * settings.zoom - global_position = following.global_position + if following and should_follow: + zoom = Vector2.ONE * settings.zoom + global_position = following.global_position -func _process(_delta): - if following: - global_position = following.global_position.lerp(global_position, MOVE_LERP_WEIGHT) - - zoom = zoom.lerp(Vector2.ONE * settings.zoom, MOVE_LERP_WEIGHT) +func _process(delta): + if following and should_follow: + global_position = following.global_position.lerp(global_position, MOVE_LERP_WEIGHT) + + zoom = zoom.lerp(Vector2.ONE * settings.zoom, MOVE_LERP_WEIGHT) + + if shake_active_time > 0.: + print(shake_noise.get_noise_2d(shake_active_time * SHAKE_SPEED, 0) * SHAKE_INTENSITY) + shake_active_time -= delta + + offset = Vector2( + shake_noise.get_noise_2d(shake_active_time * SHAKE_SPEED, 0) * SHAKE_INTENSITY, + shake_noise.get_noise_2d(0, shake_active_time * SHAKE_SPEED) * SHAKE_INTENSITY, + ) + else : + offset = lerp(offset, Vector2.ZERO, 10.5 * delta) + +func shake(time := 5): + shake_noise.seed = randi() + + shake_active_time = time diff --git a/entities/interactable_3d/cristal/artefact_announce.tscn b/entities/interactable_3d/cristal/artefact_announce.tscn new file mode 100644 index 0000000..c412507 --- /dev/null +++ b/entities/interactable_3d/cristal/artefact_announce.tscn @@ -0,0 +1,294 @@ +[gd_scene format=3 uid="uid://bhbc1monbgumh"] + +[ext_resource type="Script" uid="uid://xamd5y6tig71" path="res://entities/interactable_3d/cristal/scripts/artefact_announce.gd" id="1_2sroa"] +[ext_resource type="Texture2D" uid="uid://bi5jo6pf0acjb" path="res://common/icons/carambola.svg" id="2_3vg7r"] +[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="3_doutq"] +[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="4_bw55c"] +[ext_resource type="Script" uid="uid://bqisp5hjs06rj" path="res://gui/game/announce/scripts/announce_inspectable.gd" id="5_5vr2f"] +[ext_resource type="Script" uid="uid://dj2pv1hiwjfv0" path="res://gui/game/card/scripts/card_info.gd" id="7_tryv5"] +[ext_resource type="Script" uid="uid://dgbh38j13g5kn" path="res://gui/game/card/scripts/card_section_info.gd" id="8_duftv"] +[ext_resource type="Texture2D" uid="uid://dth2mj0nh2q70" path="res://common/icons/align-right.svg" id="9_qlk3h"] +[ext_resource type="Script" uid="uid://b4tkium34c831" path="res://gui/game/card/scripts/card_stat_info.gd" id="10_d5x7w"] +[ext_resource type="Texture2D" uid="uid://bsvxhafoxwmw0" path="res://common/icons/cube-3d-sphere.svg" id="11_mb83y"] +[ext_resource type="Environment" uid="uid://bxyp24f85p0xf" path="res://gui/game/assets/gui_3d_environment.tres" id="13_uyc6b"] +[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="14_kb1t6"] +[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="15_ijwr2"] + +[sub_resource type="ViewportTexture" id="ViewportTexture_6hxtc"] +viewport_path = NodePath("Particles/SubViewport") + +[sub_resource type="Curve" id="Curve_brrmr"] +_limits = [-200.0, 200.0, 0.0, 1.0] +_data = [Vector2(0, -200), 0.0, 560.0, 0, 0, Vector2(0.08235294, 92.384125), 1336.3082, 1336.3082, 0, 0, Vector2(0.34901965, 200), 0.0, 0.0, 0, 0, Vector2(0.854902, -200), 0.0, 0.0, 0, 0] +point_count = 4 + +[sub_resource type="Gradient" id="Gradient_0u75y"] +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_u8fe7"] +font = ExtResource("4_bw55c") +font_size = 50 +font_color = Color(1, 0.6509804, 0.09019608, 1) + +[sub_resource type="ViewportTexture" id="ViewportTexture_smt8b"] +viewport_path = NodePath("AnnounceContainer/ObjectVisualiser/SubViewport") + +[sub_resource type="Resource" id="Resource_xdybx"] +script = ExtResource("8_duftv") +title_text = "DESCRIPTION" +title_icon = ExtResource("9_qlk3h") +text = "TALION_OVERLOADER_DESC_TEXT" + +[sub_resource type="Resource" id="Resource_041ff"] +script = ExtResource("7_tryv5") +title = "TALION_OVERLOADER" +subtitle = "ARTEFACT" +important_stat_icon = ExtResource("11_mb83y") +sections = Array[ExtResource("8_duftv")]([SubResource("Resource_xdybx")]) + +[sub_resource type="Animation" id="Animation_aao0q"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ArtefactAnnounce/AnnounceContainer:theme_override_constants/separation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [4] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("ArtefactAnnounce/Particles:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("ArtefactAnnounce/AnnounceContainer:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("ArtefactAnnounce/MarginContainer/BackgroundRect:modulate:a") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [1.0] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("ArtefactAnnounce:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0.03333333), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} + +[sub_resource type="Animation" id="Animation_b6hac"] +resource_name = "appear" +length = 0.8 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ArtefactAnnounce/AnnounceContainer:theme_override_constants/separation") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0.23333333, 0.8), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [480, 4] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("ArtefactAnnounce/Particles:modulate") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.5, 0.8), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("ArtefactAnnounce/AnnounceContainer:modulate") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.2, 0.8), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("ArtefactAnnounce/MarginContainer/BackgroundRect:modulate:a") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.03333333, 0.8), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.8] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("ArtefactAnnounce:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.16666667), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [false, true] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_1aa3a"] +_data = { +&"RESET": SubResource("Animation_aao0q"), +&"appear": SubResource("Animation_b6hac") +} + +[node name="ArtefactAnnounce" type="CanvasLayer" unique_id=1447182082] +visible = false +script = ExtResource("1_2sroa") + +[node name="MarginContainer" type="MarginContainer" parent="." unique_id=1853133518] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="BackgroundRect" type="ColorRect" parent="MarginContainer" unique_id=1594037653] +layout_mode = 2 +color = Color(0.0352941, 0.0196078, 0.12549, 0.705882) + +[node name="Particles" type="TextureRect" parent="." unique_id=1748571879] +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -500.0 +offset_top = -500.0 +offset_right = 500.0 +offset_bottom = 500.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = SubResource("ViewportTexture_6hxtc") + +[node name="SubViewport" type="SubViewport" parent="Particles" unique_id=1123249182] +transparent_bg = true +size = Vector2i(1000, 1000) + +[node name="GPUParticles2D" type="CPUParticles2D" parent="Particles/SubViewport" unique_id=220592083] +position = Vector2(500, 500) +amount = 20 +texture = ExtResource("2_3vg7r") +preprocess = 1.0 +spread = 180.0 +gravity = Vector2(0, 0) +initial_velocity_min = 2.0 +initial_velocity_max = 2.0 +linear_accel_min = 5.0 +linear_accel_max = 5.0 +linear_accel_curve = SubResource("Curve_brrmr") +color_ramp = SubResource("Gradient_0u75y") + +[node name="AnnounceContainer" type="VBoxContainer" parent="." unique_id=645433045] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -627.0 +offset_bottom = 627.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 4 +alignment = 1 + +[node name="AnnounceTitle" type="Label" parent="AnnounceContainer" unique_id=1768593559] +unique_name_in_owner = true +layout_mode = 2 +text = "NEW_ARTEFACT" +label_settings = ExtResource("3_doutq") +horizontal_alignment = 1 + +[node name="AnnounceText" type="Label" parent="AnnounceContainer" unique_id=768724763] +unique_name_in_owner = true +layout_mode = 2 +text = "TALION_OVERLOADER" +label_settings = SubResource("LabelSettings_u8fe7") +horizontal_alignment = 1 + +[node name="ObjectVisualiser" type="TextureRect" parent="AnnounceContainer" unique_id=1180983374] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +mouse_filter = 0 +texture = SubResource("ViewportTexture_smt8b") +stretch_mode = 5 +script = ExtResource("5_5vr2f") +info = SubResource("Resource_041ff") + +[node name="SubViewport" type="SubViewport" parent="AnnounceContainer/ObjectVisualiser" unique_id=1795775056] +own_world_3d = true +transparent_bg = true +size = Vector2i(300, 300) + +[node name="AnnouceObject" type="Node3D" parent="AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=1527573801] +unique_name_in_owner = true +transform = Transform3D(-0.47699222, 0, 0.878631, 0, 0.9995686, 0, -0.8787731, 0, -0.47690943, 0, 0, 0) + +[node name="Camera3D" type="Camera3D" parent="AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=173755338] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1) +keep_aspect = 0 +current = true +fov = 20.0 + +[node name="WorldEnvironment" type="WorldEnvironment" parent="AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=1135825303] +environment = ExtResource("13_uyc6b") + +[node name="OkButton" type="Button" parent="AnnounceContainer" unique_id=249785792] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +theme = ExtResource("14_kb1t6") +text = "OK" +icon = ExtResource("15_ijwr2") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1913258839] +unique_name_in_owner = true +root_node = NodePath("../..") +libraries/ = SubResource("AnimationLibrary_1aa3a") diff --git a/entities/interactable_3d/cristal/assets/cristal.blend b/entities/interactable_3d/cristal/assets/cristal.blend new file mode 100644 index 0000000..28d1e2e Binary files /dev/null and b/entities/interactable_3d/cristal/assets/cristal.blend differ diff --git a/entities/interactable_3d/cristal/assets/cristal.blend.import b/entities/interactable_3d/cristal/assets/cristal.blend.import new file mode 100644 index 0000000..6be05fb --- /dev/null +++ b/entities/interactable_3d/cristal/assets/cristal.blend.import @@ -0,0 +1,68 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://mwk845fx5ye2" +path="res://.godot/imported/cristal.blend-5fdcaa76cec17f12715c1ff4a4caf324.scn" + +[deps] + +source_file="res://entities/interactable_3d/cristal/assets/cristal.blend" +dest_files=["res://.godot/imported/cristal.blend-5fdcaa76cec17f12715c1ff4a4caf324.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={ +"materials": { +"Cristal": { +"use_external/enabled": true, +"use_external/fallback_path": "res://common/assets/materials/cristal.tres", +"use_external/path": "uid://di0m3uqgi3l08" +} +} +} +blender/nodes/visible=0 +blender/nodes/active_collection_only=false +blender/nodes/punctual_lights=true +blender/nodes/cameras=true +blender/nodes/custom_properties=true +blender/nodes/modifiers=1 +blender/meshes/colors=false +blender/meshes/uvs=true +blender/meshes/normals=true +blender/meshes/export_geometry_nodes_instances=false +blender/meshes/gpu_instances=false +blender/meshes/tangents=true +blender/meshes/skins=2 +blender/meshes/export_bones_deforming_mesh_only=false +blender/materials/unpack_enabled=true +blender/materials/export_materials=1 +blender/animation/limit_playback=true +blender/animation/always_sample=true +blender/animation/group_tracks=true +gltf/naming_version=2 diff --git a/entities/interactable_3d/cristal/assets/cristal.blend1 b/entities/interactable_3d/cristal/assets/cristal.blend1 new file mode 100644 index 0000000..32d0855 Binary files /dev/null and b/entities/interactable_3d/cristal/assets/cristal.blend1 differ diff --git a/entities/interactable_3d/cristal/assets/cristal_crack.blend b/entities/interactable_3d/cristal/assets/cristal_crack.blend new file mode 100644 index 0000000..85c32ee Binary files /dev/null and b/entities/interactable_3d/cristal/assets/cristal_crack.blend differ diff --git a/entities/interactable_3d/cristal/assets/cristal_crack.blend.import b/entities/interactable_3d/cristal/assets/cristal_crack.blend.import new file mode 100644 index 0000000..9838c78 --- /dev/null +++ b/entities/interactable_3d/cristal/assets/cristal_crack.blend.import @@ -0,0 +1,68 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://c7p114rvk26xw" +path="res://.godot/imported/cristal_crack.blend-127c21c2b9bb4a6237729dd3a817aaf1.scn" + +[deps] + +source_file="res://entities/interactable_3d/cristal/assets/cristal_crack.blend" +dest_files=["res://.godot/imported/cristal_crack.blend-127c21c2b9bb4a6237729dd3a817aaf1.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={ +"materials": { +"Cristal": { +"use_external/enabled": true, +"use_external/fallback_path": "res://common/assets/materials/cristal.tres", +"use_external/path": "uid://di0m3uqgi3l08" +} +} +} +blender/nodes/visible=0 +blender/nodes/active_collection_only=false +blender/nodes/punctual_lights=true +blender/nodes/cameras=true +blender/nodes/custom_properties=true +blender/nodes/modifiers=1 +blender/meshes/colors=false +blender/meshes/uvs=true +blender/meshes/normals=true +blender/meshes/export_geometry_nodes_instances=false +blender/meshes/gpu_instances=false +blender/meshes/tangents=true +blender/meshes/skins=2 +blender/meshes/export_bones_deforming_mesh_only=false +blender/materials/unpack_enabled=true +blender/materials/export_materials=1 +blender/animation/limit_playback=true +blender/animation/always_sample=true +blender/animation/group_tracks=true +gltf/naming_version=2 diff --git a/entities/interactable_3d/cristal/assets/cristal_crack_3.blend1 b/entities/interactable_3d/cristal/assets/cristal_crack_3.blend1 new file mode 100644 index 0000000..e24f8b8 Binary files /dev/null and b/entities/interactable_3d/cristal/assets/cristal_crack_3.blend1 differ diff --git a/entities/interactable_3d/cristal/cristal.blend1 b/entities/interactable_3d/cristal/cristal.blend1 new file mode 100644 index 0000000..28e6d59 Binary files /dev/null and b/entities/interactable_3d/cristal/cristal.blend1 differ diff --git a/entities/interactable_3d/cristal/cristal.tscn b/entities/interactable_3d/cristal/cristal.tscn new file mode 100644 index 0000000..b50c951 --- /dev/null +++ b/entities/interactable_3d/cristal/cristal.tscn @@ -0,0 +1,84 @@ +[gd_scene format=3 uid="uid://8rorj31s3irn"] + +[ext_resource type="Script" uid="uid://dwn3g8c5sa0a2" path="res://entities/interactable_3d/cristal/scripts/cristal.gd" id="1_ci2hw"] +[ext_resource type="AudioStream" uid="uid://3c4nxjasebyk" path="res://common/audio_manager/assets/sfx/pickaxe/pickaxe_1_reverb.wav" id="2_3rrt0"] +[ext_resource type="PackedScene" uid="uid://mwk845fx5ye2" path="res://entities/interactable_3d/cristal/assets/cristal.blend" id="2_ci2hw"] +[ext_resource type="PackedScene" uid="uid://c7p114rvk26xw" path="res://entities/interactable_3d/cristal/assets/cristal_crack.blend" id="2_vejte"] +[ext_resource type="AudioStream" uid="uid://bs5ldhabymm5p" path="res://common/audio_manager/assets/sfx/pickaxe/pickaxe_2_reverb.wav" id="3_247i2"] +[ext_resource type="AudioStream" uid="uid://bu278eqn8krnb" path="res://common/audio_manager/assets/sfx/pickaxe/pickaxe_3_reverb.wav" id="4_k7wsc"] +[ext_resource type="PackedScene" uid="uid://bhbc1monbgumh" path="res://entities/interactable_3d/cristal/artefact_announce.tscn" id="8_3rrt0"] +[ext_resource type="PackedScene" uid="uid://brp1fpvasaims" path="res://entities/interactable_3d/cristal/mutation_announce.tscn" id="9_247i2"] + +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_ojmpp"] +streams_count = 3 +stream_0/stream = ExtResource("2_3rrt0") +stream_1/stream = ExtResource("3_247i2") +stream_2/stream = ExtResource("4_k7wsc") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ci2hw"] +transparency = 1 +shading_mode = 0 +vertex_color_use_as_albedo = true + +[sub_resource type="PrismMesh" id="PrismMesh_nvfy2"] +lightmap_size_hint = Vector2i(14, 21) +material = SubResource("StandardMaterial3D_ci2hw") +size = Vector3(0.2, 0.2, 0.2) + +[sub_resource type="Gradient" id="Gradient_ci2hw"] +offsets = PackedFloat32Array(0, 0.80349344, 1) +colors = PackedColorArray(1, 0.6509804, 0.09019608, 1, 1, 0.1764706, 0.3372549, 0.827451, 1, 0, 0.43137255, 0) + +[sub_resource type="BoxShape3D" id="BoxShape3D_nvfy2"] +size = Vector3(1, 2.0454712, 1) + +[node name="Cristal" type="Area3D" unique_id=1403604311] +script = ExtResource("1_ci2hw") +metadata/_custom_type_script = "uid://bj4d1x8n8ina" + +[node name="BreackAudioPlayer" type="AudioStreamPlayer3D" parent="." unique_id=1190729820] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0430325, 0) +stream = SubResource("AudioStreamRandomizer_ojmpp") + +[node name="BreakParticles" type="CPUParticles3D" parent="." unique_id=1968257379] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0430325, 0) +emitting = false +amount = 16 +lifetime = 0.5 +one_shot = true +speed_scale = 1.5 +explosiveness = 1.0 +mesh = SubResource("PrismMesh_nvfy2") +particle_flag_rotate_y = true +direction = Vector3(0, 1, 0) +initial_velocity_min = 1.0 +initial_velocity_max = 4.0 +angular_velocity_min = -90.0 +angular_velocity_max = -90.0 +angle_min = -180.0 +angle_max = 180.0 +scale_amount_min = 0.5 +color = Color(1, 0.6509804, 0.09019608, 1) +color_ramp = SubResource("Gradient_ci2hw") + +[node name="CristalModel" parent="." unique_id=886555966 instance=ExtResource("2_ci2hw")] +unique_name_in_owner = true + +[node name="CristalModelCrack" parent="." unique_id=26298259 instance=ExtResource("2_vejte")] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0051152706, 0.006559938, -0.011411905) +visible = false + +[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=1235599731] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9791151, 0) +shape = SubResource("BoxShape3D_nvfy2") + +[node name="MutationAnnounce" parent="." unique_id=1447182082 instance=ExtResource("9_247i2")] +unique_name_in_owner = true + +[node name="ArtefactAnnounce" parent="." unique_id=114641656 instance=ExtResource("8_3rrt0")] +unique_name_in_owner = true + +[editable path="CristalModelCrack"] diff --git a/entities/interactable_3d/cristal/cristal_crack_1.blend1 b/entities/interactable_3d/cristal/cristal_crack_1.blend1 new file mode 100644 index 0000000..920c007 Binary files /dev/null and b/entities/interactable_3d/cristal/cristal_crack_1.blend1 differ diff --git a/entities/interactable_3d/cristal/cristal_crack_2.blend1 b/entities/interactable_3d/cristal/cristal_crack_2.blend1 new file mode 100644 index 0000000..91d4873 Binary files /dev/null and b/entities/interactable_3d/cristal/cristal_crack_2.blend1 differ diff --git a/entities/interactable_3d/cristal/cristal_crack_3.blend1 b/entities/interactable_3d/cristal/cristal_crack_3.blend1 new file mode 100644 index 0000000..c2f35a9 Binary files /dev/null and b/entities/interactable_3d/cristal/cristal_crack_3.blend1 differ diff --git a/entities/interactable_3d/cristal/mutation_announce.tscn b/entities/interactable_3d/cristal/mutation_announce.tscn new file mode 100644 index 0000000..dfb1269 --- /dev/null +++ b/entities/interactable_3d/cristal/mutation_announce.tscn @@ -0,0 +1,315 @@ +[gd_scene format=3 uid="uid://brp1fpvasaims"] + +[ext_resource type="Script" uid="uid://c0tyivmiouctw" path="res://entities/interactable_3d/cristal/scripts/mutation_announce.gd" id="1_02o74"] +[ext_resource type="Texture2D" uid="uid://bi5jo6pf0acjb" path="res://common/icons/carambola.svg" id="2_vlom2"] +[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="3_5hs4t"] +[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="4_yg5wk"] +[ext_resource type="Script" uid="uid://bqisp5hjs06rj" path="res://gui/game/announce/scripts/announce_inspectable.gd" id="5_qu1xy"] +[ext_resource type="Texture2D" uid="uid://0hbdgalf04e" path="res://common/icons/wood.svg" id="6_n403s"] +[ext_resource type="Script" uid="uid://dj2pv1hiwjfv0" path="res://gui/game/card/scripts/card_info.gd" id="7_se4h4"] +[ext_resource type="Script" uid="uid://dgbh38j13g5kn" path="res://gui/game/card/scripts/card_section_info.gd" id="8_0osya"] +[ext_resource type="Texture2D" uid="uid://dth2mj0nh2q70" path="res://common/icons/align-right.svg" id="9_s5jxo"] +[ext_resource type="Script" uid="uid://b4tkium34c831" path="res://gui/game/card/scripts/card_stat_info.gd" id="10_qidgp"] +[ext_resource type="Texture2D" uid="uid://bsvxhafoxwmw0" path="res://common/icons/cube-3d-sphere.svg" id="11_uj15c"] +[ext_resource type="PackedScene" uid="uid://mwk845fx5ye2" path="res://entities/interactable_3d/cristal/assets/cristal.blend" id="12_wy2oe"] +[ext_resource type="Environment" uid="uid://bxyp24f85p0xf" path="res://gui/game/assets/gui_3d_environment.tres" id="13_kyl1n"] +[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="14_d2gpy"] +[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="15_hu5cq"] + +[sub_resource type="ViewportTexture" id="ViewportTexture_6hxtc"] +viewport_path = NodePath("Particles/SubViewport") + +[sub_resource type="Curve" id="Curve_brrmr"] +_limits = [-200.0, 200.0, 0.0, 1.0] +_data = [Vector2(0, -200), 0.0, 560.0, 0, 0, Vector2(0.08235294, 92.384125), 1336.3082, 1336.3082, 0, 0, Vector2(0.34901965, 200), 0.0, 0.0, 0, 0, Vector2(0.854902, -200), 0.0, 0.0, 0, 0] +point_count = 4 + +[sub_resource type="Gradient" id="Gradient_0u75y"] +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_u8fe7"] +font = ExtResource("4_yg5wk") +font_size = 50 +font_color = Color(1, 0.6509804, 0.09019608, 1) + +[sub_resource type="ViewportTexture" id="ViewportTexture_smt8b"] +viewport_path = NodePath("AnnounceContainer/ObjectVisualiser/SubViewport") + +[sub_resource type="Resource" id="Resource_rjaqi"] +script = ExtResource("8_0osya") +title_text = "Description" +title_icon = ExtResource("9_s5jxo") +text = "Une fois mature, ajoute [b]1[/b][img=22x22]res://common/icons/growth.svg[/img] tous les [b]3[/b][img=22x22]res://common/icons/calendar-week.svg[/img]" + +[sub_resource type="Resource" id="Resource_kgj7d"] +script = ExtResource("7_se4h4") +title = "Ancien" +subtitle = "Mutation" +important_stat_icon = ExtResource("6_n403s") +sections = Array[ExtResource("8_0osya")]([SubResource("Resource_rjaqi")]) + +[sub_resource type="Animation" id="Animation_aao0q"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("MutationAnnounce/AnnounceContainer:theme_override_constants/separation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [4] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("MutationAnnounce/Particles:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("MutationAnnounce/AnnounceContainer:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("MutationAnnounce/MarginContainer/BackgroundRect:modulate:a") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [1.0] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("MutationAnnounce:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0.03333333), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} + +[sub_resource type="Animation" id="Animation_b6hac"] +resource_name = "appear" +length = 0.8 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("MutationAnnounce/AnnounceContainer:theme_override_constants/separation") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0.23333333, 0.8), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [480, 4] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("MutationAnnounce/Particles:modulate") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.5, 0.8), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("MutationAnnounce/AnnounceContainer:modulate") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.2, 0.8), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("MutationAnnounce/MarginContainer/BackgroundRect:modulate:a") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.03333333, 0.8), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.8] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("MutationAnnounce:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.16666667), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [false, true] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_1aa3a"] +_data = { +&"RESET": SubResource("Animation_aao0q"), +&"appear": SubResource("Animation_b6hac") +} + +[node name="MutationAnnounce" type="CanvasLayer" unique_id=1447182082] +visible = false +script = ExtResource("1_02o74") + +[node name="MarginContainer" type="MarginContainer" parent="." unique_id=1853133518] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="BackgroundRect" type="ColorRect" parent="MarginContainer" unique_id=1594037653] +layout_mode = 2 +color = Color(0.0352941, 0.0196078, 0.12549, 0.705882) + +[node name="Particles" type="TextureRect" parent="." unique_id=1748571879] +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -500.0 +offset_top = -500.0 +offset_right = 500.0 +offset_bottom = 500.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = SubResource("ViewportTexture_6hxtc") + +[node name="SubViewport" type="SubViewport" parent="Particles" unique_id=1123249182] +transparent_bg = true +size = Vector2i(1000, 1000) + +[node name="GPUParticles2D" type="CPUParticles2D" parent="Particles/SubViewport" unique_id=220592083] +position = Vector2(500, 500) +amount = 20 +texture = ExtResource("2_vlom2") +preprocess = 1.0 +spread = 180.0 +gravity = Vector2(0, 0) +initial_velocity_min = 2.0 +initial_velocity_max = 2.0 +linear_accel_min = 5.0 +linear_accel_max = 5.0 +linear_accel_curve = SubResource("Curve_brrmr") +color_ramp = SubResource("Gradient_0u75y") + +[node name="AnnounceContainer" type="VBoxContainer" parent="." unique_id=645433045] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -627.0 +offset_bottom = 627.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 4 +alignment = 1 + +[node name="AnnounceTitle" type="Label" parent="AnnounceContainer" unique_id=1768593559] +unique_name_in_owner = true +layout_mode = 2 +text = "NEW_MUTATION" +label_settings = ExtResource("3_5hs4t") +horizontal_alignment = 1 + +[node name="AnnounceText" type="Label" parent="AnnounceContainer" unique_id=768724763] +unique_name_in_owner = true +layout_mode = 2 +text = "Ancien" +label_settings = SubResource("LabelSettings_u8fe7") +horizontal_alignment = 1 + +[node name="ObjectVisualiser" type="TextureRect" parent="AnnounceContainer" unique_id=1180983374] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +mouse_filter = 0 +texture = SubResource("ViewportTexture_smt8b") +stretch_mode = 5 +script = ExtResource("5_qu1xy") +info = SubResource("Resource_kgj7d") + +[node name="MutationIconTextureRect" type="TextureRect" parent="AnnounceContainer/ObjectVisualiser" unique_id=312214951] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -20.0 +offset_right = 20.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("6_n403s") + +[node name="SubViewport" type="SubViewport" parent="AnnounceContainer/ObjectVisualiser" unique_id=1795775056] +own_world_3d = true +transparent_bg = true +size = Vector2i(300, 300) + +[node name="AnnouceObject" type="Node3D" parent="AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=1527573801] +unique_name_in_owner = true +transform = Transform3D(0.9998366, 0, 0, 0, 0.9995686, 0, 0, 0, 0.9996744, 0, 0, 0) + +[node name="cristal" parent="AnnounceContainer/ObjectVisualiser/SubViewport/AnnouceObject" 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="AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=173755338] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 10) +keep_aspect = 0 +current = true +fov = 20.0 + +[node name="WorldEnvironment" type="WorldEnvironment" parent="AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=1135825303] +environment = ExtResource("13_kyl1n") + +[node name="OkButton" type="Button" parent="AnnounceContainer" unique_id=249785792] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +theme = ExtResource("14_d2gpy") +text = "OK" +icon = ExtResource("15_hu5cq") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1913258839] +unique_name_in_owner = true +root_node = NodePath("../..") +libraries/ = SubResource("AnimationLibrary_1aa3a") diff --git a/entities/interactable_3d/cristal/scripts/artefact_announce.gd b/entities/interactable_3d/cristal/scripts/artefact_announce.gd new file mode 100644 index 0000000..ab7eaeb --- /dev/null +++ b/entities/interactable_3d/cristal/scripts/artefact_announce.gd @@ -0,0 +1,85 @@ +@tool +extends CanvasLayer +class_name ArtefactAnnounce + +const DEFAULT_OBJECT_ACCELERATION = Vector2(3,0) + +@export var announce_artefact : Artefact = null : set = set_announce_artefact + +@export_tool_button("Update", "Callable") var update_action = set_announce_artefact + +var object_acceleration := Vector2(0,0) + +var rotating := false + +var prev_mouse_pos : Vector2 +var next_mouse_pos : Vector2 + +const YELLOW_COLOR = Color("e29f32") +const RED_COLOR = Color("f20058") + +func _ready(): + set_announce_artefact() + %OkButton.button_down.connect(_on_ok_button_down) + hide() + +func _process(delta): + update_rotation(delta) + +func update_rotation(delta): + if visible: + next_mouse_pos = get_viewport().get_mouse_position() + if Input.is_action_just_pressed("action"): + rotating = true + prev_mouse_pos = get_viewport().get_mouse_position() + if Input.is_action_just_released("action"): + rotating = false + object_acceleration = Vector2( + float(next_mouse_pos.x - prev_mouse_pos.x), + float(next_mouse_pos.y - prev_mouse_pos.y) + ) + + var object_rotation = object_acceleration + + if rotating: + object_rotation = Vector2( + float(next_mouse_pos.x - prev_mouse_pos.x), + float(next_mouse_pos.y - prev_mouse_pos.y) + ) + prev_mouse_pos = next_mouse_pos + 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) + + +func set_announce_artefact(artefact := announce_artefact): + + for c in %AnnouceObject.get_children(): + c.queue_free() + + if is_node_ready() and artefact: + + %AnnounceTitle.text = "NEW_ARTEFACT" + %AnnounceText.text = artefact.get_artefact_name() + %ObjectVisualiser.info = artefact.card_info() + + %AnnouceObject.add_child( + artefact.get_3d_scene().instantiate() + ) + + if not visible: + %AnimationPlayer.play("appear") + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + AudioManager.play_sfx("Reveal") + elif artefact == null and visible: + %AnimationPlayer.play_backwards("appear") + + if not Engine.is_editor_hint(): + Input.mouse_mode = Input.MOUSE_MODE_CAPTURED + + announce_artefact = artefact + +func _on_ok_button_down(): + announce_artefact = null diff --git a/entities/interactable_3d/cristal/scripts/artefact_announce.gd.uid b/entities/interactable_3d/cristal/scripts/artefact_announce.gd.uid new file mode 100644 index 0000000..c703feb --- /dev/null +++ b/entities/interactable_3d/cristal/scripts/artefact_announce.gd.uid @@ -0,0 +1 @@ +uid://xamd5y6tig71 diff --git a/entities/interactable_3d/cristal/scripts/cristal.gd b/entities/interactable_3d/cristal/scripts/cristal.gd new file mode 100644 index 0000000..d84477f --- /dev/null +++ b/entities/interactable_3d/cristal/scripts/cristal.gd @@ -0,0 +1,54 @@ +extends Interactable3D + +const MAX_BREAK_LEVEL = 2 + +signal broken + +@export var break_level = 0 + +func _ready(): + update_model() + +func click(): + if interactable: + clicked.emit() + %BreackAudioPlayer.playing = true + %BreakParticles.emitting = true + + break_level += 1 + if break_level == MAX_BREAK_LEVEL: + broken.emit() + interactable = false + unlock_mutation() + + update_model() + + +func update_model(): + if is_node_ready(): + %CristalModel.visible = break_level == 0 + %CristalModelCrack.visible = break_level > 0 + + if break_level > 1: + %CristalModelCrack.find_children("AnimationPlayer")[0].play("Break") + +func unlock_mutation(): + var progression = GameInfo.game_data.progression_data + + if progression.mutations_unlocked < len(progression.get_all_mutations()): + var new_mutation : PlantMutation = progression.get_all_mutations()[progression.mutations_unlocked] + progression.mutations_unlocked += 1 + + get_tree().create_timer(1.).timeout.connect( + func (): %MutationAnnounce.announce_mutation = new_mutation + ); + else: + var talion_relay = TalionRelayArtifact.new() + + if GameInfo.game_data and GameInfo.game_data.current_region_data and GameInfo.game_data.current_run: + GameInfo.game_data.current_run.add_artefacts(talion_relay) + + get_tree().create_timer(1.).timeout.connect( + func (): %ArtefactAnnounce.announce_artefact = talion_relay + ); + diff --git a/entities/interactable_3d/cristal/scripts/cristal.gd.uid b/entities/interactable_3d/cristal/scripts/cristal.gd.uid new file mode 100644 index 0000000..5f01a3f --- /dev/null +++ b/entities/interactable_3d/cristal/scripts/cristal.gd.uid @@ -0,0 +1 @@ +uid://dwn3g8c5sa0a2 diff --git a/entities/interactable_3d/cristal/scripts/mutation_announce.gd b/entities/interactable_3d/cristal/scripts/mutation_announce.gd new file mode 100644 index 0000000..c606241 --- /dev/null +++ b/entities/interactable_3d/cristal/scripts/mutation_announce.gd @@ -0,0 +1,80 @@ +@tool +extends CanvasLayer +class_name MutationAnnounce + +const DEFAULT_OBJECT_ACCELERATION = Vector2(3,0) + +@export var announce_mutation : PlantMutation = null : set = set_announce_mutation + +@export_tool_button("Update", "Callable") var update_action = set_announce_mutation + +var announce_objects : Array[AnnouceObject] = [] + +var object_acceleration := Vector2(0,0) + +var rotating := false + +var prev_mouse_pos : Vector2 +var next_mouse_pos : Vector2 + +const YELLOW_COLOR = Color("e29f32") +const RED_COLOR = Color("f20058") + +func _ready(): + set_announce_mutation() + %OkButton.button_down.connect(_on_ok_button_down) + hide() + +func _process(delta): + update_rotation(delta) + +func update_rotation(delta): + if visible: + next_mouse_pos = get_viewport().get_mouse_position() + if Input.is_action_just_pressed("action"): + rotating = true + prev_mouse_pos = get_viewport().get_mouse_position() + if Input.is_action_just_released("action"): + rotating = false + object_acceleration = Vector2( + float(next_mouse_pos.x - prev_mouse_pos.x), + float(next_mouse_pos.y - prev_mouse_pos.y) + ) + + var object_rotation = object_acceleration + + if rotating: + object_rotation = Vector2( + float(next_mouse_pos.x - prev_mouse_pos.x), + float(next_mouse_pos.y - prev_mouse_pos.y) + ) + prev_mouse_pos = next_mouse_pos + 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) + + +func set_announce_mutation(mutation := announce_mutation): + + if is_node_ready() and mutation: + + %AnnounceTitle.text = "NEW_MUTATION" + %AnnounceText.text = mutation.get_mutation_name() + %MutationIconTextureRect.texture = mutation.get_icon() + %ObjectVisualiser.info = mutation.card_info() + + if not visible: + %AnimationPlayer.play("appear") + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + AudioManager.play_sfx("Reveal") + elif mutation == null and visible: + %AnimationPlayer.play_backwards("appear") + + if not Engine.is_editor_hint(): + Input.mouse_mode = Input.MOUSE_MODE_CAPTURED + announce_mutation = mutation + +func _on_ok_button_down(): + announce_mutation = null diff --git a/entities/interactable_3d/cristal/scripts/mutation_announce.gd.uid b/entities/interactable_3d/cristal/scripts/mutation_announce.gd.uid new file mode 100644 index 0000000..224389d --- /dev/null +++ b/entities/interactable_3d/cristal/scripts/mutation_announce.gd.uid @@ -0,0 +1 @@ +uid://c0tyivmiouctw diff --git a/entities/interactables/truck/recharge/scripts/truck_recharge.gd b/entities/interactables/truck/recharge/scripts/truck_recharge.gd index aaeb1f2..4480d35 100644 --- a/entities/interactables/truck/recharge/scripts/truck_recharge.gd +++ b/entities/interactables/truck/recharge/scripts/truck_recharge.gd @@ -14,6 +14,7 @@ func can_interact(_p : Player) -> bool: region != null and region.data and region.data.charges > 0 + and region.data.state == RegionData.State.IN_PROGRESS ) func interact(_p: Player) -> bool: diff --git a/entities/interactables/truck/recharge/truck_recharge.tscn b/entities/interactables/truck/recharge/truck_recharge.tscn index 9167dba..d726b3e 100644 --- a/entities/interactables/truck/recharge/truck_recharge.tscn +++ b/entities/interactables/truck/recharge/truck_recharge.tscn @@ -7,14 +7,18 @@ [ext_resource type="Texture2D" uid="uid://bhi3mwl23flwp" path="res://entities/interactables/truck/recharge/STW_Props_Batterie_Glass_V2.png" id="5_2okh4"] [ext_resource type="Texture2D" uid="uid://c01f6ja6btsep" path="res://entities/interactables/truck/recharge/STW_Props_Batterie_TERRE.png" id="6_2okh4"] -[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_bjhct"] -radius = 38.45475 -height = 76.9095 - [sub_resource type="LabelSettings" id="LabelSettings_1vpbi"] font = ExtResource("4_ot7vv") font_size = 30 +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ot7vv"] +radius = 43.0 +height = 116.0 + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_bjhct"] +radius = 38.45475 +height = 76.9095 + [node name="TruckRecharge" type="Area2D" unique_id=1099196706] script = ExtResource("1_ipgcv") default_interact_text = "RECHARGE" @@ -22,10 +26,6 @@ default_info_title = "RECHARGE_STATION" default_info_desc = "RECHARGE_STATION_DESC_TEXT" metadata/_custom_type_script = "uid://dyprcd68fjstf" -[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=2014886648] -position = Vector2(9, -53) -shape = SubResource("CapsuleShape2D_bjhct") - [node name="RechargeStation" type="Sprite2D" parent="." unique_id=1801951226] scale = Vector2(0.5, 0.5) texture = ExtResource("2_ot7vv") @@ -67,6 +67,10 @@ scale = Vector2(0.5, 0.5) texture = ExtResource("6_2okh4") offset = Vector2(0, -120) +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=2014886648] +position = Vector2(12, -54) +shape = SubResource("CapsuleShape2D_ot7vv") + [node name="StaticBody2D" type="StaticBody2D" parent="." unique_id=1324035615] [node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D" unique_id=842130596] diff --git a/entities/interactables/win_cristal/assets/sprites/asset_cristals.png b/entities/interactables/win_cristal/assets/sprites/asset_cristals.png new file mode 100644 index 0000000..c431251 Binary files /dev/null and b/entities/interactables/win_cristal/assets/sprites/asset_cristals.png differ diff --git a/entities/interactables/win_cristal/assets/sprites/asset_cristals.png.import b/entities/interactables/win_cristal/assets/sprites/asset_cristals.png.import new file mode 100644 index 0000000..c949b97 --- /dev/null +++ b/entities/interactables/win_cristal/assets/sprites/asset_cristals.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dslagvhodlepi" +path="res://.godot/imported/asset_cristals.png-fbcde6581d88986094aa97c2145c31c2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://entities/interactables/win_cristal/assets/sprites/asset_cristals.png" +dest_files=["res://.godot/imported/asset_cristals.png-fbcde6581d88986094aa97c2145c31c2.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 diff --git a/entities/interactables/win_cristal/scripts/win_cristal.gd b/entities/interactables/win_cristal/scripts/win_cristal.gd new file mode 100644 index 0000000..db42711 --- /dev/null +++ b/entities/interactables/win_cristal/scripts/win_cristal.gd @@ -0,0 +1,31 @@ +@tool +extends InspectableEntity +class_name WinCristal + +@export_tool_button("Update", "Callable") var update_action = update +@export_tool_button("Spawn Anim", "Callable") var spawn_action = spawn_animation +@export var data : WinCristalData = WinCristalData.random() : + set(v): + data = v + update() + +func _ready(): + update() + +func update(): + if is_node_ready() and data: + for i in range(len(%Sprites.get_children())): + %Sprites.get_children()[i].visible = data.cristal_type == i + %Sprites.get_children()[i].flip_h = data.cristal_flip + +func spawn_animation(): + scale = Vector2.ZERO + %CristalPlayer.play() + get_tree().create_tween().tween_property(self, "scale", Vector2.ONE, 0.3).set_trans(Tween.TRANS_BOUNCE) + +func get_card_up_padding() -> float: + return Pointer.CARD_UP_PADDING * 2 + +func save() -> EntityData: + data.position = global_position + return data \ No newline at end of file diff --git a/entities/interactables/win_cristal/scripts/win_cristal.gd.uid b/entities/interactables/win_cristal/scripts/win_cristal.gd.uid new file mode 100644 index 0000000..c4e1353 --- /dev/null +++ b/entities/interactables/win_cristal/scripts/win_cristal.gd.uid @@ -0,0 +1 @@ +uid://cismap3cn5e36 diff --git a/entities/interactables/win_cristal/scripts/win_cristal_data.gd b/entities/interactables/win_cristal/scripts/win_cristal_data.gd new file mode 100644 index 0000000..37a0c83 --- /dev/null +++ b/entities/interactables/win_cristal/scripts/win_cristal_data.gd @@ -0,0 +1,22 @@ +extends EntityData +class_name WinCristalData + +const WIN_CRISTAL_SCENE = preload("res://entities/interactables/win_cristal/win_cristal.tscn") + +@export var cristal_type : int +@export var cristal_flip : bool + +func load_entity() -> Entity: + var win_cristal := WIN_CRISTAL_SCENE.instantiate() as WinCristal + + win_cristal.data = self + + return win_cristal + +static func random() -> WinCristalData: + var data = WinCristalData.new() + + data.cristal_type = randi_range(0,3) + data.cristal_flip = randi() % 2 == 0 + + return data \ No newline at end of file diff --git a/entities/interactables/win_cristal/scripts/win_cristal_data.gd.uid b/entities/interactables/win_cristal/scripts/win_cristal_data.gd.uid new file mode 100644 index 0000000..55b094a --- /dev/null +++ b/entities/interactables/win_cristal/scripts/win_cristal_data.gd.uid @@ -0,0 +1 @@ +uid://cos0ennmyfvc2 diff --git a/entities/interactables/win_cristal/win_cristal.tscn b/entities/interactables/win_cristal/win_cristal.tscn new file mode 100644 index 0000000..eacf25a --- /dev/null +++ b/entities/interactables/win_cristal/win_cristal.tscn @@ -0,0 +1,82 @@ +[gd_scene format=3 uid="uid://de5pt5vyu23fb"] + +[ext_resource type="Script" uid="uid://cismap3cn5e36" path="res://entities/interactables/win_cristal/scripts/win_cristal.gd" id="1_yb2ta"] +[ext_resource type="Script" uid="uid://cos0ennmyfvc2" path="res://entities/interactables/win_cristal/scripts/win_cristal_data.gd" id="2_vkbio"] +[ext_resource type="Texture2D" uid="uid://dslagvhodlepi" path="res://entities/interactables/win_cristal/assets/sprites/asset_cristals.png" id="2_yb2ta"] +[ext_resource type="AudioStream" uid="uid://dnqq2sy3dxrb2" path="res://common/audio_manager/assets/sfx/cristal/freesound_community-wine-glass-clink-36036.mp3" id="3_vkbio"] + +[sub_resource type="Resource" id="Resource_5lni1"] +script = ExtResource("2_vkbio") +cristal_type = 2 +cristal_flip = true + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_vkbio"] +radius = 40.0 +height = 116.0 + +[sub_resource type="AtlasTexture" id="AtlasTexture_5lni1"] +atlas = ExtResource("2_yb2ta") +region = Rect2(52, 55, 305, 347) + +[sub_resource type="AtlasTexture" id="AtlasTexture_bcx38"] +atlas = ExtResource("2_yb2ta") +region = Rect2(378, 21, 199, 385) + +[sub_resource type="AtlasTexture" id="AtlasTexture_t34j2"] +atlas = ExtResource("2_yb2ta") +region = Rect2(75, 527, 316, 399) + +[sub_resource type="AtlasTexture" id="AtlasTexture_55qjo"] +atlas = ExtResource("2_yb2ta") +region = Rect2(462, 542, 286, 387) + +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_tfnwb"] +random_pitch = 1.4142135 +streams_count = 1 +stream_0/stream = ExtResource("3_vkbio") + +[node name="WinCristal" type="Area2D" unique_id=247353676] +script = ExtResource("1_yb2ta") +data = SubResource("Resource_5lni1") +default_info_title = "TALION_CRISTAL" +default_info_desc = "TALION_CRISTAL_DESC_TEXT" +metadata/_custom_type_script = "uid://d3bk52402ylvl" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=187731103] +position = Vector2(1, -42) +shape = SubResource("CapsuleShape2D_vkbio") + +[node name="Sprites" type="Node2D" parent="." unique_id=940993390] +unique_name_in_owner = true + +[node name="AssetCristals" type="Sprite2D" parent="Sprites" unique_id=2111863528] +scale = Vector2(0.4, 0.4) +texture = SubResource("AtlasTexture_5lni1") +offset = Vector2(0, -139.255) +flip_h = true + +[node name="AssetCristals2" type="Sprite2D" parent="Sprites" unique_id=1380362341] +visible = false +scale = Vector2(0.3, 0.3) +texture = SubResource("AtlasTexture_bcx38") +offset = Vector2(0, -149) +flip_h = true + +[node name="AssetCristals3" type="Sprite2D" parent="Sprites" unique_id=2082980627] +visible = false +scale = Vector2(0.3, 0.3) +texture = SubResource("AtlasTexture_t34j2") +offset = Vector2(0, -150) +flip_h = true + +[node name="AssetCristals4" type="Sprite2D" parent="Sprites" unique_id=495215885] +visible = false +scale = Vector2(0.3, 0.3) +texture = SubResource("AtlasTexture_55qjo") +offset = Vector2(0, -150) +flip_h = true + +[node name="CristalPlayer" type="AudioStreamPlayer2D" parent="." unique_id=1879646229] +unique_name_in_owner = true +stream = SubResource("AudioStreamRandomizer_tfnwb") +bus = &"Sfx" diff --git a/entities/plants/plant_sprite.tscn b/entities/plants/plant_sprite.tscn index ef515f5..55a3450 100644 --- a/entities/plants/plant_sprite.tscn +++ b/entities/plants/plant_sprite.tscn @@ -13,6 +13,7 @@ atlas = ExtResource("3_j6jm5") region = Rect2(76, 75, 124, 135) [sub_resource type="ViewportTexture" id="ViewportTexture_rbgiq"] +viewport_path = NodePath("LifeTimeSprite/SubViewport") [sub_resource type="Gradient" id="Gradient_rbgiq"] interpolation_mode = 1 @@ -185,8 +186,7 @@ texture = ExtResource("3_rbgiq") [node name="LifeTimeSprite" type="Sprite2D" parent="." unique_id=799762981] unique_name_in_owner = true -position = Vector2(-1, -9.999985) -scale = Vector2(0.34, 0.34) +scale = Vector2(0.26000002, 0.26000005) texture = SubResource("ViewportTexture_rbgiq") [node name="SubViewport" type="SubViewport" parent="LifeTimeSprite" unique_id=1809354262] diff --git a/entities/plants/scripts/plant.gd b/entities/plants/scripts/plant.gd index 45459d1..da79e44 100644 --- a/entities/plants/scripts/plant.gd +++ b/entities/plants/scripts/plant.gd @@ -1,7 +1,9 @@ extends InspectableEntity class_name Plant -const PLANT_AREA_RADIUS = 20 +const PLANT_AREA_RADIUS = 40 +const PLANT_GROWING_AREA_HEIGHT = 70 +const PLANT_MATURE_AREA_HEIGHT = 150 const HARVESTED_SEED_DISPLACEMENT_FACTOR = 100 const RANDOM_MAX_GROW_INTERVAL = Region.MIN_PASS_DAY_ANIMATION_TIME/2. - 0.1 @@ -22,6 +24,7 @@ const SPRITE_SCENE : PackedScene = preload("res://entities/plants/plant_sprite.t @onready var influence_zone : PlantInfluenceZone var harvested = false +var last_state : PlantData.State func _init( _data : PlantData @@ -30,7 +33,7 @@ func _init( func _ready(): plant_sprite = generate_sprite() - collision_shape = generate_collision_shape() + generate_collision_shape() influence_zone = generate_influence_zone() plant_sprite.setup_plant_sprite(data) @@ -53,9 +56,6 @@ func inspect(is_inspected : bool = true): plant_sprite.display_lifetime_sprite = is_inspected influence_zone.show_influence = is_inspected -func affect_preview(is_affected : bool = true): - plant_sprite.sprite_modulate = MODULATE_AFFECTED_COLOR if is_affected else default_modulate - func generate_sprite() -> PlantSprite: var sprite_object : PlantSprite = SPRITE_SCENE.instantiate() @@ -64,15 +64,28 @@ func generate_sprite() -> PlantSprite: return sprite_object -func generate_collision_shape() -> CollisionShape2D: - var collision = CollisionShape2D.new() - var shape = CircleShape2D.new() +func generate_collision_shape(): + if collision_shape: + collision_shape.queue_free() + + collision_shape = CollisionShape2D.new() + var shape = CapsuleShape2D.new() shape.radius = PLANT_AREA_RADIUS - collision.shape = shape - add_child(collision) + var height = PLANT_AREA_RADIUS - return collision + match data.get_state(): + PlantData.State.GROWING: + height = PLANT_GROWING_AREA_HEIGHT + PlantData.State.MATURE: + height = PLANT_MATURE_AREA_HEIGHT + + shape.height = height + + collision_shape.shape = shape + + collision_shape.position.y -= height / 5. + add_child(collision_shape) func generate_influence_zone() -> PlantInfluenceZone: var zone = PlantInfluenceZone.new(data.get_influence_radius()) @@ -85,13 +98,14 @@ func generate_influence_zone() -> PlantInfluenceZone: func _pass_day(): await get_tree().create_timer(randf_range(0., RANDOM_MAX_GROW_INTERVAL)).timeout - var last_state = data.get_state() + last_state = data.get_state() data.day += 1 for m in data.mutations: m._start_day_effect(self) +func _end_pass_day(): match data.get_state(): PlantData.State.MATURE: if last_state != PlantData.State.MATURE: @@ -99,7 +113,7 @@ func _pass_day(): PlantData.State.DEAD: die() - + generate_collision_shape() plant_sprite.update_plant_sprite(data, last_state != data.get_state()) @@ -109,8 +123,8 @@ func calculate_plant_score( return data.get_score(with_state) func harvest(): - for i in range(data.get_random_seed_income()): - produce_seed() + for i in range(data.get_seed_number()): + await produce_seed() if data.get_state() == PlantData.State.MATURE: for m in data.mutations: @@ -128,6 +142,7 @@ func produce_seed(): global_position, HARVESTED_SEED_DISPLACEMENT_FACTOR, ) + await plant_sprite.play_bump_animation() func mature(): for m in data.mutations: @@ -136,8 +151,9 @@ func mature(): func die(): for m in data.mutations: m._start_dead_effect(self) - for i in range(data.get_random_seed_income()): - produce_seed() + for i in range(data.get_seed_number()): + await produce_seed() + AudioManager.play_sfx("Harvest") disappear() func disappear(): @@ -200,10 +216,7 @@ func card_info() -> CardInfo: LIFETIME_ICON ), CardStatInfo.new( - "%d-%d" % [ - data.get_seed_number(PlantData.State.MATURE) - data.get_seed_random_loose(), - data.get_seed_number(PlantData.State.MATURE) - ], + str(data.get_seed_number()), SEED_ICON ), ]) diff --git a/entities/plants/scripts/plant_data.gd b/entities/plants/scripts/plant_data.gd index 8fca210..0e5c9c1 100644 --- a/entities/plants/scripts/plant_data.gd +++ b/entities/plants/scripts/plant_data.gd @@ -96,7 +96,7 @@ func is_mature() -> bool: return get_state() == State.MATURE func get_seed_number(state = get_state()): - var seed_number = get_plant_info().get_seed_number() if (state == State.MATURE or state == State.DEAD) else 0 + var seed_number = get_plant_info().get_seed_number() if (state == State.MATURE or state == State.DEAD) else 1 for m in mutations: seed_number = m.mutate_seed_number(self , seed_number) @@ -116,11 +116,11 @@ func get_seed_random_loose(): func get_influence_radius(): return get_plant_info().get_influence_radius() -func get_random_seed_income(): - return max( - get_seed_number() - randi_range(0, get_seed_random_loose()), - 0 - ) +# func get_random_seed_income(): +# return max( +# get_seed_number() - randi_range(0, get_seed_random_loose()), +# 0 +# ) func get_lifetime_buff() -> int: var buff = 0 diff --git a/entities/plants/scripts/plant_mutation.gd b/entities/plants/scripts/plant_mutation.gd index ff17f7e..6d7eadc 100644 --- a/entities/plants/scripts/plant_mutation.gd +++ b/entities/plants/scripts/plant_mutation.gd @@ -74,6 +74,23 @@ func get_level_for_rarity(rarity: int) -> int: func get_rarity() -> int: return get_base_rarity() + level - 1 +func card_info() -> CardInfo: + var info = CardInfo.new( + get_mutation_name(), + tr("MUTATION") + ) + info.important_stat_icon = get_icon() + + var desc_section := CardSectionInfo.new( + tr("DESCRIPTION"), + get_mutation_description(), + ) + desc_section.title_icon = InspectableEntity.DESC_ICON + + info.sections.append(desc_section) + + return info + func card_section() -> CardSectionInfo: var section = CardSectionInfo.new( get_mutation_name() + (" %d" % level if level > 1 else ""), @@ -107,4 +124,4 @@ static func get_rarity_color(rarity: int) -> Color: Color("FFA617"), ] - return rarity_colors[min(rarity, len(rarity_colors) - 1)%len(rarity_colors)] \ No newline at end of file + return rarity_colors[rarity%len(rarity_colors)] \ No newline at end of file diff --git a/entities/plants/scripts/plant_mutation/ancient_mutation.gd b/entities/plants/scripts/plant_mutation/ancient_mutation.gd index 4ae3a66..2dfb96a 100644 --- a/entities/plants/scripts/plant_mutation/ancient_mutation.gd +++ b/entities/plants/scripts/plant_mutation/ancient_mutation.gd @@ -1,3 +1,4 @@ +@tool extends PlantMutation class_name AncientMutation diff --git a/entities/plants/scripts/plant_mutation/purification_mutation.gd b/entities/plants/scripts/plant_mutation/purification_mutation.gd index 49de17d..7845359 100644 --- a/entities/plants/scripts/plant_mutation/purification_mutation.gd +++ b/entities/plants/scripts/plant_mutation/purification_mutation.gd @@ -23,4 +23,4 @@ func _start_maturation_effect(plant : Plant): func get_purification_radius() -> int: - return level * 2 + return level diff --git a/entities/plants/scripts/plant_sprite.gd b/entities/plants/scripts/plant_sprite.gd index 0cb5f02..83e8bb1 100644 --- a/entities/plants/scripts/plant_sprite.gd +++ b/entities/plants/scripts/plant_sprite.gd @@ -1,4 +1,4 @@ -extends Node2D +extends Area2D class_name PlantSprite const PLANTED_SEED_CROP_WIDTH = 50 @@ -64,6 +64,13 @@ func set_sprite_modulate(c := sprite_modulate): if is_node_ready(): %Sprite.modulate = c +func affect_preview(is_affected : bool = true): + sprite_modulate = InspectableEntity.MODULATE_AFFECTED_COLOR if is_affected else Color.WHITE + func _on_body_entered(body: Node2D) -> void: if body is Player && $AnimationPlayer.current_animation != "player_move": $AnimationPlayer.play("player_move"); + +func play_bump_animation(): + %AnimationPlayer.play("bump") + await %AnimationPlayer.animation_finished \ No newline at end of file diff --git a/entities/player/inventory/scripts/inventory.gd b/entities/player/inventory/scripts/inventory.gd index 67a0848..796d082 100644 --- a/entities/player/inventory/scripts/inventory.gd +++ b/entities/player/inventory/scripts/inventory.gd @@ -17,7 +17,7 @@ func _init(size : int = 1): seeds_size = size func current_is_tool() -> bool: - return current_item_ind <= len(tools) + return current_item_ind < len(tools) func set_current_item(new_ind: int): if new_ind < 0: diff --git a/entities/player/inventory/scripts/item.gd b/entities/player/inventory/scripts/item.gd index 6f8e5e3..7b44170 100644 --- a/entities/player/inventory/scripts/item.gd +++ b/entities/player/inventory/scripts/item.gd @@ -44,7 +44,7 @@ func is_action_need_press_time() -> bool: func get_action_press_time() -> float: return DEFAULT_PRESS_TIME -func get_usage_object_affected(_i : InspectableEntity) -> bool: +func get_usage_object_affected(_i : Area2D) -> bool: return false func is_one_time_use(): diff --git a/entities/player/inventory/scripts/items/fork.gd b/entities/player/inventory/scripts/items/fork.gd index f092ecf..00c074f 100644 --- a/entities/player/inventory/scripts/items/fork.gd +++ b/entities/player/inventory/scripts/items/fork.gd @@ -21,7 +21,7 @@ func get_energy_used() -> int: func get_usage_zone_radius() -> int: return 10 -func get_usage_object_affected(i : InspectableEntity) -> bool: +func get_usage_object_affected(i : Area2D) -> bool: return i is Plant func use_text() -> String: diff --git a/entities/player/inventory/scripts/items/seed.gd b/entities/player/inventory/scripts/items/seed.gd index 05c8a8e..aef54dd 100644 --- a/entities/player/inventory/scripts/items/seed.gd +++ b/entities/player/inventory/scripts/items/seed.gd @@ -41,7 +41,7 @@ static func generate_from_parent(plant_data : PlantData) -> Seed: static func generate_random(rarity := 0) -> Seed: var new_seed = Seed.new( Random.generate_random_word(), - [generate_first_mutation(rarity)] + generate_first_mutations(rarity), ) return new_seed @@ -63,10 +63,10 @@ func get_energy_used() -> int: return 1 func get_usage_zone_radius() -> int: - return 35 + return 50 -func get_usage_object_affected(i : InspectableEntity) -> bool: - return i is Plant +func get_usage_object_affected(i : Area2D) -> bool: + return i is PlantSprite func use_text() -> String: return tr("PLANT_%s") % plant_name @@ -82,10 +82,19 @@ func can_use(player : Player, zone : Player.ActionZone) -> bool: var is_there_a_plant_here = false for area in zone.get_affected_areas(): - if area is Plant: + if area is PlantSprite: is_there_a_plant_here = true - return not is_there_a_plant_here and player.region.is_coords_decontaminated(zone.get_tiles()) + var plant_tiles = Math.get_tiles_in_circle( + zone.get_global_position(), + 20 + ) + + return ( + not is_there_a_plant_here + and player.region.is_coords_decontaminated(plant_tiles) + and not player.region.is_coords_rocky(plant_tiles) + ) func use(player : Player, zone : Player.ActionZone) -> bool: if player.region == null: @@ -138,7 +147,10 @@ func get_particles() -> Array[EffectParticles.Parameters]: return param -static func generate_first_mutation(rarity := 0) -> PlantMutation: +static func generate_first_mutations(rarity := 0) -> Array[PlantMutation]: + + if rarity < 0: + return [] var possible_mutation : PlantMutation = GameInfo.game_data.progression_data.available_mutations.filter( func (m : PlantMutation): return m.get_base_rarity() <= rarity @@ -148,26 +160,20 @@ static func generate_first_mutation(rarity := 0) -> PlantMutation: possible_mutation.level += level_to_add - return possible_mutation + return [possible_mutation] static func mutate_mutations(mutations : Array[PlantMutation]) -> Array[PlantMutation]: - var mutation_possibility : Array[MutationPossibility] = [ - AddMutation.new() - ] + var mutation_possibility : Array[MutationPossibility] = [] if ( - len(mutations) >= GameInfo.game_data.current_run.plant_info.get_mutation_max_number() + len(mutations) < GameInfo.game_data.current_run.plant_info.get_mutation_max_number() ): - mutation_possibility = [ - UpgradeMutation.new(), - ] - elif len(mutations) > 0: - mutation_possibility = [ - AddMutation.new(), - UpgradeMutation.new(), - ] + mutation_possibility.append(AddMutation.new()) + if len(mutations) > 0: + mutation_possibility.append(UpgradeMutation.new()) + var chosen_mutation_possibility = mutation_possibility.pick_random() return chosen_mutation_possibility.mutate(mutations) diff --git a/entities/player/inventory/scripts/items/shovel.gd b/entities/player/inventory/scripts/items/shovel.gd index 4417400..7e5a209 100644 --- a/entities/player/inventory/scripts/items/shovel.gd +++ b/entities/player/inventory/scripts/items/shovel.gd @@ -17,7 +17,7 @@ func get_icon() -> Texture2D: func get_usage_zone_radius() -> int: return SHOVEL_ZONE_RADIUS -func get_usage_object_affected(i : InspectableEntity) -> bool: +func get_usage_object_affected(i : Area2D) -> bool: return i is Plant func use_text() -> String: diff --git a/entities/player/player.tscn b/entities/player/player.tscn index 1b7fe36..22e3e5e 100644 --- a/entities/player/player.tscn +++ b/entities/player/player.tscn @@ -9,11 +9,23 @@ [ext_resource type="AudioStream" uid="uid://cv5avkd3qekt7" path="res://common/audio_manager/assets/sfx/movement/movement.wav" id="7_qiwj3"] [sub_resource type="CircleShape2D" id="CircleShape2D_sglur"] -radius = 27.0 +radius = 13.0 [sub_resource type="CircleShape2D" id="CircleShape2D_abrql"] radius = 40.0 +[sub_resource type="Gradient" id="Gradient_qiwj3"] +offsets = PackedFloat32Array(0.37339056, 0.49785408) +colors = PackedColorArray(0.043137256, 0.050980393, 0.15686275, 0, 0.043137256, 0.050980393, 0.15686275, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_26q78"] +gradient = SubResource("Gradient_qiwj3") +width = 600 +height = 600 +fill = 1 +fill_from = Vector2(0.5, 0.5) +fill_to = Vector2(0.5, 0) + [sub_resource type="AtlasTexture" id="AtlasTexture_fkugw"] atlas = ExtResource("4_bls4j") region = Rect2(3048, 0, 762, 1080) @@ -113,6 +125,9 @@ animations = [{ "speed": 5.0 }] +[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_bectd"] +blend_mode = 1 + [sub_resource type="Curve" id="Curve_fkugw"] _data = [Vector2(0, 0.14473677), 0.0, 0.0, 0, 0, Vector2(0.972549, 0.2654798), 0.0, 0.0, 0, 0] point_count = 2 @@ -253,6 +268,12 @@ position = Vector2(-2.3841858e-07, -7.999996) scale = Vector2(0.29154927, 0.29154924) texture = ExtResource("2_fkugw") +[node name="Fog" type="Sprite2D" parent="." unique_id=1590893330] +z_index = 10 +position = Vector2(0.99999994, -17) +scale = Vector2(8, 8) +texture = SubResource("GradientTexture2D_26q78") + [node name="PlayerSprite" type="AnimatedSprite2D" parent="." unique_id=638545037] unique_name_in_owner = true position = Vector2(0.99999994, -17) @@ -267,6 +288,7 @@ wanted_orientation = 2 [node name="Light" type="Sprite2D" parent="PlayerSprite" unique_id=1768327734] modulate = Color(0.70603025, 0.5959886, 0.33971557, 0.09019608) z_index = -1 +material = SubResource("CanvasItemMaterial_bectd") scale = Vector2(16.093441, 16.093441) texture = ExtResource("5_8fjmc") @@ -290,3 +312,15 @@ bus = &"Sfx" [node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=793749564] unique_name_in_owner = true libraries/ = SubResource("AnimationLibrary_qiwj3") + +[node name="NavigationAgent2D" type="NavigationAgent2D" parent="." unique_id=1282043308] +unique_name_in_owner = true +simplify_path = true +simplify_epsilon = 4.223 +path_search_max_polygons = 1000 +avoidance_enabled = true +radius = 500.0 +debug_use_custom = true +debug_path_custom_color = Color(0.5882353, 0.7019608, 0.85882354, 0.3019608) +debug_path_custom_point_size = 0.0 +debug_path_custom_line_width = 1.0 diff --git a/entities/player/scripts/player.gd b/entities/player/scripts/player.gd index 3aff6a7..90b0818 100644 --- a/entities/player/scripts/player.gd +++ b/entities/player/scripts/player.gd @@ -5,6 +5,7 @@ const ACTION_AREA_UPDATE_TIME=0.05 # When creating an action_zone, we make sure const MAX_REACH = 100 const HOLDING_ITEM_SPRITE_SIZE = 20. const TURN_ANIMATION_MINIMUM_THRESHOLD = 0.2 +const SPEED = 350 signal player_updated(player: Player) signal upgraded @@ -12,7 +13,6 @@ signal upgraded var terrain : Terrain var region : Region : get(): return terrain if terrain is Region else null -@export var speed = 350 var data : PlayerData var last_action_area_movement_timer : float = 100. @@ -22,7 +22,13 @@ var controlling_player : bool = false : controlling_player = v velocity = Vector2.ZERO -var instruction : Instruction = null +var instruction : Instruction = null : + set(i): + if instruction and is_node_ready(): + instruction.abort(self) + instruction = i + if instruction and is_node_ready(): + instruction.spawn_indicator(self) @onready var preview_zone : ActionZone = await setup_action_zone(Vector2.ZERO, null) @onready var action_zone : ActionZone = await setup_action_zone(Vector2.ZERO, null) @@ -81,7 +87,7 @@ func _process(delta): instruction = null input_direction = calculate_direction_instruction_direction() - velocity = input_direction * speed + velocity = input_direction * SPEED turn_animate(input_direction) move_preview_zone(get_global_mouse_position()) @@ -106,8 +112,11 @@ func calculate_direction_instruction_direction() -> Vector2: instruction.position.distance_to(global_position) > (MAX_REACH - 1.) or instruction is MoveInstruction ) - ): - return self.global_position.direction_to(instruction.position) + ): + if %NavigationAgent2D.target_position != instruction.position: + %NavigationAgent2D.target_position = instruction.position + return to_local(%NavigationAgent2D.get_next_path_position()).normalized() + # return self.global_position.direction_to(instruction.position) return Vector2.ZERO func calculate_direction_input_direction() -> Vector2: @@ -147,8 +156,8 @@ func try_interact(interactable : Interactable): func try_move(move_to : Vector2): instruction = MoveInstruction.new(move_to) -func can_pick_item(item: Item): - return item.type == Item.ItemType.TOOL_ITEM || !data.inventory.is_full() || !data.inventory.current_is_tool() +func can_pick_item(_item: Item): + return true func pick_item(item : Item): if item.type != Item.ItemType.TOOL_ITEM && data.inventory.is_full(): @@ -163,13 +172,23 @@ func pick_item(item : Item): func drop_item(): var ind_to_drop := data.inventory.current_item_ind - while ( - (data.inventory.get_item(ind_to_drop) == null or ind_to_drop < len(data.inventory.tools)) - and ind_to_drop < len(data.inventory.get_all_items()) - 1 + + if ( + data.inventory.get_item(ind_to_drop) == null or ind_to_drop < len(data.inventory.tools) ): - ind_to_drop += 1 - var item_to_drop = data.inventory.pop_item(ind_to_drop) - if item_to_drop: + var possible_ind : Array = range( + len(data.inventory.tools), + len(data.inventory.tools) + data.inventory.seeds_size + ).filter( + func (i): return data.inventory.get_item(i) != null + ) + if len(possible_ind): + ind_to_drop = possible_ind.pop_back() + else: + return + + var item_to_drop : Item = data.inventory.pop_item(ind_to_drop) + if item_to_drop and item_to_drop.type != Item.ItemType.TOOL_ITEM: terrain.drop_item(item_to_drop, global_position) AudioManager.play_sfx("Drop") region.save() @@ -239,11 +258,10 @@ func setup_preview_zone(item : Item): return preview_zone elif preview_zone: preview_zone.destroy() + preview_zone = null if item: preview_zone = await generate_action_zone(item) - else: - preview_zone = null func setup_action_zone(zone_position : Vector2, item: Item) -> ActionZone: if action_zone: @@ -259,8 +277,11 @@ func move_preview_zone(zone_position : Vector2): class Instruction: + const INDICATOR_COLOR := Color("#96B3DB") + var position : Vector2 var need_movement : bool = true + var indicator := Sprite2D.new() func _init(_pos : Vector2): position = _pos @@ -270,8 +291,46 @@ class Instruction: func do(_player : Player): pass + + func indicator_texture(): + return preload("res://common/icons/map-pin.svg") + + func indicator_size(): + return 40 + + func indicator_shift(): + return Vector2.ZERO + + func spawn_indicator(player : Player): + indicator.texture = indicator_texture() + + indicator.texture = indicator_texture() + indicator.scale = Vector2( + 1./(float(indicator_texture().get_width())/indicator_size()), + 1./(float(indicator_texture().get_height())/indicator_size()) + ) + + indicator.modulate = Color( + INDICATOR_COLOR.r, + INDICATOR_COLOR.g, + INDICATOR_COLOR.b, + 0. + ) + + player.get_parent().add_child(indicator) + + indicator.global_position = position + indicator_shift() + + player.get_tree().create_tween().tween_property(indicator, "modulate:a", 0.8, 0.2) + + func abort(player : Player): + indicator.queue_free() class MoveInstruction extends Instruction: + + func indicator_shift(): + return Vector2.UP * 50 + func can_be_done(player : Player): return player.global_position.distance_to(position) < 10. @@ -289,7 +348,10 @@ class ItemActionInstruction extends Instruction: not item.is_usage_need_proximity() or player.global_position.distance_to(position) < player.MAX_REACH ) - + + func indicator_texture(): + return item.icon + func do(player : Player): player.use_item(item) @@ -303,13 +365,16 @@ class InteractableInstruction extends Instruction: func can_be_done(player : Player): return player.global_position.distance_to(position) < player.MAX_REACH + func indicator_texture(): + return preload("res://common/icons/hand-grab.svg") + func do(player : Player): interactable.interact(player) class ActionZone: var item : Item = null var area : Area2D = Area2D.new() - var affected_areas : Array[InspectableEntity]= [] + var affected_areas : Array[Area2D]= [] func _init(_i : Item): item = _i @@ -330,9 +395,9 @@ class ActionZone: func update_preview_on_affected_area(): var detected_areas = get_affected_areas() clear_preview_on_affected_area() - var new_affected_areas : Array[InspectableEntity] = [] + var new_affected_areas : Array[Area2D] = [] for a in detected_areas: - if a is InspectableEntity and item.get_usage_object_affected(a): + if a is Area2D and item.get_usage_object_affected(a) and a.has_method("affect_preview"): a.affect_preview(true) new_affected_areas.append(a) affected_areas = new_affected_areas diff --git a/entities/player_3d/player_3D.tscn b/entities/player_3d/player_3D.tscn index b24331b..209d64d 100644 --- a/entities/player_3d/player_3D.tscn +++ b/entities/player_3d/player_3D.tscn @@ -64,7 +64,8 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.253273, 0) shape = SubResource("CapsuleShape3D_eodxe") [node name="OmniLight3D" type="OmniLight3D" parent="." unique_id=1818490710] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7901894e-08, -0.25222805, 0.6383209) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0989037e-09, -0.25222805, 0.025139987) +shadow_enabled = true [node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=1210282091] diff --git a/entities/player_3d/scripts/player_3d.gd b/entities/player_3d/scripts/player_3d.gd index ef25f51..ab8cfdf 100644 --- a/entities/player_3d/scripts/player_3d.gd +++ b/entities/player_3d/scripts/player_3d.gd @@ -2,7 +2,7 @@ extends CharacterBody3D class_name Player3D const POINTER_TEXTURE = preload("res://common/icons/focus.svg") -const POINTER_ACTION_TEXTURE = preload("res://common/icons/hand-stop.svg") +const POINTER_ACTION_TEXTURE = preload("res://common/icons/hand-finger.svg") @export var pointer_texture_rect : TextureRect diff --git a/entities/scripts/entity_data.gd b/entities/scripts/entity_data.gd index 53f0205..7c7f7a2 100644 --- a/entities/scripts/entity_data.gd +++ b/entities/scripts/entity_data.gd @@ -4,9 +4,6 @@ class_name EntityData @export var position : Vector2 -func _init(e : Entity): - position = e.global_position - func get_position() -> Vector2: return position diff --git a/entities/scripts/inspectable_entity.gd b/entities/scripts/inspectable_entity.gd index 30bd63d..212cadd 100644 --- a/entities/scripts/inspectable_entity.gd +++ b/entities/scripts/inspectable_entity.gd @@ -1,8 +1,8 @@ extends Entity class_name InspectableEntity -const MODULATE_INSPECTED_COLOR = Color.GRAY -const MODULATE_AFFECTED_COLOR = Color.RED +const MODULATE_INSPECTED_COLOR = Color("#96B3DB") +const MODULATE_AFFECTED_COLOR = Color("#FF006E") const DESC_ICON = preload("res://common/icons/align-right.svg") @export var default_info_title = "" @@ -11,6 +11,8 @@ const DESC_ICON = preload("res://common/icons/align-right.svg") @onready var default_modulate : Color = modulate @onready var inspectable_signals_setuped : bool = setup_inspectable_signals() +var mouse_over := false + func inspect(is_inspected : bool = true): modulate = MODULATE_INSPECTED_COLOR if is_inspected else default_modulate @@ -23,9 +25,11 @@ func setup_inspectable_signals() -> bool: return true func _on_mouse_entered(): + mouse_over = true Pointer.inspect(self) func _on_mouse_excited(): + mouse_over = false Pointer.stop_inspect(self) func pointer_text() -> String: @@ -54,3 +58,7 @@ func _notification(what): func get_card_up_padding() -> float: return Pointer.CARD_UP_PADDING + + +func _process(_delta): + modulate.a = 0.3 if mouse_over and Pointer.inspected != self else 1. \ No newline at end of file diff --git a/export_presets.cfg b/export_presets.cfg index 5ba12f1..eeef873 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -1,55 +1,5 @@ [preset.0] -name="Web" -platform="Web" -runnable=true -dedicated_server=false -custom_features="" -export_filter="all_resources" -include_filter="" -exclude_filter="" -export_path=".export/web/index.html" -patches=PackedStringArray() -patch_delta_encoding=false -patch_delta_compression_level_zstd=19 -patch_delta_min_reduction=0.1 -patch_delta_include_filters="*" -patch_delta_exclude_filters="" -encryption_include_filters="" -encryption_exclude_filters="" -seed=0 -encrypt_pck=false -encrypt_directory=false -script_export_mode=2 - -[preset.0.options] - -custom_template/debug="" -custom_template/release="" -variant/extensions_support=false -variant/thread_support=false -vram_texture_compression/for_desktop=true -vram_texture_compression/for_mobile=false -html/export_icon=true -html/custom_html_shell="" -html/head_include="" -html/canvas_resize_policy=2 -html/focus_canvas_on_start=true -html/experimental_virtual_keyboard=false -progressive_web_app/enabled=false -progressive_web_app/ensure_cross_origin_isolation_headers=true -progressive_web_app/offline_page="" -progressive_web_app/display=1 -progressive_web_app/orientation=0 -progressive_web_app/icon_144x144="" -progressive_web_app/icon_180x180="" -progressive_web_app/icon_512x512="" -progressive_web_app/background_color=Color(0, 0, 0, 1) -threads/emscripten_pool_size=8 -threads/godot_pool_size=4 - -[preset.1] - name="Windows Desktop" platform="Windows Desktop" runnable=true @@ -72,7 +22,7 @@ encrypt_pck=false encrypt_directory=false script_export_mode=2 -[preset.1.options] +[preset.0.options] custom_template/debug="" custom_template/release="" @@ -119,3 +69,50 @@ Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorActi ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue Remove-Item -Recurse -Force '{temp_dir}'" + +[preset.1] + +name="Linux" +platform="Linux" +runnable=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path=".export/steam/content_builder/content/linux/Seeding The Wasteland.x86_64" +patches=PackedStringArray() +patch_delta_encoding=false +patch_delta_compression_level_zstd=19 +patch_delta_min_reduction=0.1 +patch_delta_include_filters="*" +patch_delta_exclude_filters="" +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.1.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +binary_format/embed_pck=false +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +shader_baker/enabled=false +binary_format/architecture="x86_64" +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="#!/usr/bin/env bash +export DISPLAY=:0 +unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\" +\"{temp_dir}/{exe_name}\" {cmd_args}" +ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash +pkill -x -f \"{temp_dir}/{exe_name} {cmd_args}\" +rm -rf \"{temp_dir}\"" diff --git a/gui/dialogs/FullBackground/custom_full_background.tscn b/gui/dialogs/FullBackground/custom_full_background.tscn index bf446fe..c83d021 100644 --- a/gui/dialogs/FullBackground/custom_full_background.tscn +++ b/gui/dialogs/FullBackground/custom_full_background.tscn @@ -2,12 +2,6 @@ [ext_resource type="Script" uid="uid://bqdylb4maacf0" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.gd" id="1_tu40u"] [ext_resource type="Script" uid="uid://oxcjhq2817c7" path="res://addons/dialogic/Modules/Background/node_background_holder.gd" id="2_ghan2"] -[ext_resource type="Shader" uid="uid://cuni3ggtw2uuy" path="res://common/vfx/materials/shaders/blur.gdshader" id="2_v1ioh"] - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_v1ioh"] -shader = ExtResource("2_v1ioh") -shader_parameter/strength = 3.3 -shader_parameter/mix_percentage = 0.3 [node name="BackgroundLayer" type="Control" unique_id=421215061] layout_direction = 2 @@ -20,7 +14,7 @@ grow_vertical = 2 script = ExtResource("1_tu40u") [node name="DialogicNode_BackgroundHolder_Blur" type="ColorRect" parent="." unique_id=726280929] -material = SubResource("ShaderMaterial_v1ioh") +modulate = Color(1, 1, 1, 0.8) layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -28,4 +22,5 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 +color = Color(0.0627451, 0.05882353, 0.16862746, 1) script = ExtResource("2_ghan2") diff --git a/gui/game/announce/announce.tscn b/gui/game/announce/announce.tscn index c4f2a5d..4c7ce5b 100644 --- a/gui/game/announce/announce.tscn +++ b/gui/game/announce/announce.tscn @@ -2,19 +2,14 @@ [ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="1_0ssee"] [ext_resource type="Script" uid="uid://bvb4v66bqteuc" path="res://gui/game/announce/scripts/announce.gd" id="1_4evne"] -[ext_resource type="Shader" uid="uid://cuni3ggtw2uuy" path="res://common/vfx/materials/shaders/blur.gdshader" id="2_b6hac"] [ext_resource type="Texture2D" uid="uid://bi5jo6pf0acjb" path="res://common/icons/carambola.svg" id="2_iwcrn"] [ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="3_7nrno"] [ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="4_aao0q"] [ext_resource type="Environment" uid="uid://bxyp24f85p0xf" path="res://gui/game/assets/gui_3d_environment.tres" id="4_yjj5u"] [ext_resource type="Script" uid="uid://bqisp5hjs06rj" path="res://gui/game/announce/scripts/announce_inspectable.gd" id="6_aao0q"] +[ext_resource type="Texture2D" uid="uid://df0y0s666ui4h" path="res://icon.png" id="7_aao0q"] [ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="9_b6hac"] -[sub_resource type="ShaderMaterial" id="ShaderMaterial_f0v68"] -shader = ExtResource("2_b6hac") -shader_parameter/strength = 5.00000023424012 -shader_parameter/mix_percentage = 0.3 - [sub_resource type="ViewportTexture" id="ViewportTexture_huxc5"] viewport_path = NodePath("Particles/SubViewport") @@ -33,7 +28,7 @@ font_size = 50 font_color = Color(1, 0.6509804, 0.09019608, 1) [sub_resource type="ViewportTexture" id="ViewportTexture_aao0q"] -viewport_path = NodePath("AnnounceContainer/ObjectVisualiser/SubViewport") +viewport_path = NodePath("AnnounceContainer/HBoxContainer/ObjectVisualiser/SubViewport") [sub_resource type="Animation" id="Animation_aao0q"] length = 0.001 @@ -85,6 +80,18 @@ tracks/3/keys = { "update": 0, "values": [Color(1, 1, 1, 1)] } +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("MarginContainer/BackgroundRect:modulate:a") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [1.0] +} [sub_resource type="Animation" id="Animation_b6hac"] resource_name = "appear" @@ -137,6 +144,18 @@ tracks/3/keys = { "update": 0, "values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] } +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("MarginContainer/BackgroundRect:modulate:a") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0.03333333, 0.8), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.8] +} [sub_resource type="AnimationLibrary" id="AnimationLibrary_6qyp1"] _data = { @@ -155,12 +174,12 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 -[node name="BlurRect" type="ColorRect" parent="MarginContainer" unique_id=1271832904] -material = SubResource("ShaderMaterial_f0v68") +[node name="BackgroundRect" type="ColorRect" parent="MarginContainer" unique_id=1271832904] layout_mode = 2 color = Color(0.0352941, 0.0196078, 0.12549, 0.705882) [node name="Particles" type="TextureRect" parent="." unique_id=691167186] +z_index = 1 anchors_preset = 8 anchor_left = 0.5 anchor_top = 0.5 @@ -215,33 +234,76 @@ text = "Pelle" label_settings = SubResource("LabelSettings_6qyp1") horizontal_alignment = 1 -[node name="ObjectVisualiser" type="TextureRect" parent="AnnounceContainer" unique_id=1529068201] +[node name="HBoxContainer" type="GridContainer" parent="AnnounceContainer" unique_id=802355154] +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_constants/h_separation = 87 +columns = 3 + +[node name="Control" type="VBoxContainer" parent="AnnounceContainer/HBoxContainer" unique_id=316081338] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 +alignment = 1 + +[node name="AnnounceDesc" type="RichTextLabel" parent="AnnounceContainer/HBoxContainer/Control" unique_id=1675704602] unique_name_in_owner = true layout_mode = 2 +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_fonts/mono_font = ExtResource("4_aao0q") +theme_override_font_sizes/normal_font_size = 20 +theme_override_font_sizes/bold_font_size = 20 +theme_override_font_sizes/bold_italics_font_size = 20 +theme_override_font_sizes/italics_font_size = 20 +theme_override_font_sizes/mono_font_size = 20 +bbcode_enabled = true +text = "This tool is used to blablablabla" +fit_content = true +autowrap_mode = 2 +horizontal_alignment = 1 + +[node name="ObjectVisualiser" type="TextureRect" parent="AnnounceContainer/HBoxContainer" unique_id=1529068201] +unique_name_in_owner = true +z_index = 2 +layout_mode = 2 size_flags_horizontal = 4 mouse_filter = 0 texture = SubResource("ViewportTexture_aao0q") stretch_mode = 5 script = ExtResource("6_aao0q") -[node name="SubViewport" type="SubViewport" parent="AnnounceContainer/ObjectVisualiser" unique_id=403959884] +[node name="SubViewport" type="SubViewport" parent="AnnounceContainer/HBoxContainer/ObjectVisualiser" unique_id=403959884] own_world_3d = true transparent_bg = true size = Vector2i(300, 300) -[node name="AnnouceObject" type="Node3D" parent="AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=986671004] +[node name="AnnouceObject" type="Node3D" parent="AnnounceContainer/HBoxContainer/ObjectVisualiser/SubViewport" unique_id=986671004] unique_name_in_owner = true -transform = Transform3D(-0.4963247, -0.7514756, 0.43456152, -0.8508927, 0.32199714, -0.4149924, 0.17189625, -0.57574874, -0.79934174, 0, 0, 0) +transform = Transform3D(-0.054461285, 0.73170173, 0.6795513, -0.8508927, 0.32199714, -0.4149924, -0.52245957, -0.6008157, 0.60510355, 0, 0, 0) -[node name="Camera3D" type="Camera3D" parent="AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=1788331074] +[node name="Camera3D" type="Camera3D" parent="AnnounceContainer/HBoxContainer/ObjectVisualiser/SubViewport" unique_id=1788331074] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1) keep_aspect = 0 current = true fov = 20.0 -[node name="WorldEnvironment" type="WorldEnvironment" parent="AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=296795988] +[node name="WorldEnvironment" type="WorldEnvironment" parent="AnnounceContainer/HBoxContainer/ObjectVisualiser/SubViewport" unique_id=296795988] environment = ExtResource("4_yjj5u") +[node name="Control3" type="VBoxContainer" parent="AnnounceContainer/HBoxContainer" unique_id=1699222883] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 +alignment = 1 + +[node name="AnnounceImage" type="TextureRect" parent="AnnounceContainer/HBoxContainer/Control3" unique_id=291872035] +unique_name_in_owner = true +layout_mode = 2 +texture = ExtResource("7_aao0q") +expand_mode = 4 +stretch_mode = 5 + [node name="OkButton" type="Button" parent="AnnounceContainer" unique_id=56162930] unique_name_in_owner = true layout_mode = 2 diff --git a/gui/game/announce/screenshots/detector.png b/gui/game/announce/screenshots/detector.png new file mode 100644 index 0000000..178ec17 Binary files /dev/null and b/gui/game/announce/screenshots/detector.png differ diff --git a/gui/game/announce/screenshots/detector.png.import b/gui/game/announce/screenshots/detector.png.import new file mode 100644 index 0000000..d7b6a25 --- /dev/null +++ b/gui/game/announce/screenshots/detector.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ctthl6arolwgv" +path="res://.godot/imported/detector.png-5b74af2127c132dd4b571fa880e19088.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gui/game/announce/screenshots/detector.png" +dest_files=["res://.godot/imported/detector.png-5b74af2127c132dd4b571fa880e19088.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 diff --git a/gui/game/announce/screenshots/fork.png b/gui/game/announce/screenshots/fork.png new file mode 100644 index 0000000..1b62ae8 Binary files /dev/null and b/gui/game/announce/screenshots/fork.png differ diff --git a/gui/game/announce/screenshots/fork.png.import b/gui/game/announce/screenshots/fork.png.import new file mode 100644 index 0000000..656a60f --- /dev/null +++ b/gui/game/announce/screenshots/fork.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dprd77l2y7c3u" +path="res://.godot/imported/fork.png-d60826a524b93f90b3c53fad53cb4507.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gui/game/announce/screenshots/fork.png" +dest_files=["res://.godot/imported/fork.png-d60826a524b93f90b3c53fad53cb4507.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 diff --git a/gui/game/announce/screenshots/pickaxe.png b/gui/game/announce/screenshots/pickaxe.png new file mode 100644 index 0000000..c67d165 Binary files /dev/null and b/gui/game/announce/screenshots/pickaxe.png differ diff --git a/gui/game/announce/screenshots/pickaxe.png.import b/gui/game/announce/screenshots/pickaxe.png.import new file mode 100644 index 0000000..4aeefe0 --- /dev/null +++ b/gui/game/announce/screenshots/pickaxe.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://idqv6f2w46h4" +path="res://.godot/imported/pickaxe.png-581e6e1ec785ec3f6ccdd57812a72d40.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gui/game/announce/screenshots/pickaxe.png" +dest_files=["res://.godot/imported/pickaxe.png-581e6e1ec785ec3f6ccdd57812a72d40.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 diff --git a/gui/game/announce/scripts/annouce_object.gd b/gui/game/announce/scripts/annouce_object.gd index 69549e2..1f9e96d 100644 --- a/gui/game/announce/scripts/annouce_object.gd +++ b/gui/game/announce/scripts/annouce_object.gd @@ -2,12 +2,21 @@ extends Resource class_name AnnouceObject +var desc := "" +var image : Texture = null + @abstract func get_3d_object() -> Node3D @abstract func get_title() -> String @abstract func get_text() -> String +func get_desc() -> String: + return desc + +func get_image() -> Texture: + return image + @abstract func get_card_info() -> CardInfo @abstract func _on_dismiss() \ No newline at end of file diff --git a/gui/game/announce/scripts/annouce_tool.gd b/gui/game/announce/scripts/annouce_tool.gd index 5383f94..917f7a7 100644 --- a/gui/game/announce/scripts/annouce_tool.gd +++ b/gui/game/announce/scripts/annouce_tool.gd @@ -6,8 +6,14 @@ const ITEM_3D_SCENE = preload("res://gui/game/inventory_gui/inventory_item/inven @export var tool_item : Item -func _init(_tool_item : Item): +func _init( + _tool_item : Item, + _image : Texture = null, + _desc := _tool_item.get_description(), +): tool_item = _tool_item + desc = _desc + image = _image func get_3d_object() -> Node3D: var new_object = ITEM_3D_SCENE.instantiate() as InventoryItem3D diff --git a/gui/game/announce/scripts/announce.gd b/gui/game/announce/scripts/announce.gd index 2d2da47..05a3417 100644 --- a/gui/game/announce/scripts/announce.gd +++ b/gui/game/announce/scripts/announce.gd @@ -21,75 +21,86 @@ const YELLOW_COLOR = Color("e29f32") const RED_COLOR = Color("f20058") func _ready(): - set_announce_object() - %OkButton.button_down.connect(_on_ok_button_down) - hide() - + set_announce_object() + %OkButton.button_down.connect(_on_ok_button_down) + hide() + - GameInfo.game_data.player_data.inventory.tool_added.connect( - func (i : Item): - if not i.name in GameInfo.game_data.item_announced: - announce_objects.append(AnnounceTool.new(i)) - GameInfo.game_data.item_announced.append(i.name) - ) + GameInfo.game_data.player_data.inventory.tool_added.connect( + func (i : Item): + if not i.name in GameInfo.game_data.item_announced: + announce_objects.append(AnnounceTool.new(i, get_screenshots_for_item(i))) + GameInfo.game_data.item_announced.append(i.name) + ) func _process(delta): - if announce_object == null and not visible and len(announce_objects) > 0: - announce_object = announce_objects.pop_front() - update_rotation(delta) + if announce_object == null and not visible and len(announce_objects) > 0: + announce_object = announce_objects.pop_front() + update_rotation(delta) + +func get_screenshots_for_item(i : Item) -> Texture: + if i is Pickaxe: + return preload("res://gui/game/announce/screenshots/pickaxe.png") + if i is Detector: + return preload("res://gui/game/announce/screenshots/detector.png") + if i is Fork: + return preload("res://gui/game/announce/screenshots/fork.png") + return null func update_rotation(delta): - if visible: - next_mouse_pos = get_viewport().get_mouse_position() - if Input.is_action_just_pressed("action"): - rotating = true - prev_mouse_pos = get_viewport().get_mouse_position() - if Input.is_action_just_released("action"): - rotating = false - object_acceleration = Vector2( - float(next_mouse_pos.x - prev_mouse_pos.x), - float(next_mouse_pos.y - prev_mouse_pos.y) - ) + if visible: + next_mouse_pos = get_viewport().get_mouse_position() + if Input.is_action_just_pressed("action"): + rotating = true + prev_mouse_pos = get_viewport().get_mouse_position() + if Input.is_action_just_released("action"): + rotating = false + object_acceleration = Vector2( + float(next_mouse_pos.x - prev_mouse_pos.x), + float(next_mouse_pos.y - prev_mouse_pos.y) + ) - var object_rotation = object_acceleration + var object_rotation = object_acceleration - if rotating: - object_rotation = Vector2( - float(next_mouse_pos.x - prev_mouse_pos.x), - float(next_mouse_pos.y - prev_mouse_pos.y) - ) - prev_mouse_pos = next_mouse_pos - else : - object_acceleration = object_acceleration.lerp(DEFAULT_OBJECT_ACCELERATION, 0.1) + if rotating: + object_rotation = Vector2( + float(next_mouse_pos.x - prev_mouse_pos.x), + float(next_mouse_pos.y - prev_mouse_pos.y) + ) + prev_mouse_pos = next_mouse_pos + 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) + %AnnouceObject.rotate(Vector3.UP, object_rotation.x * delta) + %AnnouceObject.rotate(Vector3.RIGHT, object_rotation.y * delta) func set_announce_object(object := announce_object): - if is_node_ready() and object: - for children in %AnnouceObject.get_children(): - children.queue_free() + if is_node_ready() and object: + for children in %AnnouceObject.get_children(): + children.queue_free() - %AnnouceObject.add_child(object.get_3d_object()) - %AnnouceObject.rotation = Vector3.ZERO - %AnnounceTitle.text = object.get_title() - %AnnounceText.text = object.get_text() - %ObjectVisualiser.info = object.get_card_info() + %AnnouceObject.add_child(object.get_3d_object()) + %AnnouceObject.rotation = Vector3.ZERO + %AnnounceTitle.text = object.get_title() + %AnnounceText.text = object.get_text() + %AnnounceDesc.text = object.get_desc() + %AnnounceImage.texture = object.get_image() + %ObjectVisualiser.info = object.get_card_info() - if not visible: - %AnimationPlayer.play("appear") - Pointer.action_disabled = true - AudioManager.play_sfx("Reveal") - elif object == null and visible: - %AnimationPlayer.play_backwards("appear") - get_tree().create_timer(0.2).timeout.connect( # Put a delay to not interfere with the ok button click - func(): - Pointer.action_disabled = false - ) - announce_object = object + if not visible: + %AnimationPlayer.play("appear") + Pointer.action_disabled = true + AudioManager.play_sfx("Reveal") + elif object == null and visible: + %AnimationPlayer.play_backwards("appear") + get_tree().create_timer(0.2).timeout.connect( # Put a delay to not interfere with the ok button click + func(): + Pointer.action_disabled = false + ) + announce_object = object func _on_ok_button_down(): - if announce_object: - announce_object._on_dismiss() - announce_object = null + if announce_object: + announce_object._on_dismiss() + announce_object = null diff --git a/gui/game/game_gui.tscn b/gui/game/game_gui.tscn index ccfb347..cc745e1 100644 --- a/gui/game/game_gui.tscn +++ b/gui/game/game_gui.tscn @@ -155,11 +155,11 @@ theme_override_fonts/normal_font = ExtResource("6_2wykm") theme_override_fonts/bold_font = ExtResource("6_2wykm") theme_override_fonts/bold_italics_font = ExtResource("6_2wykm") theme_override_fonts/italics_font = ExtResource("6_2wykm") -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 +theme_override_font_sizes/normal_font_size = 40 +theme_override_font_sizes/bold_font_size = 40 +theme_override_font_sizes/bold_italics_font_size = 40 +theme_override_font_sizes/italics_font_size = 40 +theme_override_font_sizes/mono_font_size = 40 bbcode_enabled = true text = "Action en cours Action en cours Action en cours Action en cours Action en cours " fit_content = true diff --git a/gui/game/inventory_gui/inventory_item/inventory_item_3d.tscn b/gui/game/inventory_gui/inventory_item/inventory_item_3d.tscn index 0fa6fd0..9ab9515 100644 --- a/gui/game/inventory_gui/inventory_item/inventory_item_3d.tscn +++ b/gui/game/inventory_gui/inventory_item/inventory_item_3d.tscn @@ -2,7 +2,6 @@ [ext_resource type="Script" uid="uid://mrw23oxsai10" path="res://gui/game/inventory_gui/inventory_item/scripts/inventory_item_3d.gd" id="1_nsad1"] [ext_resource type="PackedScene" uid="uid://oktd71knql00" path="res://gui/game/inventory_gui/assets/3d/item_screen.blend" id="2_1uxm0"] -[ext_resource type="Texture2D" uid="uid://dex283rx00fjb" path="res://common/icons/logout.svg" id="2_hv1tg"] [ext_resource type="Script" uid="uid://bq7admu4ahs5r" path="res://entities/player/inventory/scripts/item.gd" id="3_ixa47"] [ext_resource type="Texture2D" uid="uid://cgmxjom200bej" path="res://common/icons/chevrons-up.svg" id="5_g1uf8"] [ext_resource type="Texture2D" uid="uid://ds4m14vl7he6v" path="res://common/icons/pick.svg" id="6_jdjjl"] @@ -11,6 +10,9 @@ script = ExtResource("3_ixa47") metadata/_custom_type_script = "uid://bq7admu4ahs5r" +[sub_resource type="BoxShape3D" id="BoxShape3D_1uxm0"] +size = Vector3(0.21289063, 0.22167969, 0.2841797) + [sub_resource type="Gradient" id="Gradient_ixa47"] offsets = PackedFloat32Array(0, 0.84549356) colors = PackedColorArray(0.002722778, 0.0025074463, 0.012722934, 1, 0.0627451, 0.05882353, 0.16862746, 1) @@ -42,12 +44,14 @@ height = 14 fill_from = Vector2(0, 1) fill_to = Vector2(0, 0) -[sub_resource type="BoxShape3D" id="BoxShape3D_1uxm0"] -size = Vector3(0.21289063, 0.22167969, 0.2841797) - -[node name="InventoryItem3d" type="Node3D" unique_id=797856392] +[node name="InventoryItem3d" type="Area3D" unique_id=1974785723] script = ExtResource("1_nsad1") item = SubResource("Resource_g1uf8") +interactable = null +inspectable = true + +[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=2020875183] +shape = SubResource("BoxShape3D_1uxm0") [node name="Model" parent="." unique_id=1055300734 instance=ExtResource("2_1uxm0")] @@ -76,21 +80,42 @@ unique_name_in_owner = true transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 0, 0.004884802, -0.0937915) modulate = Color(1, 1, 1, 0.3) pixel_size = 0.0020833334 -texture = ExtResource("2_hv1tg") -[node name="ParticleSprite1" type="Sprite3D" parent="." unique_id=811884632] +[node name="ParticleSprites" type="Node3D" parent="." unique_id=427396867] unique_name_in_owner = true + +[node name="ParticleSprite1" type="Sprite3D" parent="ParticleSprites" unique_id=811884632] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.04235574, -0.03381054, -0.105405755) +visible = false pixel_size = 0.001 texture = ExtResource("5_g1uf8") -[node name="ParticleSprite2" type="Sprite3D" parent="." unique_id=1076243108] -unique_name_in_owner = true +[node name="ParticleSprite2" type="Sprite3D" parent="ParticleSprites" unique_id=1076243108] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.042, -0.034, -0.105) +visible = false pixel_size = 0.001 texture = ExtResource("6_jdjjl") -[node name="Area3D" type="Area3D" parent="." unique_id=426596211] +[node name="ParticleSprite3" type="Sprite3D" parent="ParticleSprites" unique_id=490761808] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0029564463, -0.034, -0.105) +visible = false +pixel_size = 0.001 +texture = ExtResource("6_jdjjl") -[node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D" unique_id=2020875183] -shape = SubResource("BoxShape3D_1uxm0") +[node name="ParticleSprite4" type="Sprite3D" parent="ParticleSprites" unique_id=1224179780] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.04235574, 0.04323736, -0.105405755) +visible = false +pixel_size = 0.001 +texture = ExtResource("5_g1uf8") + +[node name="ParticleSprite5" type="Sprite3D" parent="ParticleSprites" unique_id=241043116] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.042, 0.043047898, -0.105) +visible = false +pixel_size = 0.001 +texture = ExtResource("6_jdjjl") + +[node name="ParticleSprite6" type="Sprite3D" parent="ParticleSprites" unique_id=1794865960] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0029564463, 0.043047898, -0.105) +visible = false +pixel_size = 0.001 +texture = ExtResource("6_jdjjl") diff --git a/gui/game/inventory_gui/inventory_item/scripts/inventory_item_3d.gd b/gui/game/inventory_gui/inventory_item/scripts/inventory_item_3d.gd index e8b98c8..61b42d6 100644 --- a/gui/game/inventory_gui/inventory_item/scripts/inventory_item_3d.gd +++ b/gui/game/inventory_gui/inventory_item/scripts/inventory_item_3d.gd @@ -1,5 +1,5 @@ @tool -extends Node3D +extends Interactable3D class_name InventoryItem3D enum State { BLACK,ITEM,TOOL } @@ -19,10 +19,9 @@ func _ready(): func set_item(i : Item = item): item = i if is_node_ready(): - %ParticleSprite1.visible = false - %ParticleSprite2.visible = false - %ParticleSprite1.modulate = Color.WHITE - %ParticleSprite2.modulate = Color.WHITE + for c in %ParticleSprites.get_children(): + c.visible = false + c.modulate = Color.WHITE %ItemIconSprite.texture = null if i and i.icon: @@ -30,15 +29,11 @@ func set_item(i : Item = item): %ItemIconSprite.pixel_size = SPRITE_SIZE / i.icon.get_width() for j in range(len(i.get_particles())): - if j == 0: - %ParticleSprite1.visible = true - %ParticleSprite1.texture = i.get_particles()[j].texture - %ParticleSprite1.modulate = i.get_particles()[j].color - if j == 1: - %ParticleSprite2.visible = true - %ParticleSprite2.texture = i.get_particles()[j].texture - %ParticleSprite2.modulate = i.get_particles()[j].color - + if j < 6: + var sprite = %ParticleSprites.get_children()[j] as Sprite3D + sprite.visible = true + sprite.texture = i.get_particles()[j].texture + sprite.modulate = i.get_particles()[j].color func set_state(s := state): @@ -48,3 +43,8 @@ func set_state(s := state): %BlackScreen.visible = state == State.BLACK %ItemScreen.visible = state == State.ITEM %ToolScreen.visible = state == State.TOOL + +func card_info() -> CardInfo: + if item : + return item.card_info() + return null diff --git a/gui/game/scripts/game_gui.gd b/gui/game/scripts/game_gui.gd index 3fcd3ac..1bd6f1e 100644 --- a/gui/game/scripts/game_gui.gd +++ b/gui/game/scripts/game_gui.gd @@ -99,7 +99,7 @@ func score_update(with_animation = true): func state_update(region_data : RegionData): if region_data.state == RegionData.State.SUCCEEDED: - objective_text = "SHIP_IS_READY_TO_TAKE_OFF" + objective_text = "COLLECT_YOUR_SEEDS_AND_TAKE_OFF" if GameInfo.game_data.current_run.story_step is TutorialStoryStep: objective_text = "PASS_THE_MYSTERIOUS_DOOR" elif region_data.state == RegionData.State.FAILED: diff --git a/gui/game/tutorial/scripts/tutorial.gd b/gui/game/tutorial/scripts/tutorial.gd index e6cb1c4..da5bbb4 100644 --- a/gui/game/tutorial/scripts/tutorial.gd +++ b/gui/game/tutorial/scripts/tutorial.gd @@ -60,13 +60,6 @@ var success = false func(i:Item): return i is Seed ) != -1) ), - Step.new( - "DROP_SEED_WITH_KEY", - (func (): - return ( - Input.is_action_pressed("drop")) - ) - ), Step.new( "PLANT_SEED_IN_FERTILE_ZONE", (func (): @@ -89,13 +82,30 @@ var success = false if e is Plant and e.harvested: return true return false) - ) + ), + Step.new( + "TAKE_HARVESTED_SEEDS", + (func (): + for s in player.data.inventory.seeds: + if s is Seed and len(s.plant_mutations) > 0: + display_mutations_tutorial(s.card_info()) + return true + return false), + ), + Step.new( + "DROP_SEED_WITH_KEY", + (func (): + return ( + Input.is_action_pressed("drop")) + ) + ), ] func _ready(): setup_gui() show() %PlantInfoTutorial.hide() + %MutationTutorial.hide() func setup_gui(): for s in %Steps.get_children(): @@ -136,19 +146,36 @@ func finish_tutorial(): success = true func display_plant_info_tutorial(with_card_info : CardInfo): - %PlantCard.info = with_card_info + %PlantInfoCard.info = with_card_info AudioManager.play_sfx("Reveal") - %PlantCard.update() + %PlantInfoCard.update() %PlantInfoTutorialAnimationPlayer.play("appear") Pointer.action_disabled = true -func _on_ok_button_button_down(): +func display_mutations_tutorial(with_card_info : CardInfo): + %MutationCard.info = with_card_info + AudioManager.play_sfx("Reveal") + %MutationCard.update() + %MutationTutorialAnimationPlayer.play("appear") + Pointer.action_disabled = true + + +func _on_plant_info_ok_button_button_down(): %PlantInfoTutorialAnimationPlayer.play_backwards("appear") get_tree().create_timer(0.2).timeout.connect( # Put a delay to not interfere with the ok button click func(): Pointer.action_disabled = false ) + +func _on_mutation_ok_button_button_down(): + %MutationTutorialAnimationPlayer.play_backwards("appear") + get_tree().create_timer(0.2).timeout.connect( # Put a delay to not interfere with the ok button click + func(): + Pointer.action_disabled = false + ) + + class Step: var text : String : get = get_text diff --git a/gui/game/tutorial/tutorial.tscn b/gui/game/tutorial/tutorial.tscn index b389c8d..b4c014c 100644 --- a/gui/game/tutorial/tutorial.tscn +++ b/gui/game/tutorial/tutorial.tscn @@ -4,7 +4,6 @@ [ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="2_1wikm"] [ext_resource type="Texture2D" uid="uid://1ynlp05wj0hm" path="res://common/icons/rocket.svg" id="3_8kuag"] [ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="4_1wikm"] -[ext_resource type="Shader" uid="uid://cuni3ggtw2uuy" path="res://common/vfx/materials/shaders/blur.gdshader" id="5_5i4hd"] [ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="6_hgus1"] [ext_resource type="PackedScene" uid="uid://753270jjxmfg" path="res://gui/game/card/card.tscn" id="6_vg3tr"] [ext_resource type="Texture2D" uid="uid://bgi4rc50par30" path="res://common/icons/arrow-narrow-right.svg" id="7_6k6bq"] @@ -30,11 +29,6 @@ corner_radius_bottom_left = 20 font = ExtResource("4_1wikm") font_size = 20 -[sub_resource type="ShaderMaterial" id="ShaderMaterial_pu6eb"] -shader = ExtResource("5_5i4hd") -shader_parameter/strength = 8.00000037674012 -shader_parameter/mix_percentage = 0.3 - [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ebkn5"] [sub_resource type="Resource" id="Resource_ditr3"] @@ -99,6 +93,18 @@ tracks/2/keys = { "update": 1, "values": [1.0] } +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Background:modulate:a") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [1.0] +} [sub_resource type="Animation" id="Animation_58nqq"] resource_name = "appear" @@ -139,6 +145,18 @@ tracks/2/keys = { "update": 0, "values": [0.0, 1.0] } +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Background:modulate:a") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.06666667, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.8] +} [sub_resource type="AnimationLibrary" id="AnimationLibrary_ebkn5"] _data = { @@ -200,8 +218,7 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 -[node name="BlurRect" type="ColorRect" parent="PlantInfoTutorial" unique_id=35513528] -material = SubResource("ShaderMaterial_pu6eb") +[node name="Background" type="ColorRect" parent="PlantInfoTutorial" unique_id=35513528] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -288,7 +305,7 @@ layout_mode = 2 theme_override_constants/separation = 30 theme_override_styles/separator = SubResource("StyleBoxEmpty_ebkn5") -[node name="PlantCard" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer3" unique_id=1085885349 instance=ExtResource("6_vg3tr")] +[node name="PlantInfoCard" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer3" unique_id=1085885349 instance=ExtResource("6_vg3tr")] unique_name_in_owner = true custom_minimum_size = Vector2(350, 0) layout_mode = 2 @@ -325,6 +342,7 @@ horizontal_alignment = 2 vertical_alignment = 1 [node name="HBoxContainer2" type="HBoxContainer" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer2" unique_id=2062134463] +visible = false layout_mode = 2 alignment = 1 @@ -344,7 +362,7 @@ scroll_active = false horizontal_alignment = 2 vertical_alignment = 1 -[node name="OkButton" type="Button" parent="PlantInfoTutorial/MarginContainer" unique_id=1684351093] +[node name="PlantInfoOkButton" type="Button" parent="PlantInfoTutorial/MarginContainer" unique_id=1684351093] layout_mode = 2 size_flags_horizontal = 4 theme = ExtResource("18_6k6bq") @@ -354,4 +372,103 @@ text = "OK" unique_name_in_owner = true libraries/ = SubResource("AnimationLibrary_ebkn5") -[connection signal="button_down" from="PlantInfoTutorial/MarginContainer/OkButton" to="." method="_on_ok_button_button_down"] +[node name="MutationTutorial" type="Control" parent="." unique_id=722588851] +unique_name_in_owner = true +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Background" type="ColorRect" parent="MutationTutorial" unique_id=250614963] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0.037180007, 0.020800002, 0.13, 1) + +[node name="MarginContainer" type="VBoxContainer" parent="MutationTutorial" unique_id=1821562698] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 12 +alignment = 1 + +[node name="Title" type="Label" parent="MutationTutorial/MarginContainer" unique_id=1928457691] +layout_mode = 2 +text = "MUTATIONS" +label_settings = ExtResource("6_hgus1") +horizontal_alignment = 1 + +[node name="Subtitle" type="Label" parent="MutationTutorial/MarginContainer" unique_id=1467489572] +layout_mode = 2 +text = "SEEDS_HAVE_A_CHANCE_TO_GAIN_MUTATIONS" +horizontal_alignment = 1 + +[node name="GridContainer" type="GridContainer" parent="MutationTutorial/MarginContainer" unique_id=386984353] +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +columns = 3 + +[node name="VBoxContainer3" type="VBoxContainer" parent="MutationTutorial/MarginContainer/GridContainer" unique_id=2005513108] +layout_mode = 2 + +[node name="HSeparator" type="HSeparator" parent="MutationTutorial/MarginContainer/GridContainer/VBoxContainer3" unique_id=593977172] +layout_mode = 2 +theme_override_constants/separation = 30 +theme_override_styles/separator = SubResource("StyleBoxEmpty_ebkn5") + +[node name="MutationCard" parent="MutationTutorial/MarginContainer/GridContainer/VBoxContainer3" unique_id=1165095240 instance=ExtResource("6_vg3tr")] +unique_name_in_owner = true +custom_minimum_size = Vector2(350, 0) +layout_mode = 2 +info = SubResource("Resource_puixe") + +[node name="VBoxContainer2" type="VBoxContainer" parent="MutationTutorial/MarginContainer/GridContainer" unique_id=494292951] +layout_mode = 2 +theme_override_constants/separation = 8 + +[node name="HSeparator" type="HSeparator" parent="MutationTutorial/MarginContainer/GridContainer/VBoxContainer2" unique_id=331005698] +layout_mode = 2 +theme_override_constants/separation = 120 +theme_override_styles/separator = SubResource("StyleBoxEmpty_ebkn5") + +[node name="HBoxContainer2" type="HBoxContainer" parent="MutationTutorial/MarginContainer/GridContainer/VBoxContainer2" unique_id=781597357] +layout_mode = 2 +alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="MutationTutorial/MarginContainer/GridContainer/VBoxContainer2/HBoxContainer2" unique_id=281613573] +layout_mode = 2 +size_flags_vertical = 4 +texture = ExtResource("17_58nqq") +stretch_mode = 5 + +[node name="Label2" type="RichTextLabel" parent="MutationTutorial/MarginContainer/GridContainer/VBoxContainer2/HBoxContainer2" unique_id=1347221574] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 +bbcode_enabled = true +text = "PLANT_MUTATION_TEXT" +fit_content = true +scroll_active = false +horizontal_alignment = 2 +vertical_alignment = 1 + +[node name="MutationOkButton" type="Button" parent="MutationTutorial/MarginContainer" unique_id=1316064682] +layout_mode = 2 +size_flags_horizontal = 4 +theme = ExtResource("18_6k6bq") +text = "OK" + +[node name="MutationTutorialAnimationPlayer" type="AnimationPlayer" parent="MutationTutorial" unique_id=127058676] +unique_name_in_owner = true +libraries/ = SubResource("AnimationLibrary_ebkn5") + +[connection signal="button_down" from="PlantInfoTutorial/MarginContainer/PlantInfoOkButton" to="." method="_on_plant_info_ok_button_button_down"] +[connection signal="button_down" from="MutationTutorial/MarginContainer/MutationOkButton" to="." method="_on_mutation_ok_button_button_down"] diff --git a/gui/menu/settings/scripts/settings.gd b/gui/menu/settings/scripts/settings.gd index 377fa20..4d9351e 100644 --- a/gui/menu/settings/scripts/settings.gd +++ b/gui/menu/settings/scripts/settings.gd @@ -45,10 +45,16 @@ func _on_full_screen_check_box_toggled(toggled_on: bool): settings.full_screen = toggled_on func _on_music_slider_value_changed(value: float): + if value != settings.music_volume: + %MusicTestPlayer.play() settings.music_volume = min(1.0, value) func _on_env_slider_value_changed(value: float): + if value != settings.ambiance_volume: + %AudioStreamPlayer.play() settings.ambiance_volume = min(1.0, value) func _on_sfx_slider_value_changed(value: float): + if value != settings.sfx_volume: + %SfxTestPlayer.play() settings.sfx_volume = min(1.0, value) diff --git a/gui/menu/settings/settings.tscn b/gui/menu/settings/settings.tscn index eb7e2c8..6c1c0fb 100644 --- a/gui/menu/settings/settings.tscn +++ b/gui/menu/settings/settings.tscn @@ -1,12 +1,13 @@ -[gd_scene load_steps=6 format=3 uid="uid://g6lbgg1fhc25"] +[gd_scene format=3 uid="uid://g6lbgg1fhc25"] [ext_resource type="Script" uid="uid://bms0xtv8vh2qg" path="res://gui/menu/settings/scripts/settings.gd" id="1_7t8mv"] [ext_resource type="PackedScene" uid="uid://brxrl7sipyy6k" path="res://gui/menu/window/window.tscn" id="1_gkn1k"] [ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="2_7t8mv"] [ext_resource type="PackedScene" uid="uid://cvjqp3oewr3rv" path="res://gui/menu/window/content_title.tscn" id="3_rbiwc"] [ext_resource type="PackedScene" uid="uid://d3agt2njfgddb" path="res://gui/menu/window/content_label.tscn" id="4_rbiwc"] +[ext_resource type="AudioStream" uid="uid://8juy5ev3rdfh" path="res://common/audio_manager/assets/sfx/plant_points/plant_point_1.wav" id="6_8f00b"] -[node name="Settings" type="Control"] +[node name="Settings" type="Control" unique_id=1832300574] process_mode = 3 layout_mode = 3 anchors_preset = 15 @@ -19,7 +20,7 @@ size_flags_vertical = 3 mouse_filter = 1 script = ExtResource("1_7t8mv") -[node name="SettingsWindow" parent="." instance=ExtResource("1_gkn1k")] +[node name="SettingsWindow" parent="." unique_id=798514856 instance=ExtResource("1_gkn1k")] unique_name_in_owner = true process_mode = 3 layout_mode = 1 @@ -31,30 +32,30 @@ title = "SETTINGS" [node name="WindowTitle" parent="SettingsWindow/WindowHeader/MarginContainer" index="0"] text = "SETTINGS" -[node name="MarginContainer" type="MarginContainer" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer" index="0"] +[node name="MarginContainer" type="MarginContainer" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer" index="0" unique_id=871158801] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 theme_override_constants/margin_left = 5 theme_override_constants/margin_top = 0 -[node name="SettingsContent" type="VBoxContainer" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer"] +[node name="SettingsContent" type="VBoxContainer" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer" unique_id=1219194290] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -[node name="LanguageTitle" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent" instance=ExtResource("3_rbiwc")] +[node name="LanguageTitle" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent" unique_id=327370385 instance=ExtResource("3_rbiwc")] layout_mode = 2 title = "LANGUAGE" -[node name="LanguageSettings" type="GridContainer" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent"] +[node name="LanguageSettings" type="GridContainer" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent" unique_id=1441746682] layout_mode = 2 columns = 2 -[node name="LanguageText" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/LanguageSettings" instance=ExtResource("4_rbiwc")] +[node name="LanguageText" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/LanguageSettings" unique_id=1716488893 instance=ExtResource("4_rbiwc")] layout_mode = 2 -[node name="LanguageOptionButton" type="OptionButton" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/LanguageSettings"] +[node name="LanguageOptionButton" type="OptionButton" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/LanguageSettings" unique_id=1927908163] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 @@ -67,19 +68,19 @@ popup/item_0/id = 0 popup/item_1/text = "Français" popup/item_1/id = 1 -[node name="SoundTitle" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent" instance=ExtResource("3_rbiwc")] +[node name="SoundTitle" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent" unique_id=1397576206 instance=ExtResource("3_rbiwc")] layout_mode = 2 title = "SOUND" -[node name="SoundSliders" type="GridContainer" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent"] +[node name="SoundSliders" type="GridContainer" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent" unique_id=1765279832] layout_mode = 2 columns = 2 -[node name="MusicText" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders" instance=ExtResource("4_rbiwc")] +[node name="MusicText" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders" unique_id=282651139 instance=ExtResource("4_rbiwc")] layout_mode = 2 text = "MUSIC_VOLUME" -[node name="MusicSlider" type="HSlider" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders"] +[node name="MusicSlider" type="HSlider" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders" unique_id=685809540] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 @@ -89,47 +90,62 @@ max_value = 1.0 step = 0.01 value = 1.0 -[node name="EvironmentText" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders" instance=ExtResource("4_rbiwc")] +[node name="EvironmentText" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders" unique_id=378240691 instance=ExtResource("4_rbiwc")] layout_mode = 2 text = "ENVIRONMENT_VOLUME" -[node name="EnvSlider" type="HSlider" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders"] +[node name="EnvSlider" type="HSlider" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders" unique_id=1793576476] unique_name_in_owner = true layout_mode = 2 size_flags_vertical = 1 max_value = 1.0 step = 0.01 -[node name="SFXText" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders" instance=ExtResource("4_rbiwc")] +[node name="SFXText" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders" unique_id=720423882 instance=ExtResource("4_rbiwc")] layout_mode = 2 text = "SFX_VOLUME" -[node name="SFXSlider" type="HSlider" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders"] +[node name="SFXSlider" type="HSlider" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders" unique_id=1992740216] unique_name_in_owner = true layout_mode = 2 size_flags_vertical = 1 max_value = 1.0 step = 0.01 -[node name="VideoTitle" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent" instance=ExtResource("3_rbiwc")] +[node name="VideoTitle" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent" unique_id=1107495854 instance=ExtResource("3_rbiwc")] layout_mode = 2 title = "VIDEO" -[node name="VideoSettings" type="GridContainer" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent"] +[node name="VideoSettings" type="GridContainer" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent" unique_id=781693505] layout_mode = 2 columns = 2 -[node name="FullScreenText" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/VideoSettings" instance=ExtResource("4_rbiwc")] +[node name="FullScreenText" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/VideoSettings" unique_id=1915748714 instance=ExtResource("4_rbiwc")] layout_mode = 2 text = "FULLSCREEN" -[node name="FullScreenCheckBox" type="CheckBox" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/VideoSettings"] +[node name="FullScreenCheckBox" type="CheckBox" parent="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/VideoSettings" unique_id=1501477055] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 10 size_flags_vertical = 4 theme = ExtResource("2_7t8mv") +[node name="MusicTestPlayer" type="AudioStreamPlayer" parent="." unique_id=1716804039] +unique_name_in_owner = true +stream = ExtResource("6_8f00b") +bus = &"Music" + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="." unique_id=658541025] +unique_name_in_owner = true +stream = ExtResource("6_8f00b") +bus = &"Ambiance" + +[node name="SfxTestPlayer" type="AudioStreamPlayer" parent="." unique_id=2061345469] +unique_name_in_owner = true +stream = ExtResource("6_8f00b") +bus = &"Sfx" + [connection signal="item_selected" from="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/LanguageSettings/LanguageOptionButton" to="." method="_on_language_option_button_item_selected"] [connection signal="value_changed" from="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders/MusicSlider" to="." method="_on_music_slider_value_changed"] [connection signal="value_changed" from="SettingsWindow/WindowContent/MarginContainer/ContentContainer/MarginContainer/SettingsContent/SoundSliders/EnvSlider" to="." method="_on_env_slider_value_changed"] diff --git a/gui/pause/pause.tscn b/gui/pause/pause.tscn index 0949554..749dc30 100644 --- a/gui/pause/pause.tscn +++ b/gui/pause/pause.tscn @@ -177,12 +177,10 @@ vertical_alignment = 1 [node name="Settings" parent="." unique_id=758381952 instance=ExtResource("4_58dya")] unique_name_in_owner = true -visible = false mouse_filter = 2 [node name="Controls" parent="." unique_id=358658336 instance=ExtResource("11_urlqn")] unique_name_in_owner = true -visible = false mouse_filter = 2 [node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1779993260] diff --git a/gui/pause/scripts/pause.gd b/gui/pause/scripts/pause.gd index 17b7720..a1cc77d 100644 --- a/gui/pause/scripts/pause.gd +++ b/gui/pause/scripts/pause.gd @@ -54,6 +54,5 @@ func _on_controls_pressed(): func _on_give_up_pressed(): if GameInfo.game_data: - SceneManager.change_to_scene(AstraScene.new()) GameInfo.game_data.give_up() pause = false diff --git a/gui/pointer/pointer.tscn b/gui/pointer/pointer.tscn index b7431c0..a9c296b 100644 --- a/gui/pointer/pointer.tscn +++ b/gui/pointer/pointer.tscn @@ -3,9 +3,9 @@ [ext_resource type="Script" uid="uid://vhumsfntpqcl" path="res://gui/pointer/scripts/pointer.gd" id="1_1pe2k"] [ext_resource type="Texture2D" uid="uid://bspffyprdywgc" path="res://gui/pointer/assets/cursors/pointer.svg" id="2_q4bvb"] [ext_resource type="AudioStream" uid="uid://bym03qp4n6vep" path="res://gui/pointer/assets/sounds/click.wav" id="3_kj0cm"] -[ext_resource type="Texture2D" uid="uid://djb52fosgmv4j" path="res://common/icons/left_click.svg" id="3_pshoq"] [ext_resource type="AudioStream" uid="uid://bhsew2amu3ydx" path="res://gui/pointer/assets/sounds/action_press_time.wav" id="3_tof6i"] [ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="4_b4uwv"] +[ext_resource type="AudioStream" uid="uid://cs4y6sinpth8e" path="res://common/audio_manager/assets/sfx/recharge/recharge_capsule_1.wav" id="4_mw4ws"] [ext_resource type="Script" uid="uid://c60a1bjcuj4hd" path="res://common/vfx/circle/scripts/circle.gd" id="5_b4uwv"] [ext_resource type="PackedScene" uid="uid://3ss8pvhsackj" path="res://gui/game/card/card_visualiser.tscn" id="6_7j4mj"] [ext_resource type="Shader" uid="uid://bqjwmomh851lc" path="res://common/vfx/materials/shaders/skew.gdshader" id="7_wgcdp"] @@ -90,6 +90,13 @@ volume_db = -5.0 pitch_scale = 4.0 bus = &"Sfx" +[node name="ActionPlayer" type="AudioStreamPlayer" parent="InspectorCanvasLayer/Inspector" unique_id=659884130] +unique_name_in_owner = true +stream = ExtResource("4_mw4ws") +volume_db = -2.0 +pitch_scale = 2.0 +bus = &"Sfx" + [node name="ActionProgressBar" type="TextureProgressBar" parent="InspectorCanvasLayer/Inspector" unique_id=55992280] unique_name_in_owner = true layout_mode = 1 @@ -111,8 +118,8 @@ texture_progress = SubResource("GradientTexture2D_tof6i") [node name="Container" type="VBoxContainer" parent="InspectorCanvasLayer/Inspector" unique_id=319962477] layout_mode = 0 -offset_left = 28.0 -offset_right = 134.0 +offset_left = 32.0 +offset_right = 138.0 offset_bottom = 79.0 size_flags_horizontal = 0 size_flags_vertical = 0 @@ -123,12 +130,6 @@ unique_name_in_owner = true custom_minimum_size = Vector2(0, 20) layout_mode = 2 -[node name="MouseImage" type="TextureRect" parent="InspectorCanvasLayer/Inspector/Container/Action" unique_id=530309967] -layout_mode = 2 -texture = ExtResource("3_pshoq") -expand_mode = 2 -stretch_mode = 5 - [node name="ActionEnergyImage" type="TextureRect" parent="InspectorCanvasLayer/Inspector/Container/Action" unique_id=1684096069] unique_name_in_owner = true layout_mode = 2 diff --git a/gui/pointer/scripts/pointer.gd b/gui/pointer/scripts/pointer.gd index 06a405a..28f8a47 100644 --- a/gui/pointer/scripts/pointer.gd +++ b/gui/pointer/scripts/pointer.gd @@ -4,8 +4,10 @@ const DEFAULT_ACTION_COLOR = Color.WHITE const ENERGY_ACTION_COLOR = Color("ffff2b") const NO_ENERGY_ACTION_COLOR = Color.RED const ZONE_OPACITY = 0.4 -const ZONE_ACTIVATED_COLOR = Color.TURQUOISE -const ZONE_DEACTIVATED_COLOR = Color.REBECCA_PURPLE +const ZONE_ACTIVATED_COLOR = Color("#96B3DB") +const ZONE_DEACTIVATED_COLOR = Color("#FF006E") + +const SEED_CURSOR = preload("res://common/icons/shovel.svg") const CARD_VISUALISATION_TIME = 0.3 const CARD_UP_PADDING = 50 @@ -99,6 +101,7 @@ func process_player_actions(delta : float): %ActionProgressPlayer.pitch_scale = 1. / (current_selected_item.get_action_press_time() / %ActionProgressPlayer.stream.get_length()) if press_time > current_selected_item.get_action_press_time(): + %ActionPlayer.play() player.try_use_item( current_selected_item, player.get_global_mouse_position() @@ -117,10 +120,10 @@ func process_player_actions(delta : float): var interactable = current_inspect as Interactable player.try_interact(interactable) elif can_use_item and not current_selected_item.is_action_need_press_time(): - player.try_use_item( - current_selected_item, - player.get_global_mouse_position() - ) + player.try_use_item( + current_selected_item, + player.get_global_mouse_position() + ) func inspect(node: Node): if current_inspect and current_inspect != node and current_inspect.has_method("inspect"): diff --git a/project.godot b/project.godot index bbbc7d9..c9f06ca 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="beta-1.1" +config/version="beta-1.4" run/main_scene="uid://c5bruelvqbm1k" config/features=PackedStringArray("4.6", "Forward Plus") config/icon="uid://df0y0s666ui4h" @@ -45,6 +45,7 @@ directories/dch_directory={ "mysterious_demeter": "res://dialogs/characters/mysterious_demeter.dch" } directories/dtl_directory={ +"cave": "res://dialogs/timelines/astra/cave.dtl", "mercury_arrival": "res://dialogs/timelines/astra/mercury_arrival.dtl", "mercury_departure": "res://dialogs/timelines/mercury/mercury_departure.dtl", "tutorial/demeter_intro": "res://dialogs/timelines/tutorial/demeter_intro.dtl", @@ -110,7 +111,7 @@ variables={ "whoareyou": "false", "whynorth": "false" } -translation/id_counter=228 +translation/id_counter=236 translation/locales=[] history/visited_event_history_enabled=true audio/type_sound_bus="Sfx" @@ -246,7 +247,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_astra_failed_translation.en.translation", "res://translation/dialogs/dialogic_demeter_intro_translation.en.translation", "res://translation/dialogs/dialogic_demeter_outro_translation.en.translation", "res://translation/dialogs/dialogic_demeter_post_tutorial_translation.en.translation", "res://translation/dialogs/dialogic_demeter_ship_presentation_translation.en.translation", "res://translation/dialogs/dialogic_wake_up_translation.en.translation", "res://translation/dialogs/dialogic_wake_up_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_intro_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_ship_presentation_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_post_tutorial_translation.fr.translation", "res://translation/dialogs/dialogic_character_translations.fr.translation", "res://translation/dialogs/dialogic_demeter_astra_failed_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_outro_translation.fr.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_mercury_arrival_translation.en.translation", "res://translation/dialogs/dialogic_mercury_arrival_translation.fr.translation", "res://translation/dialogs/dialogic_mercury_departure_translation.en.translation", "res://translation/dialogs/dialogic_mercury_departure_translation.fr.translation", "res://translation/dialogs/dialogic_venus_arrival_translation.en.translation", "res://translation/dialogs/dialogic_venus_arrival_translation.fr.translation", "res://translation/dialogs/dialogic_venus_departure_translation.en.translation", "res://translation/dialogs/dialogic_venus_departure_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_astra_failed_translation.en.translation", "res://translation/dialogs/dialogic_demeter_intro_translation.en.translation", "res://translation/dialogs/dialogic_demeter_outro_translation.en.translation", "res://translation/dialogs/dialogic_demeter_post_tutorial_translation.en.translation", "res://translation/dialogs/dialogic_demeter_ship_presentation_translation.en.translation", "res://translation/dialogs/dialogic_wake_up_translation.en.translation", "res://translation/dialogs/dialogic_wake_up_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_intro_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_ship_presentation_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_post_tutorial_translation.fr.translation", "res://translation/dialogs/dialogic_character_translations.fr.translation", "res://translation/dialogs/dialogic_demeter_astra_failed_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_outro_translation.fr.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_mercury_arrival_translation.en.translation", "res://translation/dialogs/dialogic_mercury_arrival_translation.fr.translation", "res://translation/dialogs/dialogic_mercury_departure_translation.en.translation", "res://translation/dialogs/dialogic_mercury_departure_translation.fr.translation", "res://translation/dialogs/dialogic_venus_arrival_translation.en.translation", "res://translation/dialogs/dialogic_venus_arrival_translation.fr.translation", "res://translation/dialogs/dialogic_venus_departure_translation.en.translation", "res://translation/dialogs/dialogic_venus_departure_translation.fr.translation", "res://translation/dialogs/dialogic_cave_translation.en.translation", "res://translation/dialogs/dialogic_cave_translation.fr.translation") locale/test="fr" [rendering] diff --git a/stages/3d_scenes/borea_base/assets/3d/borea_base.blend b/stages/3d_scenes/borea_base/assets/3d/borea_base.blend index 22871ac..206a0f4 100644 Binary files a/stages/3d_scenes/borea_base/assets/3d/borea_base.blend and b/stages/3d_scenes/borea_base/assets/3d/borea_base.blend differ diff --git a/stages/3d_scenes/borea_base/assets/3d/borea_base.blend.import b/stages/3d_scenes/borea_base/assets/3d/borea_base.blend.import index 10c093c..f7540ed 100644 --- a/stages/3d_scenes/borea_base/assets/3d/borea_base.blend.import +++ b/stages/3d_scenes/borea_base/assets/3d/borea_base.blend.import @@ -3,7 +3,7 @@ importer="scene" importer_version=1 type="PackedScene" -uid="uid://bqo4uknlbm8r1" +uid="uid://b83v0uxiukmbb" path="res://.godot/imported/borea_base.blend-16b097cf97b3f00cfa1bc1f2c346e23b.scn" [deps] @@ -39,10 +39,10 @@ materials/extract_format=0 materials/extract_path="" _subresources={ "materials": { -"Glass": { +"Default3D": { "use_external/enabled": true, -"use_external/fallback_path": "res://common/assets/materials/glass_3d.tres", -"use_external/path": "uid://b5vlcdry8vtgi" +"use_external/fallback_path": "res://common/assets/materials/default_3d.tres", +"use_external/path": "uid://dvvi1k5c5iowc" }, "Material": { "use_external/enabled": true, diff --git a/stages/3d_scenes/borea_base/assets/3d/borea_base.blend1 b/stages/3d_scenes/borea_base/assets/3d/borea_base.blend1 index 9d242b4..e0eceb0 100644 Binary files a/stages/3d_scenes/borea_base/assets/3d/borea_base.blend1 and b/stages/3d_scenes/borea_base/assets/3d/borea_base.blend1 differ diff --git a/stages/3d_scenes/borea_base/assets/3d/borea_base_2.blend1 b/stages/3d_scenes/borea_base/assets/3d/borea_base_2.blend1 new file mode 100644 index 0000000..9764ff0 Binary files /dev/null and b/stages/3d_scenes/borea_base/assets/3d/borea_base_2.blend1 differ diff --git a/stages/3d_scenes/borea_base/borea_base.tscn b/stages/3d_scenes/borea_base/borea_base.tscn index 9886386..887dcce 100644 --- a/stages/3d_scenes/borea_base/borea_base.tscn +++ b/stages/3d_scenes/borea_base/borea_base.tscn @@ -1,168 +1,12 @@ -[gd_scene format=3 uid="uid://b6kl2hc85a0mh"] +[gd_scene format=3 uid="uid://cqg1avn1g0f1x"] -[ext_resource type="Script" uid="uid://btc447j47jbx0" path="res://stages/3d_scenes/borea_base/scripts/borea_base.gd" id="1_fevne"] -[ext_resource type="Shader" uid="uid://bv2rghn44mrrf" path="res://stages/title_screen/resources/shaders/stars.gdshader" id="1_xd71i"] -[ext_resource type="PackedScene" uid="uid://da7a74dg30q1l" path="res://entities/player_3d/player_3D.tscn" id="3_c8vcx"] -[ext_resource type="PackedScene" uid="uid://csx7d5khjd6y5" path="res://entities/interactable_3d/phone/phone.tscn" id="4_fevne"] -[ext_resource type="PackedScene" uid="uid://bqo4uknlbm8r1" path="res://stages/3d_scenes/borea_base/assets/3d/borea_base.blend" id="4_s7tqr"] -[ext_resource type="PackedScene" uid="uid://c5a32n6rjjlnt" path="res://gui/credits/credits.tscn" id="6_c8vcx"] -[ext_resource type="Material" uid="uid://cr7bp4fhh1ipr" path="res://entities/player_3d/resources/materials/post_process_quad.tres" id="7_s7tqr"] - -[sub_resource type="Animation" id="Animation_xd71i"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("%Player3D/../Lights/LightLevel0/OmniLight3D7:visible") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("%Player3D/../Lights/LightLevel0/OmniLight3D2:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("%Player3D/../Lights/LightLevel1/OmniLight3D10:visible") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("%Player3D/../Lights/LightLevel1/OmniLight3D14:visible") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("%Player3D/../Lights/LightLevel3/OmniLight3D3:visible") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - -[sub_resource type="Animation" id="Animation_fevne"] -resource_name = "blink" -length = 3.0 -loop_mode = 1 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("%Player3D/../Lights/LightLevel0/OmniLight3D7:visible") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 0.46666667, 1.37, 1.5866667, 2.2, 2.48, 2.77), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), -"update": 1, -"values": [true, false, true, false, true, false, true] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("%Player3D/../Lights/LightLevel0/OmniLight3D2:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0, 0.38, 1.2833333, 1.5, 2.2, 2.48, 2.77), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), -"update": 1, -"values": [true, false, true, false, true, true, true] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("%Player3D/../Lights/LightLevel1/OmniLight3D10:visible") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0, 0.63, 1.5333333, 1.75, 2.2, 2.48, 2.77), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), -"update": 1, -"values": [true, false, true, false, true, false, true] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("%Player3D/../Lights/LightLevel1/OmniLight3D14:visible") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0, 0.63, 1.5333333, 1.75, 2.2, 2.48, 2.77), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), -"update": 1, -"values": [true, false, true, false, true, true, true] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("%Player3D/../Lights/LightLevel3/OmniLight3D3:visible") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0, 0.63, 1.5333333, 1.75, 2.2, 2.48, 2.77), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), -"update": 1, -"values": [true, false, true, false, true, false, true] -} - -[sub_resource type="AnimationLibrary" id="AnimationLibrary_c8vcx"] -_data = { -&"RESET": SubResource("Animation_xd71i"), -&"blink": SubResource("Animation_fevne") -} - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_2ei4e"] -shader = ExtResource("1_xd71i") -shader_parameter/sky_color = Color(0.03, 0.05, 0.11, 1) -shader_parameter/star_base_color = Color(0.8, 1, 0.3, 1) -shader_parameter/star_hue_offset = 0.6 -shader_parameter/star_intensity = 0.08 -shader_parameter/layer_scale = 20.0 -shader_parameter/layer_scale_step = 10.0 -shader_parameter/layers_count = 3 - -[sub_resource type="Sky" id="Sky_xd71i"] -sky_material = SubResource("ShaderMaterial_2ei4e") +[ext_resource type="PackedScene" uid="uid://b83v0uxiukmbb" path="res://stages/3d_scenes/borea_base/assets/3d/borea_base.blend" id="1_dtguk"] +[ext_resource type="Script" uid="uid://c37uqdnr2himm" path="res://stages/3d_scenes/borea_base/scripts/borea_base.gd" id="1_xd71i"] +[ext_resource type="Texture2D" uid="uid://cww35xu1yqivp" path="res://stages/3d_scenes/cockpit_scene/assets/textures/sky.png" id="2_rsbui"] +[ext_resource type="PackedScene" uid="uid://da7a74dg30q1l" path="res://entities/player_3d/player_3D.tscn" id="3_xd71i"] [sub_resource type="Environment" id="Environment_fevne"] -background_mode = 2 -sky = SubResource("Sky_xd71i") sky_custom_fov = 61.7 -ambient_light_source = 3 -ambient_light_color = Color(1, 1, 1, 1) -ambient_light_sky_contribution = 0.85 -ambient_light_energy = 0.52 reflected_light_source = 2 tonemap_mode = 2 tonemap_exposure = 0.7 @@ -177,815 +21,99 @@ fog_enabled = true fog_mode = 1 fog_light_color = Color(0.13725491, 0.39215687, 0.6666667, 1) fog_density = 0.1831 -fog_aerial_perspective = 0.113 fog_sky_affect = 0.0 volumetric_fog_sky_affect = 0.0 adjustment_enabled = true adjustment_saturation = 1.3 -[sub_resource type="BoxShape3D" id="BoxShape3D_c8vcx"] -size = Vector3(0.001, 7.6933594, 7.697876) - -[sub_resource type="Animation" id="Animation_s7tqr"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("TrailerCamera:position") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(0, 60.366375, 0)] -} - -[sub_resource type="Animation" id="Animation_2ei4e"] -resource_name = "trailer" -length = 10.0 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("TrailerCamera:position") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 9.933333), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [Vector3(0, 60.366375, 0), Vector3(0, 10, 0)] -} - -[sub_resource type="AnimationLibrary" id="AnimationLibrary_hlox4"] -_data = { -&"RESET": SubResource("Animation_s7tqr"), -&"trailer": SubResource("Animation_2ei4e") -} - -[sub_resource type="QuadMesh" id="QuadMesh_2ei4e"] -size = Vector2(2, 2) - -[node name="BoreaBase" type="Node3D" unique_id=442220603] -script = ExtResource("1_fevne") - -[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=1539431276] -transform = Transform3D(1, 0, 0, 0, 0.25881907, 0.9659258, 0, -0.9659258, 0.25881907, 30.708645, 59.967155, 32.405155) -light_color = Color(0.6660227, 0.6797195, 0.9820071, 1) -light_energy = 0.2 -shadow_enabled = true - -[node name="Lights" type="Node3D" parent="." unique_id=1071261896] - -[node name="LightLevel0" type="Node3D" parent="Lights" unique_id=1673172585] - -[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=331040735] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.250671, -2.1126924, 23.147612) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D4" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=781678275] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.520561, -2.1126924, -9.563883) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D5" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=1029811291] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.694098, -2.1126924, -20.977478) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D6" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=706813333] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2640495, -2.1126924, -28.070211) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D7" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=522933437] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.133095, -2.1126924, -28.070211) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D10" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=1811482313] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.797234, -2.1126924, 8.860925) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D11" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=617635003] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.40009, -2.1126924, 21.334354) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=918304264] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.523638, -2.1126924, 14.304096) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D14" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=1597573435] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.475027, -5.066031, -2.8978524) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D15" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=116640999] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.343237, -5.066031, -3.1424296) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D16" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=801358869] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.506277, -5.066031, 2.9720063) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="LightLevel1" type="Node3D" parent="Lights" unique_id=1922457496] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 8.234108, 0) - -[node name="OmniLight3D" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=55476383] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5544157, -2.1126924, 27.90219) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=92670411] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.250671, -2.1126924, 23.147612) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D5" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=636878856] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.694098, -2.1126924, -20.977478) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D6" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=1423170075] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2640495, -2.1126924, -28.070211) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D7" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=58992978] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.133095, -2.1126924, -28.070211) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D8" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=2076353163] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.688046, -2.1126924, -23.17867) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D9" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=1322504637] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.514515, -2.1126924, -14.292371) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D10" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=69628955] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.797234, -2.1126924, 8.860925) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D11" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=861056154] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.40009, -2.1126924, 21.334354) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D12" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=918332677] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.4000893, -2.1126924, 27.334354) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=271744912] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.523638, -2.1126924, 14.304096) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D14" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=1456495033] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.475027, -5.066031, -2.8978524) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D15" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=1464495731] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.343237, -5.066031, -3.1424296) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D16" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=512747242] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.506277, -5.066031, 2.9720063) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="LightLevel2" type="Node3D" parent="Lights" unique_id=1658395921] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 16.305164, 0) - -[node name="OmniLight3D" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1782738053] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5544157, -2.1126924, 27.90219) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1044065491] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.250671, -2.1126924, 23.147612) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D4" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1280223269] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.520561, -2.1126924, -9.563883) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D5" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=443076410] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.694098, -2.1126924, -20.977478) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D6" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=795711828] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2640495, -2.1126924, -28.070211) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D7" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=39883193] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.133095, -2.1126924, -28.070211) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D8" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1022700169] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.688046, -2.1126924, -23.17867) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D9" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=552912438] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.514515, -2.1126924, -14.292371) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D10" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1298855751] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.797234, -2.1126924, 8.860925) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D12" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=111834629] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.4000893, -2.1126924, 27.334354) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1375255226] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.523638, -2.1126924, 14.304096) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D13" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=18165508] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.556553, -5.066031, 2.7274294) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D14" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1731050516] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.475027, -5.066031, -2.8978524) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D15" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1704489957] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.343237, -5.066031, -3.1424296) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D16" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1994672189] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.506277, -5.066031, 2.9720063) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="LightLevel3" type="Node3D" parent="Lights" unique_id=593657748] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 24.213167, 0) - -[node name="OmniLight3D" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1849026334] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5544157, -2.1126924, 27.90219) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=691708052] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.250671, -2.1126924, 23.147612) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D4" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1166186573] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.520561, -2.1126924, -9.563883) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D5" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=2008819922] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.694098, -2.1126924, -20.977478) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D6" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=588150842] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2640495, -2.1126924, -28.070211) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D7" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1080987600] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.133095, -2.1126924, -28.070211) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D8" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=580549053] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.688046, -2.1126924, -23.17867) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D9" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=639850990] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.514515, -2.1126924, -14.292371) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D10" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=559970503] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.797234, -2.1126924, 8.860925) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D11" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1743215246] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.40009, -2.1126924, 21.334354) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D12" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=814917578] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.4000893, -2.1126924, 27.334354) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1601525784] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.523638, -2.1126924, 14.304096) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D13" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=730066980] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.556553, -5.066031, 2.7274294) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D14" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1530299322] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.475027, -5.066031, -2.8978524) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D15" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1068729638] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.343237, -5.066031, -3.1424296) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D16" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=958960524] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.506277, -5.066031, 2.9720063) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="LightLevel4" type="Node3D" parent="Lights" unique_id=142117256] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 31.95812, 0) - -[node name="OmniLight3D" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1721481718] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5544157, -2.1126924, 27.90219) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=631610076] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.250671, -2.1126924, 23.147612) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D4" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1226751360] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.520561, -2.1126924, -9.563883) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D5" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1200952030] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.694098, -2.1126924, -20.977478) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D6" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1061376340] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2640495, -2.1126924, -28.070211) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D7" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1457730086] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.133095, -2.1126924, -28.070211) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D8" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1189108084] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.688046, -2.1126924, -23.17867) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D9" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1446282714] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.514515, -2.1126924, -14.292371) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D10" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=572630565] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.797234, -2.1126924, 8.860925) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D11" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=452891791] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.40009, -2.1126924, 21.334354) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D12" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1670406469] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.4000893, -2.1126924, 27.334354) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1477089662] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.523638, -2.1126924, 14.304096) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D13" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1821591613] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.556553, -5.066031, 2.7274294) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D14" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=277413158] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.475027, -5.066031, -2.8978524) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D15" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=2012725183] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.343237, -5.066031, -3.1424296) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D16" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=59140504] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.506277, -5.066031, 2.9720063) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="LightLevel5" type="Node3D" parent="Lights" unique_id=525951054] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 40.090714, 0) - -[node name="OmniLight3D13" type="OmniLight3D" parent="Lights/LightLevel5" unique_id=2058425414] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.556553, -5.066031, 2.7274294) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D14" type="OmniLight3D" parent="Lights/LightLevel5" unique_id=1964162867] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.475027, -5.066031, -2.8978524) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D15" type="OmniLight3D" parent="Lights/LightLevel5" unique_id=1968781717] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.343237, -5.066031, -3.1424296) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="OmniLight3D16" type="OmniLight3D" parent="Lights/LightLevel5" unique_id=1720654262] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.506277, -5.066031, 2.9720063) -light_color = Color(0.810676, 0.621579, 0.6067489, 1) -light_energy = 1.5 -light_size = 0.2 -shadow_enabled = true -omni_range = 11.280827 - -[node name="LightColumnLeft" type="Node3D" parent="Lights" unique_id=366580628] - -[node name="OmniLight3D" type="OmniLight3D" parent="Lights/LightColumnLeft" unique_id=33457178] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.076054, 47.19723, 0) -light_color = Color(0.99998575, 0.29117814, 0.45017415, 1) -light_energy = 2.285 -shadow_enabled = true -omni_range = 23.647278 - -[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightColumnLeft" unique_id=1523001666] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.213203, 29.529121, 0) -light_color = Color(0.99998575, 0.29117814, 0.45017415, 1) -light_energy = 2.285 -shadow_enabled = true -omni_range = 55.975483 - -[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightColumnLeft" unique_id=1636195463] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.213203, 10.504702, 0) -light_color = Color(0.99998575, 0.29117814, 0.45017415, 1) -light_energy = 2.285 -shadow_enabled = true -omni_range = 55.975483 - -[node name="LightColumnRight" type="Node3D" parent="Lights" unique_id=736248586] -transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 0, 0, 0) - -[node name="OmniLight3D" type="OmniLight3D" parent="Lights/LightColumnRight" unique_id=291131726] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.076054, 47.19723, 0) -light_color = Color(0.99998575, 0.29117814, 0.45017415, 1) -light_energy = 2.285 -shadow_enabled = true -omni_range = 23.647278 - -[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightColumnRight" unique_id=1200961344] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.213203, 29.529121, 0) -light_color = Color(0.99998575, 0.29117814, 0.45017415, 1) -light_energy = 2.285 -shadow_enabled = true -omni_range = 55.975483 - -[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightColumnRight" unique_id=652563138] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.213203, 10.504702, 0) -light_color = Color(0.99998575, 0.29117814, 0.45017415, 1) -light_energy = 2.285 -shadow_enabled = true -omni_range = 55.975483 - -[node name="ServerRoom" type="Node3D" parent="Lights" unique_id=827961816] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.9412785, -8.026912, -119.36721) - -[node name="OmniLight3D" type="OmniLight3D" parent="Lights/ServerRoom" unique_id=1844581848] -light_color = Color(0.9334627, 0.52057, 0.67796034, 1) -shadow_enabled = true -omni_range = 26.349659 - -[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/ServerRoom" unique_id=2066101397] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 25.241997) -light_color = Color(0.9334627, 0.52057, 0.67796034, 1) -shadow_enabled = true -omni_range = 26.349659 - -[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/ServerRoom" unique_id=549929558] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 42.92135) -light_color = Color(0.9334627, 0.52057, 0.67796034, 1) -shadow_enabled = true -omni_range = 26.349659 - -[node name="OmniLight3D4" type="OmniLight3D" parent="Lights/ServerRoom" unique_id=1196915107] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 61.630135) -light_color = Color(0.9334627, 0.52057, 0.67796034, 1) -shadow_enabled = true -omni_range = 26.349659 - -[node name="SpotLight3D" type="SpotLight3D" parent="Lights/ServerRoom" unique_id=1984749666] -transform = Transform3D(1, 0, 0, 0, -0.037829712, 0.9992842, 0, -0.9992842, -0.037829712, 0, 47.72103, -28.07676) -light_color = Color(0.6902202, 0.87386894, 0.8121308, 1) -light_energy = 9.0 -shadow_enabled = true -spot_range = 95.488 -spot_attenuation = 0.4 -spot_angle = 32.1892 - -[node name="AnimationPlayer" type="AnimationPlayer" parent="Lights" unique_id=1792239301] -root_node = NodePath("../../Player3D") -libraries/ = SubResource("AnimationLibrary_c8vcx") -autoplay = &"blink" - -[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1121246225] +[sub_resource type="SphereMesh" id="SphereMesh_c8vcx"] +flip_faces = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_s7tqr"] +shading_mode = 0 +albedo_color = Color(0.5882353, 0.7019608, 0.85882354, 1) +albedo_texture = ExtResource("2_rsbui") + +[node name="BoreaBase" type="Node3D" unique_id=628999030] +script = ExtResource("1_xd71i") + +[node name="BoreaModel" parent="." unique_id=813307551 instance=ExtResource("1_dtguk")] + +[node name="OmniLight3D" type="OmniLight3D" parent="BoreaModel" unique_id=598252020] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.675, 6.416, 6) +light_color = Color(1, 0, 0.43137255, 1) +omni_range = 11.877155 + +[node name="OmniLight3D2" type="OmniLight3D" parent="BoreaModel" unique_id=1709303833] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.675, 6.416, 0) +light_color = Color(1, 0, 0.43137255, 1) +omni_range = 11.877155 + +[node name="OmniLight3D3" type="OmniLight3D" parent="BoreaModel" unique_id=1494844671] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.675, 6.416, -6) +light_color = Color(1, 0, 0.43137255, 1) +omni_range = 11.877155 + +[node name="OmniLight3D4" type="OmniLight3D" parent="BoreaModel" unique_id=1736000584] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.675, 6.416, -14) +light_color = Color(1, 0, 0.43137255, 1) +omni_range = 11.877155 + +[node name="OmniLight3D5" type="OmniLight3D" parent="BoreaModel" unique_id=2024394662] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.675, 6.416, -20) +light_color = Color(1, 0, 0.43137255, 1) +omni_range = 11.877155 + +[node name="OmniLight3D6" type="OmniLight3D" parent="BoreaModel" unique_id=1905195512] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.675, 6.416, -26) +light_color = Color(1, 0, 0.43137255, 1) +omni_range = 11.877155 + +[node name="OmniLight3D7" type="OmniLight3D" parent="BoreaModel" unique_id=446861722] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.675, 6.416, -33) +light_color = Color(1, 0, 0.43137255, 1) +omni_range = 11.877155 + +[node name="OmniLight3D8" type="OmniLight3D" parent="BoreaModel" unique_id=1408862219] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.675, 6.416, -40) +light_color = Color(1, 0, 0.43137255, 1) +omni_range = 11.877155 + +[node name="OmniLight3D9" type="OmniLight3D" parent="BoreaModel" unique_id=1333029114] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.675, 6.416, -46) +light_color = Color(1, 0, 0.43137255, 1) +omni_range = 11.877155 + +[node name="OmniLight3D10" type="OmniLight3D" parent="BoreaModel" unique_id=173828379] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.675, 6.416, -53) +light_color = Color(1, 0, 0.43137255, 1) +omni_range = 11.877155 + +[node name="OmniLight3D11" type="OmniLight3D" parent="BoreaModel" unique_id=1562142953] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.675, 6.416, -59) +light_color = Color(1, 0, 0.43137255, 1) +omni_range = 11.877155 + +[node name="OmniLight3D12" type="OmniLight3D" parent="BoreaModel" unique_id=1835990894] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.675, 6.416, -65) +light_color = Color(1, 0, 0.43137255, 1) +omni_range = 11.877155 + +[node name="Sun" type="DirectionalLight3D" parent="." unique_id=1663715456] +unique_name_in_owner = true +transform = Transform3D(0.074881114, 0.47727534, -0.87555754, 0.49699074, 0.7433423, 0.44770813, 0.864519, -0.46866894, -0.18153912, -17.663713, 19.727222, 0.5521965) +light_energy = 6.09 +shadow_enabled = true +shadow_bias = 0.0 +shadow_blur = 0.8 + +[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1295078504] environment = SubResource("Environment_fevne") -[node name="AmbianceChangeDetector" type="Area3D" parent="." unique_id=1401161313] -transform = Transform3D(0.25881904, 0, 0.96592593, 0, 1, 0, -0.96592593, 0, 0.25881904, 2.7012572, -5.600957, -42.815655) +[node name="DaySky" type="MeshInstance3D" parent="WorldEnvironment" unique_id=1175366677] +transform = Transform3D(1000, 0, 0, 0, 1000, 0, 0, 0, 1000, 0.00041627884, 0.019779027, -0.019804716) +mesh = SubResource("SphereMesh_c8vcx") +surface_material_override/0 = SubResource("StandardMaterial3D_s7tqr") -[node name="CollisionShape3D" type="CollisionShape3D" parent="AmbianceChangeDetector" unique_id=1969356725] -transform = Transform3D(0.9999994, 0, 0, 0, 1, 0, 0, 0, 0.9999994, -9.359516, 0.82910156, 2.9935746) -shape = SubResource("BoxShape3D_c8vcx") - -[node name="Player3D" parent="." unique_id=549819967 instance=ExtResource("3_c8vcx")] -unique_name_in_owner = true -transform = Transform3D(0.25881904, 0, 0.96592593, 0, 1, 0, -0.96592593, 0, 0.25881904, 29.244379, 41.40791, 8.823577) -speed = 5.0 - -[node name="Phone" parent="." unique_id=429299908 instance=ExtResource("4_fevne")] -unique_name_in_owner = true -transform = Transform3D(-0.93482566, 0, 0.35510686, 0, 1, 0, -0.35510686, 0, -0.93482566, 3.7943206, -7.5537004, -130.16013) - -[node name="borea_base" parent="." unique_id=1161090043 instance=ExtResource("4_s7tqr")] - -[node name="Credits" parent="." unique_id=180964898 instance=ExtResource("6_c8vcx")] -unique_name_in_owner = true - -[node name="TrailerCamera" type="Camera3D" parent="." unique_id=649852434] -unique_name_in_owner = true -transform = Transform3D(1, 0, 0, 0, -4.3711392e-08, 1, 0, -1, -4.3711392e-08, 0, 60.366375, 0) -near = 0.003 - -[node name="AnimationPlayer" type="AnimationPlayer" parent="TrailerCamera" unique_id=1238675722] -root_node = NodePath("../..") -libraries/ = SubResource("AnimationLibrary_hlox4") -autoplay = &"trailer" - -[node name="MeshInstance3D" type="MeshInstance3D" parent="TrailerCamera" unique_id=1018268636] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.263265e-08, 0, -0.7177747) -mesh = SubResource("QuadMesh_2ei4e") -surface_material_override/0 = ExtResource("7_s7tqr") - -[connection signal="body_entered" from="AmbianceChangeDetector" to="." method="_on_ambiance_change_detector_body_entered"] +[node name="Player3D" parent="." unique_id=549819967 instance=ExtResource("3_xd71i")] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -0.3753642, 1.9798207, 8.947678) diff --git a/stages/3d_scenes/borea_base/scripts/borea_base.gd b/stages/3d_scenes/borea_base/scripts/borea_base.gd index a16cfb2..dcf0165 100644 --- a/stages/3d_scenes/borea_base/scripts/borea_base.gd +++ b/stages/3d_scenes/borea_base/scripts/borea_base.gd @@ -1,22 +1,10 @@ extends Node3D -const OUTRO_TIMELINE_PATH = "res://dialogs/timelines/tutorial/demeter_outro.dtl" - -# Called when the node enters the scene tree for the first time. func _ready(): - %Credits.hide() - Input.mouse_mode = Input.MOUSE_MODE_CAPTURED + if not Engine.is_editor_hint(): + Input.mouse_mode = Input.MOUSE_MODE_CAPTURED - await %Phone.clicked - Dialogic.start(OUTRO_TIMELINE_PATH) - await Dialogic.timeline_ended - Input.mouse_mode = Input.MOUSE_MODE_VISIBLE - %Credits.show() - AudioManager.play_music("Demo_end", false, 5.0) - AudioManager.stop_all_ambiances() - -func _on_ambiance_change_detector_body_entered(body: Node3D): - if body is Player3D: - AudioManager.stop_all_ambiances() - AudioManager.play_music("Demo_end", false, 5.0) +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + pass diff --git a/stages/3d_scenes/borea_base/scripts/borea_base.gd.uid b/stages/3d_scenes/borea_base/scripts/borea_base.gd.uid index 8b1d559..73cf6af 100644 --- a/stages/3d_scenes/borea_base/scripts/borea_base.gd.uid +++ b/stages/3d_scenes/borea_base/scripts/borea_base.gd.uid @@ -1 +1 @@ -uid://btc447j47jbx0 +uid://c37uqdnr2himm diff --git a/stages/3d_scenes/cave/3d/cave.blend b/stages/3d_scenes/cave/3d/cave.blend new file mode 100644 index 0000000..416a3b2 Binary files /dev/null and b/stages/3d_scenes/cave/3d/cave.blend differ diff --git a/stages/3d_scenes/cave/3d/cave.blend.import b/stages/3d_scenes/cave/3d/cave.blend.import new file mode 100644 index 0000000..54417e8 --- /dev/null +++ b/stages/3d_scenes/cave/3d/cave.blend.import @@ -0,0 +1,88 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://5uvl5axgq3sc" +path="res://.godot/imported/cave.blend-82b768166e23ecf41c7d4afccb695695.scn" + +[deps] + +source_file="res://stages/3d_scenes/cave/3d/cave.blend" +dest_files=["res://.godot/imported/cave.blend-82b768166e23ecf41c7d4afccb695695.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={ +"materials": { +"Cristal": { +"use_external/enabled": true, +"use_external/fallback_path": "res://common/assets/materials/cristal.tres", +"use_external/path": "uid://di0m3uqgi3l08" +}, +"Default3D": { +"use_external/enabled": true, +"use_external/fallback_path": "res://common/assets/materials/default_3d.tres", +"use_external/path": "uid://dvvi1k5c5iowc" +}, +"GlassMaterial": { +"use_external/enabled": true, +"use_external/fallback_path": "res://common/assets/materials/glass_3d.tres", +"use_external/path": "uid://b5vlcdry8vtgi" +}, +"Material": { +"use_external/enabled": true, +"use_external/fallback_path": "res://common/assets/materials/default_3d.tres", +"use_external/path": "uid://dvvi1k5c5iowc" +}, +"Material.001": { +"use_external/enabled": true, +"use_external/fallback_path": "res://common/assets/materials/default_3d.tres", +"use_external/path": "uid://dvvi1k5c5iowc" +} +} +} +blender/nodes/visible=0 +blender/nodes/active_collection_only=false +blender/nodes/punctual_lights=true +blender/nodes/cameras=true +blender/nodes/custom_properties=true +blender/nodes/modifiers=1 +blender/meshes/colors=false +blender/meshes/uvs=true +blender/meshes/normals=true +blender/meshes/export_geometry_nodes_instances=false +blender/meshes/gpu_instances=false +blender/meshes/tangents=true +blender/meshes/skins=2 +blender/meshes/export_bones_deforming_mesh_only=false +blender/materials/unpack_enabled=true +blender/materials/export_materials=1 +blender/animation/limit_playback=true +blender/animation/always_sample=true +blender/animation/group_tracks=true +gltf/naming_version=2 diff --git a/stages/3d_scenes/cave/3d/cave.blend1 b/stages/3d_scenes/cave/3d/cave.blend1 new file mode 100644 index 0000000..b261ada Binary files /dev/null and b/stages/3d_scenes/cave/3d/cave.blend1 differ diff --git a/stages/3d_scenes/cave/cave.tscn b/stages/3d_scenes/cave/cave.tscn new file mode 100644 index 0000000..d1cb49c --- /dev/null +++ b/stages/3d_scenes/cave/cave.tscn @@ -0,0 +1,146 @@ +[gd_scene format=3 uid="uid://d0fr68xaapsq7"] + +[ext_resource type="Script" uid="uid://bj4d1x8n8ina" path="res://entities/interactable_3d/interactable_3d.gd" id="1_w6igl"] +[ext_resource type="Script" uid="uid://mn05jq4ekx62" path="res://stages/3d_scenes/cave/scripts/cave.gd" id="1_xlbt6"] +[ext_resource type="PackedScene" uid="uid://5uvl5axgq3sc" path="res://stages/3d_scenes/cave/3d/cave.blend" id="2_xlbt6"] +[ext_resource type="PackedScene" uid="uid://da7a74dg30q1l" path="res://entities/player_3d/player_3D.tscn" id="3_663fy"] +[ext_resource type="PackedScene" uid="uid://8rorj31s3irn" path="res://entities/interactable_3d/cristal/cristal.tscn" id="4_663fy"] +[ext_resource type="Texture2D" uid="uid://dex283rx00fjb" path="res://common/icons/logout.svg" id="6_rdddd"] + +[sub_resource type="Environment" id="Environment_x7awc"] +background_mode = 2 +sky_custom_fov = 61.7 +ambient_light_source = 3 +ambient_light_color = Color(1, 1, 1, 1) +ambient_light_sky_contribution = 0.18 +ambient_light_energy = 2.62 +reflected_light_source = 2 +tonemap_mode = 2 +tonemap_exposure = 0.7 +tonemap_white = 1.84 +glow_enabled = true +glow_intensity = 0.22 +glow_bloom = 0.22 +glow_hdr_threshold = 0.79 +glow_hdr_scale = 0.0 +glow_hdr_luminance_cap = 5.63 +fog_mode = 1 +fog_light_color = Color(0.13725491, 0.39215687, 0.6666667, 1) +fog_light_energy = 1.48 +fog_density = 0.0231 +fog_aerial_perspective = 0.113 +fog_sky_affect = 0.0 +volumetric_fog_sky_affect = 0.0 +adjustment_enabled = true +adjustment_saturation = 1.3 + +[sub_resource type="Animation" id="Animation_pxmsf"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite3D:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0.99999994, 1, 0.99999994)] +} + +[sub_resource type="Animation" id="Animation_u7lr8"] +resource_name = "hover" +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite3D:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.46666667, 1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0.99999994, 1, 0.99999994), Vector3(1.2, 1.2, 1.2), Vector3(0.99999994, 1, 0.99999994)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_mmomx"] +_data = { +&"RESET": SubResource("Animation_pxmsf"), +&"hover": SubResource("Animation_u7lr8") +} + +[sub_resource type="BoxShape3D" id="BoxShape3D_6rmeu"] +size = Vector3(2.2807465, 0.83758545, 2.7016602) + +[node name="Cave" type="Node3D" unique_id=122920060] +script = ExtResource("1_xlbt6") + +[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1672352734] +environment = SubResource("Environment_x7awc") + +[node name="Lights" type="Node3D" parent="." unique_id=1491734303] + +[node name="OmniLight3D" type="OmniLight3D" parent="Lights" unique_id=2015091523] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.124447, 2.974639, 1.201046) +omni_range = 16.327286 + +[node name="CaveModel" parent="." unique_id=532031355 instance=ExtResource("2_xlbt6")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.573945, 0, 1.5022337) + +[node name="OmniLight3D" type="OmniLight3D" parent="CaveModel" unique_id=2145888223] +transform = Transform3D(0.99998826, 0, 0.0048519964, 0, 1, 0, -0.0048519964, 0, 0.99998826, -188.65979, -23.91176, -55.256798) +light_color = Color(1, 0.6509804, 0.09019608, 1) +light_energy = 7.209 +shadow_enabled = true +omni_range = 191.9335 + +[node name="OmniLight3D2" type="OmniLight3D" parent="CaveModel" unique_id=262552402] +transform = Transform3D(0.99998826, 0, 0.0048519964, 0, 1, 0, -0.0048519964, 0, 0.99998826, -193.10031, 1.3168697, 78.69277) +light_color = Color(1, 0.6509804, 0.09019608, 1) +light_energy = 7.209 +shadow_enabled = true +omni_range = 191.9335 + +[node name="OmniLight3D3" type="OmniLight3D" parent="CaveModel" unique_id=882541987] +transform = Transform3D(0.99998826, 0, 0.0048519964, 0, 1, 0, -0.0048519964, 0, 0.99998826, -429.2623, -7.898775, 57.456047) +light_color = Color(1, 0.6509804, 0.09019608, 1) +light_energy = 7.209 +shadow_enabled = true +omni_range = 191.9335 + +[node name="OmniLight3D4" type="OmniLight3D" parent="CaveModel" unique_id=477937802] +transform = Transform3D(0.99998826, 0, 0.0048519964, 0, 1, 0, -0.0048519964, 0, 0.99998826, -331.67422, 8.754509, -34.622234) +light_color = Color(1, 0.6509804, 0.09019608, 1) +light_energy = 7.209 +shadow_enabled = true +omni_range = 191.9335 + +[node name="Cristal" parent="." unique_id=1403604311 instance=ExtResource("4_663fy")] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.3711878, -0.010157108, 1.5553656) + +[node name="Exit" type="Area3D" parent="." unique_id=1854281092 node_paths=PackedStringArray("hover_animation_player")] +unique_name_in_owner = true +transform = Transform3D(4.371139e-08, -1, -8.742278e-08, -1, -4.371139e-08, 0, -3.821371e-15, 8.742278e-08, -1, 9.429194, 1.3403461, 1.9387968) +script = ExtResource("1_w6igl") +hover_animation_player = NodePath("HoverAnimationPlayer") +metadata/_custom_type_script = "uid://bj4d1x8n8ina" + +[node name="Sprite3D" type="Sprite3D" parent="Exit" unique_id=880911016] +transform = Transform3D(-4.3711385e-08, -1, -4.3711385e-08, 0, -4.371139e-08, 0.99999994, -0.99999994, 4.371139e-08, 1.9106853e-15, 0.1646713, -0.017980576, 0) +pixel_size = 0.005 +texture = ExtResource("6_rdddd") + +[node name="HoverAnimationPlayer" type="AnimationPlayer" parent="Exit" unique_id=1644992802] +libraries/ = SubResource("AnimationLibrary_mmomx") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Exit" unique_id=1639583333] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.14810944, -0.081207275, 0.35961914) +shape = SubResource("BoxShape3D_6rmeu") + +[node name="Player3D" parent="." unique_id=549819967 instance=ExtResource("3_663fy")] +transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 8.010997, 1.1516566, 1.5996395) + +[connection signal="clicked" from="Exit" to="." method="_on_exit_clicked"] diff --git a/stages/3d_scenes/cave/scripts/cave.gd b/stages/3d_scenes/cave/scripts/cave.gd new file mode 100644 index 0000000..3ebf20d --- /dev/null +++ b/stages/3d_scenes/cave/scripts/cave.gd @@ -0,0 +1,21 @@ +extends Node3D +class_name Cave + +func _ready(): + if not Engine.is_editor_hint(): + Input.mouse_mode = Input.MOUSE_MODE_CAPTURED + +func setup_room(door_id : int): + var rng := RandomNumberGenerator.new() + rng.seed = door_id + + %Cristal.rotate_y(rng.randf_range(-PI,PI)) + + %Cristal.broken.connect( + func (): + GameInfo.game_data.current_region_data.completed_doors.append(door_id) + ); + + +func _on_exit_clicked(): + SceneManager.change_to_scene(RegionScene.new(GameInfo.game_data.current_region_data)) diff --git a/stages/3d_scenes/cave/scripts/cave.gd.uid b/stages/3d_scenes/cave/scripts/cave.gd.uid new file mode 100644 index 0000000..a104aa4 --- /dev/null +++ b/stages/3d_scenes/cave/scripts/cave.gd.uid @@ -0,0 +1 @@ +uid://mn05jq4ekx62 diff --git a/stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend b/stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend index 28b56b9..b727fbf 100644 Binary files a/stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend and b/stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend differ diff --git a/stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend1 b/stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend1 index 5c250b3..269cd8d 100644 Binary files a/stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend1 and b/stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend1 differ diff --git a/stages/3d_scenes/cockpit_scene/assets/3d/windshield.blend b/stages/3d_scenes/cockpit_scene/assets/3d/windshield.blend new file mode 100644 index 0000000..f441c7d Binary files /dev/null and b/stages/3d_scenes/cockpit_scene/assets/3d/windshield.blend differ diff --git a/stages/3d_scenes/cockpit_scene/assets/3d/windshield.blend.import b/stages/3d_scenes/cockpit_scene/assets/3d/windshield.blend.import new file mode 100644 index 0000000..9ef9dc9 --- /dev/null +++ b/stages/3d_scenes/cockpit_scene/assets/3d/windshield.blend.import @@ -0,0 +1,60 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://jj7k5r4b1xme" +path="res://.godot/imported/windshield.blend-40cb486363267d9c774e89c6eeb0dbdf.scn" + +[deps] + +source_file="res://stages/3d_scenes/cockpit_scene/assets/3d/windshield.blend" +dest_files=["res://.godot/imported/windshield.blend-40cb486363267d9c774e89c6eeb0dbdf.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +blender/nodes/visible=0 +blender/nodes/active_collection_only=false +blender/nodes/punctual_lights=true +blender/nodes/cameras=true +blender/nodes/custom_properties=true +blender/nodes/modifiers=1 +blender/meshes/colors=false +blender/meshes/uvs=true +blender/meshes/normals=true +blender/meshes/export_geometry_nodes_instances=false +blender/meshes/gpu_instances=false +blender/meshes/tangents=true +blender/meshes/skins=2 +blender/meshes/export_bones_deforming_mesh_only=false +blender/materials/unpack_enabled=true +blender/materials/export_materials=1 +blender/animation/limit_playback=true +blender/animation/always_sample=true +blender/animation/group_tracks=true +gltf/naming_version=2 diff --git a/stages/3d_scenes/cockpit_scene/assets/3d/windshield.blend1 b/stages/3d_scenes/cockpit_scene/assets/3d/windshield.blend1 new file mode 100644 index 0000000..df4dbf7 Binary files /dev/null and b/stages/3d_scenes/cockpit_scene/assets/3d/windshield.blend1 differ diff --git a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/dashboard_screenshot.png similarity index 100% rename from stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png rename to stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/dashboard_screenshot.png diff --git a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png.import b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/dashboard_screenshot.png.import similarity index 73% rename from stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png.import rename to stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/dashboard_screenshot.png.import index 4ac6faf..c98636d 100644 --- a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png.import +++ b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/dashboard_screenshot.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://7lw40nfj4lhl" -path="res://.godot/imported/Capture d'écran 2026-04-17 112838.png-64ef83d52ce9df1c5c41e85939ab8a4a.ctex" +path="res://.godot/imported/dashboard_screenshot.png-497ed6906da9bb4e00209ea265f64ca1.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png" -dest_files=["res://.godot/imported/Capture d'écran 2026-04-17 112838.png-64ef83d52ce9df1c5c41e85939ab8a4a.ctex"] +source_file="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/dashboard_screenshot.png" +dest_files=["res://.godot/imported/dashboard_screenshot.png-497ed6906da9bb4e00209ea265f64ca1.ctex"] [params] diff --git a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/empty_inventory_screenshot.png b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/empty_inventory_screenshot.png new file mode 100644 index 0000000..38b69e7 Binary files /dev/null and b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/empty_inventory_screenshot.png differ diff --git a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/empty_inventory_screenshot.png.import b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/empty_inventory_screenshot.png.import new file mode 100644 index 0000000..7c77899 --- /dev/null +++ b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/empty_inventory_screenshot.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cc1lk4ei4flxs" +path="res://.godot/imported/empty_inventory_screenshot.png-139ea0dba0426e0f0c8ad7743c9059ac.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/empty_inventory_screenshot.png" +dest_files=["res://.godot/imported/empty_inventory_screenshot.png-139ea0dba0426e0f0c8ad7743c9059ac.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 diff --git a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/objective_screenshot.png similarity index 100% rename from stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png rename to stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/objective_screenshot.png diff --git a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png.import b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/objective_screenshot.png.import similarity index 73% rename from stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png.import rename to stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/objective_screenshot.png.import index d12279f..fa00947 100644 --- a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png.import +++ b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/objective_screenshot.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://d17ru4hw8okj1" -path="res://.godot/imported/Capture d'écran 2026-04-17 113002.png-0eb5866e63755f5d73921a67745288a0.ctex" +path="res://.godot/imported/objective_screenshot.png-b92431e401836a099382d2c5069658a3.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png" -dest_files=["res://.godot/imported/Capture d'écran 2026-04-17 113002.png-0eb5866e63755f5d73921a67745288a0.ctex"] +source_file="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/objective_screenshot.png" +dest_files=["res://.godot/imported/objective_screenshot.png-b92431e401836a099382d2c5069658a3.ctex"] [params] diff --git a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/orchid_saver_screenshot.png b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/orchid_saver_screenshot.png new file mode 100644 index 0000000..03f5053 Binary files /dev/null and b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/orchid_saver_screenshot.png differ diff --git a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/orchid_saver_screenshot.png.import b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/orchid_saver_screenshot.png.import new file mode 100644 index 0000000..8b815e4 --- /dev/null +++ b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/orchid_saver_screenshot.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0x6r3010hvul" +path="res://.godot/imported/orchid_saver_screenshot.png-9e2871da6a274f9384dfce696db1bb4d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/orchid_saver_screenshot.png" +dest_files=["res://.godot/imported/orchid_saver_screenshot.png-9e2871da6a274f9384dfce696db1bb4d.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 diff --git a/stages/3d_scenes/cockpit_scene/cockpit.tscn b/stages/3d_scenes/cockpit_scene/cockpit.tscn index 2b3af15..cdbe31d 100644 --- a/stages/3d_scenes/cockpit_scene/cockpit.tscn +++ b/stages/3d_scenes/cockpit_scene/cockpit.tscn @@ -5,7 +5,6 @@ [ext_resource type="PackedScene" uid="uid://csx7d5khjd6y5" path="res://entities/interactable_3d/phone/phone.tscn" id="3_3b5pk"] [ext_resource type="Texture2D" uid="uid://dex283rx00fjb" path="res://common/icons/logout.svg" id="3_w4l7d"] [ext_resource type="PackedScene" uid="uid://by45bbbnf0k13" path="res://gui/game/objective_progress_bar/gauge_3d.tscn" id="4_ers7b"] -[ext_resource type="PackedScene" uid="uid://d01cp8xl0rme4" path="res://gui/game/energy_info/energy_info_3d.tscn" id="6_ogqwl"] [ext_resource type="PackedScene" uid="uid://jjkw4edrewsk" path="res://stages/3d_scenes/cockpit_scene/assets/3d/furnitures/closet.blend" id="7_lnpag"] [ext_resource type="PackedScene" uid="uid://cv0ehgy3d1kmj" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/dashboard.tscn" id="8_seqvk"] [ext_resource type="PackedScene" uid="uid://cgw2ct7smispo" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/shelf.tscn" id="11_w4l7d"] @@ -14,6 +13,7 @@ [ext_resource type="PackedScene" uid="uid://cd8j7v7qtybi8" path="res://stages/3d_scenes/cockpit_scene/ship_tutorial.tscn" id="13_u7lr8"] [ext_resource type="Material" uid="uid://cr7bp4fhh1ipr" path="res://entities/player_3d/resources/materials/post_process_quad.tres" id="14_d1blr"] [ext_resource type="PackedScene" uid="uid://ci4x1q326lvyy" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/mutation_discovered_screen/mutation_discovery_screen.tscn" id="15_q4ojn"] +[ext_resource type="PackedScene" uid="uid://cn2hob1i72a25" path="res://stages/3d_scenes/cockpit_scene/fail_tutorial.tscn" id="15_wrlf0"] [ext_resource type="PackedScene" uid="uid://u3o5g8lmck74" path="res://entities/interactable_3d/orchid_saver/orchid_saver.tscn" id="16_nfjul"] [ext_resource type="Texture2D" uid="uid://d3k7rl7nbp7yx" path="res://common/icons/device-floppy.svg" id="17_ggekp"] [ext_resource type="PackedScene" uid="uid://blvetnnib2ks0" path="res://stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend" id="17_omtjc"] @@ -121,9 +121,9 @@ shape = SubResource("BoxShape3D_ctvhk") [node name="Player3D" parent="." unique_id=549819967 instance=ExtResource("13_a2cx2")] unique_name_in_owner = true -transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 0, 0, 3.2830403) +transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -0.00043085217, 0, 3.283195) -[node name="CockpitModel" parent="." unique_id=825141342 instance=ExtResource("17_omtjc")] +[node name="CockpitModel" parent="." unique_id=1122480479 instance=ExtResource("17_omtjc")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.04904175e-05, 0.0026242882, 4.4822693e-05) [node name="Phone" parent="." unique_id=429299908 instance=ExtResource("3_3b5pk")] @@ -133,14 +133,9 @@ interactable = false [node name="Gauge3D" parent="." unique_id=232507348 instance=ExtResource("4_ers7b")] unique_name_in_owner = true -transform = Transform3D(-0.070710674, 0.07071066, -4.864633e-09, 8.7422745e-09, 2.199196e-30, -0.09999998, -0.070710674, -0.07071066, -7.4988105e-09, 0.9122916, -0.51005816, 5.5039926) +transform = Transform3D(-0.070710674, 0.07071066, -4.864633e-09, 8.7422745e-09, 2.199196e-30, -0.09999998, -0.070710674, -0.07071066, -7.4988105e-09, 1.1546884, -0.51005816, 5.135547) progress = 1.085 -[node name="EnergyInfo3d" parent="." unique_id=1798644168 instance=ExtResource("6_ogqwl")] -unique_name_in_owner = true -transform = Transform3D(0.23, 0, 0, 0, 0.23, 0, 0, 0, 0.23, -1.2449384, -0.8972735, 5.2538967) -max_energy = 3 - [node name="Furnitures" type="Node3D" parent="." unique_id=1095424400] [node name="ClosetR" parent="Furnitures" unique_id=1358386607 instance=ExtResource("7_lnpag")] @@ -151,7 +146,7 @@ transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 1.13 [node name="Dashboard" parent="." unique_id=1374334508 instance=ExtResource("8_seqvk")] unique_name_in_owner = true -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.035136223, -0.7094687, 6.45286) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.035136223, -0.7094687, 6.1824927) [node name="Shelf" parent="." unique_id=1769159984 instance=ExtResource("11_w4l7d")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.1218804, -1.0799314, 2.6211417) @@ -162,9 +157,15 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.239, 0, 4.02) [node name="MutationDiscoveryScreen" parent="." unique_id=1948337200 instance=ExtResource("15_q4ojn")] transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 1.1896521, 0.015508115, 3.982) +mutations_unlocked = 0 -[node name="ShipTutorial" parent="." unique_id=868547496 instance=ExtResource("13_u7lr8")] +[node name="ShipTutorial" parent="." unique_id=868547496 node_paths=PackedStringArray("player") instance=ExtResource("13_u7lr8")] unique_name_in_owner = true +player = NodePath("../Player3D") + +[node name="FailTutorial" parent="." unique_id=190805806 node_paths=PackedStringArray("player") instance=ExtResource("15_wrlf0")] +unique_name_in_owner = true +player = NodePath("../Player3D") [node name="TrailerCamera" type="Camera3D" parent="." unique_id=297848285] unique_name_in_owner = true diff --git a/stages/3d_scenes/cockpit_scene/cockpit_elements/dashboard.tscn b/stages/3d_scenes/cockpit_scene/cockpit_elements/dashboard.tscn index 71950da..4ba31fe 100644 --- a/stages/3d_scenes/cockpit_scene/cockpit_elements/dashboard.tscn +++ b/stages/3d_scenes/cockpit_scene/cockpit_elements/dashboard.tscn @@ -1,8 +1,8 @@ [gd_scene format=3 uid="uid://cv0ehgy3d1kmj"] [ext_resource type="Script" uid="uid://fet6urfgiiwr" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/dashboard.gd" id="1_vks67"] +[ext_resource type="PackedScene" uid="uid://cnx1xwc4uupmc" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/topology_content.tscn" id="2_lskho"] [ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="3_g7q16"] -[ext_resource type="PackedScene" uid="uid://cs5gir1u8jbrg" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/holo_content.tscn" id="3_go2gd"] [ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="4_7u0n5"] [ext_resource type="Script" uid="uid://biqgucg78cx44" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/dashboard_main_screen.gd" id="4_vks67"] [ext_resource type="Script" uid="uid://ccb06rayqowp3" path="res://stages/terrain/region/scripts/modifiers/region_modifier.gd" id="5_7u0n5"] @@ -16,9 +16,29 @@ [ext_resource type="PackedScene" uid="uid://crbjmwumboelw" path="res://gui/game/inventory_gui/inventory_3d.tscn" id="10_y1ysr"] [ext_resource type="Script" uid="uid://bq7admu4ahs5r" path="res://entities/player/inventory/scripts/item.gd" id="11_3cel1"] [ext_resource type="Script" uid="uid://fnu2d6wna4yc" path="res://entities/player/inventory/scripts/inventory.gd" id="12_oix5e"] +[ext_resource type="PackedScene" uid="uid://dj4u5grx00ky1" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/travel_screen_content.tscn" id="17_emtfq"] +[ext_resource type="PackedScene" uid="uid://d01cp8xl0rme4" path="res://gui/game/energy_info/energy_info_3d.tscn" id="17_lskho"] -[sub_resource type="ViewportTexture" id="ViewportTexture_cvt2p"] -viewport_path = NodePath("Holo/SubViewport") +[sub_resource type="ViewportTexture" id="ViewportTexture_v1m0r"] +viewport_path = NodePath("Background/SubViewport") + +[sub_resource type="Gradient" id="Gradient_psxhb"] +interpolation_mode = 1 +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_y1ysr"] +gradient = SubResource("Gradient_psxhb") +width = 400 +height = 400 +fill = 1 +fill_from = Vector2(0.5, 0.5) +fill_to = Vector2(1, 0.5) + +[sub_resource type="ViewportTexture" id="ViewportTexture_psxhb"] +viewport_path = NodePath("Topology/SubViewport") + +[sub_resource type="ViewportTexture" id="ViewportTexture_lskho"] +viewport_path = NodePath("TravelScreen/SubViewport") [sub_resource type="ViewportTexture" id="ViewportTexture_5d7hc"] viewport_path = NodePath("StatusScreen/SubViewport") @@ -179,33 +199,48 @@ metadata/_custom_type_script = "uid://fnu2d6wna4yc" [node name="Dashboard" type="Node3D" unique_id=1374334508] script = ExtResource("1_vks67") -destination_title = "TO_BOREA_BASE" -[node name="Holo" type="Sprite3D" parent="." unique_id=1067303692] -unique_name_in_owner = true -transform = Transform3D(-1, 0, -8.742278e-08, 0, 1.0000002, 0, 8.742278e-08, 0, -1, 0, 0.91157264, 0.33655214) +[node name="Background" type="Sprite3D" parent="." unique_id=747271324] +transform = Transform3D(-1, 0, 8.742278e-08, 5.2901907e-08, 0.79612875, 0.6051273, -6.9599785e-08, 0.6051273, -0.79612875, 0, 0.85765254, 1.1502768) pixel_size = 0.004 -texture = SubResource("ViewportTexture_cvt2p") +texture = SubResource("ViewportTexture_v1m0r") -[node name="SubViewport" type="SubViewport" parent="Holo" unique_id=471832787] +[node name="SubViewport" type="SubViewport" parent="Background" unique_id=1285367140] disable_3d = true transparent_bg = true -size = Vector2i(365, 68) +size = Vector2i(500, 500) -[node name="HoloContent" parent="Holo/SubViewport" unique_id=668915500 instance=ExtResource("3_go2gd")] +[node name="Circle" type="Sprite2D" parent="Background/SubViewport" unique_id=204541212] +modulate = Color(0.0627451, 0.05882353, 0.16862746, 1) +position = Vector2(250, 250) +texture = SubResource("GradientTexture2D_y1ysr") + +[node name="Topology" type="Sprite3D" parent="." unique_id=555628624] +transform = Transform3D(-1, 0, 8.742278e-08, 5.2901907e-08, 0.79612875, 0.6051273, -6.9599785e-08, 0.6051273, -0.79612875, 0, 0.8662406, 1.012941) +pixel_size = 0.004 +texture = SubResource("ViewportTexture_psxhb") + +[node name="SubViewport" type="SubViewport" parent="Topology" unique_id=610507336] +disable_3d = true +transparent_bg = true +size = Vector2i(500, 500) + +[node name="TopologyContent" parent="Topology/SubViewport" unique_id=1478734478 instance=ExtResource("2_lskho")] unique_name_in_owner = true -anchors_preset = 8 -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -offset_left = -162.0 -offset_top = -28.0 -offset_right = 162.0 -offset_bottom = 28.0 -grow_horizontal = 2 -grow_vertical = 2 -stop_name = "" + +[node name="TravelScreen" type="Sprite3D" parent="." unique_id=1605384571] +transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 0, 0.7866177, 0.5924386) +pixel_size = 0.002 +texture = SubResource("ViewportTexture_lskho") + +[node name="SubViewport" type="SubViewport" parent="TravelScreen" unique_id=1413693044] +disable_3d = true +transparent_bg = true +size = Vector2i(1000, 512) + +[node name="TravelScreenContent" parent="TravelScreen/SubViewport" unique_id=1386845472 instance=ExtResource("17_emtfq")] +unique_name_in_owner = true +current_position = 4.0 [node name="StatusScreen" type="Sprite3D" parent="." unique_id=1257606535] unique_name_in_owner = true @@ -246,7 +281,6 @@ icon = NodePath("MainScreenSprite/SubViewport/VBoxContainer/MainScreenIcon") label = NodePath("MainScreenSprite/SubViewport/VBoxContainer/MainScreenLabel") run_point = SubResource("Resource_psxhb") interactable = false -inspectable = true hover_animation_player = NodePath("HoverAnimationPlayer") metadata/_custom_type_script = "uid://bj4d1x8n8ina" @@ -410,6 +444,13 @@ libraries/ = SubResource("AnimationLibrary_cvt2p") [node name="Inventory3D" parent="." unique_id=810532522 instance=ExtResource("10_y1ysr")] unique_name_in_owner = true -transform = Transform3D(1, 0, 8.940697e-08, 0, 1, 0, -8.940697e-08, 0, 1, 0, 0.5876103, 0.89364576) +transform = Transform3D(0.42250758, 0, -0.90635943, 0, 1, 0, 0.90635943, 0, 0.42250758, -1.1253021, 0.4732105, -0.4411707) no_tools = true test_inventory = SubResource("Resource_ne0dp") + +[node name="EnergyInfo3d" parent="." unique_id=1798644168 instance=ExtResource("17_lskho")] +unique_name_in_owner = true +transform = Transform3D(-0.12115031, 0, 0.047144443, 0, 0.12999998, 0, -0.047144443, 0, -0.12115031, 1.1126381, 0.41387832, -0.35765195) +max_energy = 3 + +[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=316569967] diff --git a/stages/3d_scenes/cockpit_scene/cockpit_elements/mutation_discovered_screen/mutation_discovery_screen.tscn b/stages/3d_scenes/cockpit_scene/cockpit_elements/mutation_discovered_screen/mutation_discovery_screen.tscn index dd9c9b0..b675f51 100644 --- a/stages/3d_scenes/cockpit_scene/cockpit_elements/mutation_discovered_screen/mutation_discovery_screen.tscn +++ b/stages/3d_scenes/cockpit_scene/cockpit_elements/mutation_discovered_screen/mutation_discovery_screen.tscn @@ -34,6 +34,7 @@ font_size = 8 [node name="MutationDiscoveryScreen" type="Node3D" unique_id=1881622243] script = ExtResource("1_cfhhl") all_mutations = Array[ExtResource("2_dv1aj")]([SubResource("Resource_dv1aj"), SubResource("Resource_3q2hk"), SubResource("Resource_psve5"), null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null]) +mutations_unlocked = null [node name="Sprite3D" type="Sprite3D" parent="." unique_id=1624784968] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -0.011004657, 0, 0) diff --git a/stages/3d_scenes/cockpit_scene/cockpit_elements/mutation_discovered_screen/scripts/mutation_discovery_screen.gd b/stages/3d_scenes/cockpit_scene/cockpit_elements/mutation_discovered_screen/scripts/mutation_discovery_screen.gd index fdb0526..a847218 100644 --- a/stages/3d_scenes/cockpit_scene/cockpit_elements/mutation_discovered_screen/scripts/mutation_discovery_screen.gd +++ b/stages/3d_scenes/cockpit_scene/cockpit_elements/mutation_discovered_screen/scripts/mutation_discovery_screen.gd @@ -4,7 +4,7 @@ extends Node3D const MUTATION_DISCOVERY_ELEMENT_SCENE = preload("res://stages/3d_scenes/cockpit_scene/cockpit_elements/mutation_discovered_screen/mutation_discovery_element.tscn") @export var all_mutations : Array[PlantMutation] -@export var available_mutations : Array[PlantMutation] +@export var mutations_unlocked : int @export var planted_mutation_ids : Array[String] @export_tool_button("Update", "Callable") var update_action = update @@ -13,7 +13,7 @@ const MUTATION_DISCOVERY_ELEMENT_SCENE = preload("res://stages/3d_scenes/cockpit func _ready(): if not Engine.is_editor_hint(): all_mutations = GameInfo.game_data.progression_data.all_mutations - available_mutations = GameInfo.game_data.progression_data.available_mutations + mutations_unlocked = GameInfo.game_data.progression_data.mutations_unlocked planted_mutation_ids = GameInfo.game_data.progression_data.planted_mutation_ids update() @@ -23,8 +23,8 @@ func update(): c.queue_free() for i in range(len(all_mutations)): var el : MutationDiscoveryElement = MUTATION_DISCOVERY_ELEMENT_SCENE.instantiate() as MutationDiscoveryElement - if i < len(available_mutations): - el.mutation = available_mutations[i] + if i < mutations_unlocked: + el.mutation = all_mutations[i] if el.mutation.get_mutation_id() in planted_mutation_ids: el.state = MutationDiscoveryElement.State.DISCOVERED else : diff --git a/stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/dashboard.gd b/stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/dashboard.gd index 0dc57cb..c94136f 100644 --- a/stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/dashboard.gd +++ b/stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/dashboard.gd @@ -2,25 +2,18 @@ extends Node3D class_name Dashboard -const PLANET_3D_HOLO_RADIUS = 1.3 -const PLANET_3D_HOLO_ARROW_SIZE = 0.3 -const LAND_ICON = preload("res://common/icons/arrow-narrow-down.svg") -const GROWTH_ICON = preload("res://common/icons/growth.svg") -const CHARGE_ICON = preload("res://common/icons/bolt.svg") +const TOPOLOGY_SPEED = 5000. signal main_screen_activated signal right_screen_activated signal left_screen_activated +@export var run_data : RunData +@export var in_space : bool + @export var main_screen_state : DashboardMainScreen.State : set = set_main_screen_state @export var main_screen_run_point : RunPoint : set = set_main_screen_run_point - -@export var stop_name : String : set = set_stop_label -@export var stop_title : String : set = set_stop_title_label -@export var destination_distance : int -@export var destination_title : String : set = set_destination_title - @export var status_text : String : set = set_status_text @export var left_stop : RunPoint = null : set = set_left_stop @@ -31,25 +24,35 @@ func _ready(): %RightScreen.clicked.connect(func(): right_screen_activated.emit()) %LeftScreen.clicked.connect(func(): left_screen_activated.emit()) - set_main_screen_state() set_main_screen_run_point() - set_stop_label() - set_stop_title_label() - set_destination_title() set_status_text() set_left_stop() set_right_stop() - %HoloContent.distance = destination_distance if not Engine.is_editor_hint() and GameInfo.game_data.player_data: %Inventory3D.update(GameInfo.game_data.player_data.inventory) + %EnergyInfo3d.energy = GameInfo.game_data.player_data.energy + %EnergyInfo3d.max_energy = GameInfo.game_data.player_data.max_energy + +func update_travel_screen(with_animation = true): + if is_node_ready(): + var current_position = run_data.level + (0.5 if in_space else 0.) + + %TravelScreenContent.story_step = run_data.story_step + %TravelScreenContent.current_position = current_position + + %TravelScreenContent.update(with_animation) + + %TopologyContent.texture.noise.seed = run_data.run_seed + + if with_animation: + var topology_tween = create_tween() + topology_tween.set_trans(Tween.TRANS_EXPO) + topology_tween.tween_property(%TopologyContent.texture.noise,"offset:y",-current_position*TOPOLOGY_SPEED, 5.) + else: + %TopologyContent.texture.noise.offset.y = -current_position*TOPOLOGY_SPEED -func _process(_d): - if %HoloContent.distance < destination_distance: - %HoloContent.distance = ceili(lerp(float(%HoloContent.distance), float(destination_distance), 0.05)) - else: - %HoloContent.distance = floori(lerp(float(%HoloContent.distance), float(destination_distance), 0.05)) func set_main_screen_state(s := main_screen_state): main_screen_state = s @@ -61,22 +64,6 @@ func set_main_screen_run_point(rp := main_screen_run_point): if is_node_ready(): %MainScreen.run_point = rp - -func set_stop_label(v := stop_name): - stop_name = v - if is_node_ready(): - %HoloContent.stop_name = v - -func set_stop_title_label(v := stop_title): - stop_title = v - if is_node_ready(): - %HoloContent.stop_title = v - -func set_destination_title(v := destination_title): - destination_title = v - if is_node_ready(): - %HoloContent.destination = v - func set_status_text(v := status_text): status_text = v if is_node_ready(): @@ -91,4 +78,4 @@ func set_right_stop(v := right_stop): right_stop = v if is_node_ready(): %RightScreen.run_point = right_stop - \ No newline at end of file + diff --git a/stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/plant_info_screen.gd b/stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/plant_info_screen.gd index 9f68cca..39908c7 100644 --- a/stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/plant_info_screen.gd +++ b/stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/plant_info_screen.gd @@ -18,10 +18,8 @@ func update_plant_info(): %GrowingLabel.text = "%d" % plant_info.get_growing_time() %GrowingStat.modulate = Color.WHITE if plant_info.get_growing_time() == plant_info.DEFAULT_GROWING_TIME else CHANGED_COLOR - %SeedLabel.text = "%d-%d" % [ - plant_info.get_seed_number() - plant_info.get_seed_random_loose(), - plant_info.get_seed_number() - ] + %SeedLabel.text = str(plant_info.get_seed_number()) + %SeedStat.modulate = Color.WHITE if ( plant_info.get_seed_number() == plant_info.DEFAULT_SEED_NUMBER and plant_info.get_seed_random_loose() == plant_info.DEFAULT_SEED_RANDOM_LOOSE @@ -33,4 +31,4 @@ func update_plant_info(): %PlantMutationProbability.text = tr("PLANTS_MUTATION_CHANCE_IS_X_PERCENT").format({ "mutation_chance": roundi(plant_info.get_mutation_probability() * 100) }) - %PlantMutationProbability.modulate = Color.WHITE if plant_info.get_mutation_probability() == plant_info.DEFAULT_MUTATION_PROBABILITY else CHANGED_COLOR \ No newline at end of file + %PlantMutationProbability.modulate = Color.WHITE if plant_info.get_mutation_probability() == plant_info.DEFAULT_MUTATION_PROBABILITY else CHANGED_COLOR 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 new file mode 100644 index 0000000..94b3441 --- /dev/null +++ b/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/scripts/travel_screen_content.gd @@ -0,0 +1,87 @@ +@tool +extends Node2D +class_name TravelScreenContent + +const SHIP_ICON = preload("res://common/icons/rocket.svg") +const START_ICON = preload("res://common/icons/device-floppy.svg") +const REGION_ICON = preload("res://common/icons/globe.svg") +const DESTINATION_ICON = preload("res://common/icons/flag-2.svg") + +const PREVIOUS_COLOR = Color("2364AAAA") +const CURRENT_COLOR = Color("e29f32") +const NEXT_COLOR = Color("96B3DB") + +const WIDTH = 800 +const V_DIST = 50 + +@export_tool_button("Update", "Callable") var update_action = update + +@export var current_position : float = 0 +@export var story_step : StoryStep + +func _ready(): + update() + +var ship_icon : Sprite2D + +func update(with_animation := true): + if is_node_ready() and story_step: + if ship_icon and with_animation: + var tween = create_tween() + tween.set_trans(Tween.TRANS_SPRING) + tween.tween_property(ship_icon,"position",coord_to_pos(Vector2(current_position, 1)),5.) + + await tween.finished + + for c in %Icons.get_children(): + c.queue_free() + + for i in range(get_step_number()): + print("showing %d" % i) + var icon = REGION_ICON + if i == 0: + icon = START_ICON + elif i == get_step_number() - 1: + icon = DESTINATION_ICON + + var color = NEXT_COLOR + if i < current_position: + color = PREVIOUS_COLOR + elif i == current_position: + color = CURRENT_COLOR + + var modifiers := story_step.get_story_modifiers_for_region(i) + modifiers.append_array(story_step.get_gameplay_modifiers_for_region(i)) + for m_i in range(len(modifiers)): + spawn_icon(modifiers[m_i].get_icon(), Vector2(i,-m_i - 1),color, 0.7) + + print(modifiers) + + spawn_icon(icon, Vector2(i,0),color) + + ship_icon = spawn_icon(SHIP_ICON, Vector2(current_position, 1), CURRENT_COLOR, 1) + +func spawn_icon(texture : Texture, coord := Vector2.ZERO, color := Color.WHITE, scaling := 1.) -> Sprite2D: + var new_icon = Sprite2D.new() + new_icon.texture = texture + new_icon.modulate = color + new_icon.scale = Vector2.ONE * scaling + + %Icons.add_child(new_icon) + + new_icon.position = coord_to_pos(coord) + + return new_icon + +func get_step_number() -> int: + if story_step: + return story_step.get_region_sequence_length() + return 0 + +func coord_to_pos(coord : Vector2) -> Vector2: + var h_dist = WIDTH / (get_step_number() + 2.) + + return Vector2( + coord.x * h_dist - float(get_step_number())/2 * h_dist + h_dist/2., + coord.y * V_DIST, + ) diff --git a/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/scripts/travel_screen_content.gd.uid b/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/scripts/travel_screen_content.gd.uid new file mode 100644 index 0000000..31d3d6b --- /dev/null +++ b/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/scripts/travel_screen_content.gd.uid @@ -0,0 +1 @@ +uid://r1gn83h8re8m diff --git a/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/topology_content.tscn b/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/topology_content.tscn new file mode 100644 index 0000000..03bf369 --- /dev/null +++ b/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/topology_content.tscn @@ -0,0 +1,41 @@ +[gd_scene format=3 uid="uid://cnx1xwc4uupmc"] + +[ext_resource type="Shader" uid="uid://bklafn6ulmkij" path="res://common/vfx/materials/shaders/topology_map.gdshader" id="1_5gx2n"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_y1ysr"] +shader = ExtResource("1_5gx2n") +shader_parameter/line_number = 6.0 +shader_parameter/line_color = Color(0.13725491, 0.39215687, 0.6666667, 1) +shader_parameter/line_thickness = 0.002000000095 + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_psxhb"] +noise_type = 2 +fractal_octaves = 3 + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_3cel1"] +width = 500 +height = 500 +noise = SubResource("FastNoiseLite_psxhb") + +[sub_resource type="Gradient" id="Gradient_v1m0r"] +interpolation_mode = 1 +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_5gx2n"] +gradient = SubResource("Gradient_v1m0r") +width = 400 +height = 400 +fill = 1 +fill_from = Vector2(0.5, 0.5) +fill_to = Vector2(1, 0.5) + +[node name="TopologyContent" type="Polygon2D" unique_id=1478734478] +material = SubResource("ShaderMaterial_y1ysr") +texture = SubResource("NoiseTexture2D_3cel1") +polygon = PackedVector2Array(283, 51, 242, 50, 190, 58, 137, 83, 107, 110, 81, 142, 59, 189, 50, 233, 53, 284, 69, 334, 92, 373, 129, 410, 168, 432, 219, 449, 268, 449, 303, 445, 351, 423, 383, 400, 414, 365, 437, 323, 451, 266, 449, 229, 444, 200, 422, 147, 394, 109, 350, 75, 316, 59) + +[node name="Circle" type="Sprite2D" parent="." unique_id=1114259574] +visible = false +z_index = -1 +position = Vector2(250, 250) +texture = SubResource("GradientTexture2D_5gx2n") diff --git a/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/travel_screen_content.tscn b/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/travel_screen_content.tscn new file mode 100644 index 0000000..954a28b --- /dev/null +++ b/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/travel_screen_content.tscn @@ -0,0 +1,11 @@ +[gd_scene format=3 uid="uid://dj4u5grx00ky1"] + +[ext_resource type="Script" uid="uid://r1gn83h8re8m" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/scripts/travel_screen_content.gd" id="1_u6tks"] + +[node name="TravelScreenContent" type="Node2D" unique_id=1386845472] +position = Vector2(500, 256) +script = ExtResource("1_u6tks") +current_position = 2.0 + +[node name="Icons" type="Node2D" parent="." unique_id=1787603855] +unique_name_in_owner = true diff --git a/stages/3d_scenes/cockpit_scene/fail_tutorial.tscn b/stages/3d_scenes/cockpit_scene/fail_tutorial.tscn new file mode 100644 index 0000000..a776a78 --- /dev/null +++ b/stages/3d_scenes/cockpit_scene/fail_tutorial.tscn @@ -0,0 +1,333 @@ +[gd_scene format=3 uid="uid://cn2hob1i72a25"] + +[ext_resource type="Script" uid="uid://cqc8vta5ffmwt" path="res://stages/3d_scenes/cockpit_scene/scripts/ship_tutorial.gd" id="1_rymdr"] +[ext_resource type="Texture2D" uid="uid://bi5jo6pf0acjb" path="res://common/icons/carambola.svg" id="2_46i67"] +[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="3_liq62"] +[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="4_wr0v8"] +[ext_resource type="PackedScene" uid="uid://bihsgpfqaiqml" path="res://entities/interactable_3d/orchid_saver/assets/3d/orchid_saver.blend" id="5_p3ndq"] +[ext_resource type="Texture2D" uid="uid://d0x6r3010hvul" path="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/orchid_saver_screenshot.png" id="5_rymdr"] +[ext_resource type="Environment" uid="uid://bxyp24f85p0xf" path="res://gui/game/assets/gui_3d_environment.tres" id="7_1fdaa"] +[ext_resource type="Texture2D" uid="uid://cc1lk4ei4flxs" path="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/empty_inventory_screenshot.png" id="8_46i67"] +[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="9_xako4"] +[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="10_dpqev"] + +[sub_resource type="ViewportTexture" id="ViewportTexture_2y716"] +viewport_path = NodePath("Particles/SubViewport") + +[sub_resource type="Curve" id="Curve_6olc8"] +_limits = [-200.0, 200.0, 0.0, 1.0] +_data = [Vector2(0, -200), 0.0, 560.0, 0, 0, Vector2(0.08235294, 92.384125), 1336.3082, 1336.3082, 0, 0, Vector2(0.34901965, 200), 0.0, 0.0, 0, 0, Vector2(0.854902, -200), 0.0, 0.0, 0, 0] +point_count = 4 + +[sub_resource type="Gradient" id="Gradient_cnkwc"] +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_n2u7g"] +font = ExtResource("3_liq62") +font_size = 50 +font_color = Color(1, 0.6509804, 0.09019608, 1) + +[sub_resource type="ViewportTexture" id="ViewportTexture_11pbi"] +viewport_path = NodePath("MarginContainer/FailTutorialContainer/GridContainer/OrchidSaverVisualiser/SubViewport") + +[sub_resource type="Animation" id="Animation_2y716"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("MarginContainer/FailTutorialContainer:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Particles:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("MarginContainer/FailTutorialContainer:theme_override_constants/separation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [12] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Background:modulate:a") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [1.0] +} + +[sub_resource type="Animation" id="Animation_6olc8"] +resource_name = "appear" +length = 0.8 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.13333334), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [false, true] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("MarginContainer/FailTutorialContainer:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.2, 0.73333335), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Particles:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.2, 0.7), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("MarginContainer/FailTutorialContainer:theme_override_constants/separation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.26666665, 0.73333335), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [554, 8] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Background:modulate:a") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0.16666667, 0.8), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.8] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_cnkwc"] +_data = { +&"RESET": SubResource("Animation_2y716"), +&"appear": SubResource("Animation_6olc8") +} + +[node name="FailTutorial" type="CanvasLayer" unique_id=868547496 node_paths=PackedStringArray("object_3d", "ok_button", "animation_player")] +script = ExtResource("1_rymdr") +object_3d = NodePath("MarginContainer/FailTutorialContainer/GridContainer/OrchidSaverVisualiser/SubViewport/orchid_saver") +ok_button = NodePath("MarginContainer/FailTutorialContainer/OkButton") +animation_player = NodePath("AnimationPlayer") +tutorial_name = "fail" + +[node name="Background" type="ColorRect" parent="." unique_id=1582095070] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0.037180007, 0.020800002, 0.13, 1) + +[node name="Particles" type="TextureRect" parent="." unique_id=552383374] +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -179.0 +offset_top = -179.0 +offset_right = 179.0 +offset_bottom = 179.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = SubResource("ViewportTexture_2y716") +expand_mode = 1 + +[node name="SubViewport" type="SubViewport" parent="Particles" unique_id=205461032] +transparent_bg = true +size = Vector2i(1000, 1000) + +[node name="GPUParticles2D" type="CPUParticles2D" parent="Particles/SubViewport" unique_id=612988274] +position = Vector2(500, 500) +amount = 20 +texture = ExtResource("2_46i67") +preprocess = 1.0 +spread = 180.0 +gravity = Vector2(0, 0) +initial_velocity_min = 2.0 +initial_velocity_max = 2.0 +linear_accel_min = 5.0 +linear_accel_max = 5.0 +linear_accel_curve = SubResource("Curve_6olc8") +color_ramp = SubResource("Gradient_cnkwc") + +[node name="MarginContainer" type="MarginContainer" parent="." unique_id=1783612054] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 16 +theme_override_constants/margin_top = 16 +theme_override_constants/margin_right = 16 +theme_override_constants/margin_bottom = 16 + +[node name="FailTutorialContainer" type="VBoxContainer" parent="MarginContainer" unique_id=732188526] +layout_mode = 2 +theme_override_constants/separation = 12 +alignment = 1 + +[node name="ShipTutorialText" type="Label" parent="MarginContainer/FailTutorialContainer" unique_id=1403992763] +unique_name_in_owner = true +layout_mode = 2 +text = "OUT_OF_ENERGY" +label_settings = SubResource("LabelSettings_n2u7g") +horizontal_alignment = 1 + +[node name="ShipTutorialTitle" type="Label" parent="MarginContainer/FailTutorialContainer" unique_id=2022459650] +unique_name_in_owner = true +layout_mode = 2 +text = "USE_THE_BACKUP_DEVICE_TO_RESPAWN_TO_LAST_BASE" +label_settings = ExtResource("4_wr0v8") +horizontal_alignment = 1 +autowrap_mode = 3 + +[node name="GridContainer" type="GridContainer" parent="MarginContainer/FailTutorialContainer" unique_id=1001794244] +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_constants/h_separation = 35 +columns = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/FailTutorialContainer/GridContainer" unique_id=1184100238] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 +theme_override_constants/separation = 12 +alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="MarginContainer/FailTutorialContainer/GridContainer/VBoxContainer" unique_id=458438699] +layout_mode = 2 +texture = ExtResource("5_rymdr") +expand_mode = 5 +stretch_mode = 5 + +[node name="RichTextLabel" type="RichTextLabel" parent="MarginContainer/FailTutorialContainer/GridContainer/VBoxContainer" unique_id=1193611093] +layout_mode = 2 +bbcode_enabled = true +text = "STEP_ON_THE_DATA_SAVER_TEXT" +fit_content = true +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="OrchidSaverVisualiser" type="TextureRect" parent="MarginContainer/FailTutorialContainer/GridContainer" unique_id=692971472] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +mouse_filter = 0 +texture = SubResource("ViewportTexture_11pbi") +stretch_mode = 5 + +[node name="SubViewport" type="SubViewport" parent="MarginContainer/FailTutorialContainer/GridContainer/OrchidSaverVisualiser" unique_id=1153633037] +own_world_3d = true +transparent_bg = true +size = Vector2i(400, 400) + +[node name="orchid_saver" parent="MarginContainer/FailTutorialContainer/GridContainer/OrchidSaverVisualiser/SubViewport" unique_id=1027429202 instance=ExtResource("5_p3ndq")] +transform = Transform3D(0.4685929, 0, -0.8834142, 0, 1, 0, 0.8834142, 0, 0.4685929, 0, -0.5, 0) + +[node name="Capsule" parent="MarginContainer/FailTutorialContainer/GridContainer/OrchidSaverVisualiser/SubViewport/orchid_saver" index="0" unique_id=1504808872] +visible = false + +[node name="Camera3D" type="Camera3D" parent="MarginContainer/FailTutorialContainer/GridContainer/OrchidSaverVisualiser/SubViewport" unique_id=541588220] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 5) +current = true +fov = 30.0 + +[node name="WorldEnvironment" type="WorldEnvironment" parent="MarginContainer/FailTutorialContainer/GridContainer/OrchidSaverVisualiser/SubViewport" unique_id=1274670225] +environment = ExtResource("7_1fdaa") + +[node name="VBoxContainer2" type="VBoxContainer" parent="MarginContainer/FailTutorialContainer/GridContainer" unique_id=1062837751] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 +theme_override_constants/separation = 12 +alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="MarginContainer/FailTutorialContainer/GridContainer/VBoxContainer2" unique_id=227115375] +layout_mode = 2 +texture = ExtResource("8_46i67") +expand_mode = 5 +stretch_mode = 5 + +[node name="RichTextLabel" type="RichTextLabel" parent="MarginContainer/FailTutorialContainer/GridContainer/VBoxContainer2" unique_id=1438289614] +layout_mode = 2 +bbcode_enabled = true +text = "RESTART_FROM_LAST_BASE_WITHOUT_SEEDS_TEXT" +fit_content = true +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="OkButton" type="Button" parent="MarginContainer/FailTutorialContainer" unique_id=879779245] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +theme = ExtResource("9_xako4") +text = "OK" +icon = ExtResource("10_dpqev") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1299060348] +unique_name_in_owner = true +libraries/ = SubResource("AnimationLibrary_cnkwc") + +[connection signal="button_down" from="MarginContainer/FailTutorialContainer/OkButton" to="." method="_on_ok_button_button_down"] + +[editable path="MarginContainer/FailTutorialContainer/GridContainer/OrchidSaverVisualiser/SubViewport/orchid_saver"] diff --git a/stages/3d_scenes/cockpit_scene/scripts/cockpit.gd b/stages/3d_scenes/cockpit_scene/scripts/cockpit.gd index e5ac598..4805c73 100644 --- a/stages/3d_scenes/cockpit_scene/scripts/cockpit.gd +++ b/stages/3d_scenes/cockpit_scene/scripts/cockpit.gd @@ -23,10 +23,7 @@ func _ready(): else (float(region_data.get_score()) / max(float(region_data.objective), 1)) ) - %EnergyInfo3d.energy = GameInfo.game_data.player_data.energy - %EnergyInfo3d.max_energy = GameInfo.game_data.player_data.max_energy - - update_dashboard() + update_dashboard(false) dashboard.main_screen_activated.connect(_on_main_screen_activated) dashboard.left_screen_activated.connect(_on_left_screen_activated) @@ -34,23 +31,14 @@ func _ready(): %Exit.clicked.connect(_on_exit_clicked) %Exit.interactable = can_exit() - if not GameInfo.game_data.progression_data.ship_tutorial_done: + if not "ship" in GameInfo.game_data.tutorials_done: await get_tree().create_timer(1).timeout - await show_tutorial() + %ShipTutorial.appear() + if GameInfo.game_data.game_mode == GameData.GameMode.STORY: update_dialogs() -func show_tutorial(): - AudioManager.play_sfx("Reveal") - %ShipTutorial.appear() - Input.mouse_mode = Input.MOUSE_MODE_VISIBLE - %Player3D.controlling_player=false - await %ShipTutorial.disappeared - Input.mouse_mode = Input.MOUSE_MODE_CAPTURED - %Player3D.controlling_player=true - GameInfo.game_data.progression_data.ship_tutorial_done = true - func update_dialogs(): if GameInfo.game_data and GameInfo.game_data.current_run: var run_data = GameInfo.game_data.current_run @@ -86,11 +74,15 @@ func _on_phone_clicked(): %Phone.stop_audio() %Phone.interactable = false if len(phone_dialogs): - Dialogic.start(phone_dialogs.pop_front()) + var phone_dialog : String = phone_dialogs.pop_front() + Dialogic.start(phone_dialog) await Dialogic.timeline_ended + if phone_dialog == FAILED_DIALOG: + %FailTutorial.appear() if (len(phone_dialogs)): await get_tree().create_timer(2.).timeout ring_phone() + func move_to_choosen_run_point(): GameInfo.game_data.current_run.choose_next_run_point(choosen_run_point) @@ -145,18 +137,14 @@ func _on_exit_clicked(): exiting = true SceneManager.change_to_scene(RegionScene.new(GameInfo.game_data.current_region_data)) -func update_dashboard(): +func update_dashboard(with_animation := true): var current_region_data = GameInfo.game_data.current_region_data var current_run = GameInfo.game_data.current_run - - if current_run.is_finished(): - dashboard.destination_distance = 0 - else: - dashboard.destination_distance = ( - current_run.get_progress() * 1000 - ) - dashboard.destination_title = current_run.story_step.get_destination_text() + + dashboard.run_data = current_run + dashboard.in_space = GameInfo.game_data.ship_in_space + dashboard.update_travel_screen(with_animation) var can_take_off : bool = ( not current_run.is_finished() @@ -170,15 +158,10 @@ func update_dashboard(): if GameInfo.game_data.ship_in_space: if choosen_run_point: dashboard.main_screen_state = DashboardMainScreen.State.READY_TO_LAND - dashboard.stop_title = tr("NEXT_STOP") - dashboard.stop_name = choosen_run_point.region_parameter.region_name dashboard.status_text = "" else: dashboard.main_screen_state = DashboardMainScreen.State.WAITING_CHOICE - dashboard.stop_title = "" - dashboard.stop_name = tr("ORBIT") dashboard.status_text = tr("CHOOSE_NEXT_STOP") - dashboard.stop_name = "" if GameInfo.game_data.current_run: var next_run_points = GameInfo.game_data.current_run.next_run_points @@ -203,12 +186,5 @@ func update_dashboard(): dashboard.left_stop = null dashboard.right_stop = null - if current_region_data: - dashboard.stop_title = tr("LOCATION") - dashboard.stop_name = current_region_data.region_name - - - func _on_orchid_saver_clicked(): GameInfo.game_data.give_up() - diff --git a/stages/3d_scenes/cockpit_scene/scripts/ship_tutorial.gd b/stages/3d_scenes/cockpit_scene/scripts/ship_tutorial.gd index 3dcd875..e9e41cb 100644 --- a/stages/3d_scenes/cockpit_scene/scripts/ship_tutorial.gd +++ b/stages/3d_scenes/cockpit_scene/scripts/ship_tutorial.gd @@ -1,7 +1,13 @@ extends CanvasLayer class_name ShipTutorial -const DEFAULT_SHIP_ACCELERATION = Vector2(1,0) +const DEFAULT_OBJECT_ACCELERATION = Vector2(1,0) + +@export var object_3d : Node3D +@export var ok_button : Button +@export var animation_player : AnimationPlayer +@export var player : Player3D +@export var tutorial_name := "ship" signal disappeared @@ -14,9 +20,13 @@ var next_mouse_pos : Vector2 func _ready(): hide() + ok_button.button_down.connect(_on_ok_button_button_down) func appear(): - %AnimationPlayer.play("appear") + AudioManager.play_sfx("Reveal") + animation_player.play("appear") + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + player.controlling_player=false Pointer.action_disabled = true func _process(delta): @@ -44,15 +54,18 @@ func update_rotation(delta): ) prev_mouse_pos = next_mouse_pos else : - object_acceleration = object_acceleration.lerp(DEFAULT_SHIP_ACCELERATION, 0.1) + object_acceleration = object_acceleration.lerp(DEFAULT_OBJECT_ACCELERATION, 0.1) - %Ship.rotate(Vector3.UP, object_rotation.x * delta) - %Ship.rotate(Vector3.RIGHT, object_rotation.y * delta) + object_3d.rotate(Vector3.UP, object_rotation.x * delta) + object_3d.rotate(Vector3.RIGHT, object_rotation.y * delta) func _on_ok_button_button_down(): - %AnimationPlayer.play_backwards("appear") + animation_player.play_backwards("appear") disappeared.emit() + Input.mouse_mode = Input.MOUSE_MODE_CAPTURED + player.controlling_player = true + GameInfo.game_data.tutorials_done.append(tutorial_name) get_tree().create_timer(0.2).timeout.connect( # Put a delay to not interfere with the ok button click func(): Pointer.action_disabled = false diff --git a/stages/3d_scenes/cockpit_scene/ship_tutorial.tscn b/stages/3d_scenes/cockpit_scene/ship_tutorial.tscn index bf20ad5..4e48834 100644 --- a/stages/3d_scenes/cockpit_scene/ship_tutorial.tscn +++ b/stages/3d_scenes/cockpit_scene/ship_tutorial.tscn @@ -1,21 +1,15 @@ [gd_scene format=3 uid="uid://cd8j7v7qtybi8"] [ext_resource type="Script" uid="uid://cqc8vta5ffmwt" path="res://stages/3d_scenes/cockpit_scene/scripts/ship_tutorial.gd" id="1_1jkg7"] -[ext_resource type="Shader" uid="uid://cuni3ggtw2uuy" path="res://common/vfx/materials/shaders/blur.gdshader" id="1_11pbi"] [ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="2_1jkg7"] [ext_resource type="Texture2D" uid="uid://bi5jo6pf0acjb" path="res://common/icons/carambola.svg" id="3_ofwam"] [ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="3_wyjs5"] [ext_resource type="PackedScene" uid="uid://blvetnnib2ks0" path="res://stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend" id="4_ofwam"] [ext_resource type="Environment" uid="uid://bxyp24f85p0xf" path="res://gui/game/assets/gui_3d_environment.tres" id="5_2y716"] -[ext_resource type="Texture2D" uid="uid://7lw40nfj4lhl" path="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png" id="6_2y716"] +[ext_resource type="Texture2D" uid="uid://7lw40nfj4lhl" path="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/dashboard_screenshot.png" id="6_2y716"] [ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="6_6olc8"] [ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="7_cnkwc"] -[ext_resource type="Texture2D" uid="uid://d17ru4hw8okj1" path="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png" id="9_6olc8"] - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_wa8fb"] -shader = ExtResource("1_11pbi") -shader_parameter/strength = 8.00000037674012 -shader_parameter/mix_percentage = 0.3 +[ext_resource type="Texture2D" uid="uid://d17ru4hw8okj1" path="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/objective_screenshot.png" id="9_6olc8"] [sub_resource type="ViewportTexture" id="ViewportTexture_2y716"] viewport_path = NodePath("Particles/SubViewport") @@ -35,7 +29,7 @@ font_size = 50 font_color = Color(1, 0.6509804, 0.09019608, 1) [sub_resource type="ViewportTexture" id="ViewportTexture_11pbi"] -viewport_path = NodePath("ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport") +viewport_path = NodePath("MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport") [sub_resource type="Animation" id="Animation_2y716"] length = 0.001 @@ -54,7 +48,7 @@ tracks/0/keys = { tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true -tracks/1/path = NodePath("ShipTutorialContainer:modulate") +tracks/1/path = NodePath("MarginContainer/ShipTutorialContainer:modulate") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { @@ -78,7 +72,7 @@ tracks/2/keys = { tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true -tracks/3/path = NodePath("ShipTutorialContainer:theme_override_constants/separation") +tracks/3/path = NodePath("MarginContainer/ShipTutorialContainer:theme_override_constants/separation") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { @@ -87,6 +81,18 @@ tracks/3/keys = { "update": 1, "values": [12] } +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Background:modulate:a") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [1.0] +} [sub_resource type="Animation" id="Animation_6olc8"] resource_name = "appear" @@ -106,7 +112,7 @@ tracks/0/keys = { tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true -tracks/1/path = NodePath("ShipTutorialContainer:modulate") +tracks/1/path = NodePath("MarginContainer/ShipTutorialContainer:modulate") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { @@ -130,7 +136,7 @@ tracks/2/keys = { tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true -tracks/3/path = NodePath("ShipTutorialContainer:theme_override_constants/separation") +tracks/3/path = NodePath("MarginContainer/ShipTutorialContainer:theme_override_constants/separation") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { @@ -139,6 +145,18 @@ tracks/3/keys = { "update": 0, "values": [554, 8] } +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Background:modulate:a") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0.16666667, 0.8), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.8] +} [sub_resource type="AnimationLibrary" id="AnimationLibrary_cnkwc"] _data = { @@ -146,11 +164,13 @@ _data = { &"appear": SubResource("Animation_6olc8") } -[node name="ShipTutorial" type="CanvasLayer" unique_id=868547496] +[node name="ShipTutorial" type="CanvasLayer" unique_id=868547496 node_paths=PackedStringArray("object_3d", "ok_button", "animation_player")] script = ExtResource("1_1jkg7") +object_3d = NodePath("MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship") +ok_button = NodePath("MarginContainer/ShipTutorialContainer/OkButton") +animation_player = NodePath("AnimationPlayer") -[node name="BlurRect" type="ColorRect" parent="." unique_id=1582095070] -material = SubResource("ShaderMaterial_wa8fb") +[node name="Background" type="ColorRect" parent="." unique_id=1582095070] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 @@ -191,48 +211,56 @@ linear_accel_max = 5.0 linear_accel_curve = SubResource("Curve_6olc8") color_ramp = SubResource("Gradient_cnkwc") -[node name="ShipTutorialContainer" type="VBoxContainer" parent="." unique_id=732188526] +[node name="MarginContainer" type="MarginContainer" parent="." unique_id=1342614121] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +theme_override_constants/margin_left = 16 +theme_override_constants/margin_top = 16 +theme_override_constants/margin_right = 16 +theme_override_constants/margin_bottom = 16 + +[node name="ShipTutorialContainer" type="VBoxContainer" parent="MarginContainer" unique_id=732188526] +layout_mode = 2 theme_override_constants/separation = 12 alignment = 1 -[node name="ShipTutorialText" type="Label" parent="ShipTutorialContainer" unique_id=1403992763] +[node name="ShipTutorialText" type="Label" parent="MarginContainer/ShipTutorialContainer" unique_id=1403992763] unique_name_in_owner = true layout_mode = 2 text = "SHIP_ACQUIRED" label_settings = SubResource("LabelSettings_n2u7g") horizontal_alignment = 1 -[node name="ShipTutorialTitle" type="Label" parent="ShipTutorialContainer" unique_id=2022459650] +[node name="ShipTutorialTitle" type="Label" parent="MarginContainer/ShipTutorialContainer" unique_id=2022459650] unique_name_in_owner = true layout_mode = 2 text = "USE_THE_SHIP_TO_TRAVEL_ACROSS_THE_PLANET" label_settings = ExtResource("2_1jkg7") horizontal_alignment = 1 +autowrap_mode = 3 -[node name="GridContainer" type="GridContainer" parent="ShipTutorialContainer" unique_id=1001794244] +[node name="GridContainer" type="GridContainer" parent="MarginContainer/ShipTutorialContainer" unique_id=1001794244] layout_mode = 2 size_flags_horizontal = 4 theme_override_constants/h_separation = 35 columns = 3 -[node name="VBoxContainer" type="VBoxContainer" parent="ShipTutorialContainer/GridContainer" unique_id=1184100238] +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/ShipTutorialContainer/GridContainer" unique_id=1184100238] custom_minimum_size = Vector2(300, 0) layout_mode = 2 theme_override_constants/separation = 12 alignment = 1 -[node name="TextureRect" type="TextureRect" parent="ShipTutorialContainer/GridContainer/VBoxContainer" unique_id=458438699] +[node name="TextureRect" type="TextureRect" parent="MarginContainer/ShipTutorialContainer/GridContainer/VBoxContainer" unique_id=458438699] layout_mode = 2 texture = ExtResource("6_2y716") expand_mode = 5 stretch_mode = 5 -[node name="RichTextLabel" type="RichTextLabel" parent="ShipTutorialContainer/GridContainer/VBoxContainer" unique_id=1193611093] +[node name="RichTextLabel" type="RichTextLabel" parent="MarginContainer/ShipTutorialContainer/GridContainer/VBoxContainer" unique_id=1193611093] layout_mode = 2 bbcode_enabled = true text = "JUMP_BETWEEN_REGION_TEXT" @@ -240,7 +268,7 @@ fit_content = true horizontal_alignment = 1 vertical_alignment = 1 -[node name="ShipVisualiser" type="TextureRect" parent="ShipTutorialContainer/GridContainer" unique_id=692971472] +[node name="ShipVisualiser" type="TextureRect" parent="MarginContainer/ShipTutorialContainer/GridContainer" unique_id=692971472] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 4 @@ -248,59 +276,59 @@ mouse_filter = 0 texture = SubResource("ViewportTexture_11pbi") stretch_mode = 5 -[node name="SubViewport" type="SubViewport" parent="ShipTutorialContainer/GridContainer/ShipVisualiser" unique_id=1153633037] +[node name="SubViewport" type="SubViewport" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser" unique_id=1153633037] own_world_3d = true transparent_bg = true size = Vector2i(400, 400) -[node name="Ship" type="Node3D" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport" unique_id=434320277] +[node name="Ship" type="Node3D" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport" unique_id=434320277] unique_name_in_owner = true transform = Transform3D(0.86598426, 0, -0.5000024, 0, 0.9999422, 0, 0.49997625, 0, 0.8660295, 0, 0, 0) -[node name="cockpit2" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship" unique_id=1190034532 instance=ExtResource("4_ofwam")] +[node name="cockpit2" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship" unique_id=1190034532 instance=ExtResource("4_ofwam")] -[node name="Skeleton3D" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature" parent_id_path=PackedInt32Array(1190034532, 368440226) index="0" unique_id=1318180746] +[node name="Skeleton3D" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature" parent_id_path=PackedInt32Array(1190034532, 368440226) index="0" unique_id=1318180746] bones/0/rotation = Quaternion(-0.52081746, 0.47827742, 0.52081746, 0.47827742) bones/1/rotation = Quaternion(0.042539995, -1.4957005e-08, -9.944439e-10, 0.9990948) bones/2/rotation = Quaternion(0.52081746, 0.47827742, 0.52081746, -0.47827742) bones/3/rotation = Quaternion(0.042539995, 1.4957005e-08, 9.944439e-10, 0.9990948) -[node name="WinkEnd_R" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="0" unique_id=1435098475] +[node name="WinkEnd_R" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="0" unique_id=1435098475] transform = Transform3D(7.145433e-10, -1, -7.4505806e-08, 2.9971538e-08, -4.4703484e-08, 1, -1, -7.1454553e-10, 2.9971538e-08, -12.358327, -1.0543112, -8.881784e-16) -[node name="Wing_R" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="1" unique_id=891044283] +[node name="Wing_R" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="1" unique_id=891044283] transform = Transform3D(0, -0.9963807, -0.08500305, 0, -0.08500302, 0.9963807, -1, 0, 0, 0, 0, 0) -[node name="WinkEnd_L" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="2" unique_id=908817672] +[node name="WinkEnd_L" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="2" unique_id=908817672] transform = Transform3D(7.145433e-10, 1, 7.4505806e-08, -2.9971538e-08, -4.4703484e-08, 1, 1, -7.1454553e-10, 2.9971538e-08, 12.358327, -1.0543112, 0) -[node name="Wing_L" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="3" unique_id=74621525] +[node name="Wing_L" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="3" unique_id=74621525] transform = Transform3D(0, 0.9963807, 0.08500305, 0, -0.08500302, 0.9963807, 1, 0, 0, 0, 0, 0) -[node name="AnimationPlayer" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2" index="6" unique_id=1861191625] +[node name="AnimationPlayer" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2" index="6" unique_id=1861191625] autoplay = &"Fold" -[node name="Camera3D" type="Camera3D" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport" unique_id=541588220] +[node name="Camera3D" type="Camera3D" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport" unique_id=541588220] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 50) current = true fov = 30.0 -[node name="WorldEnvironment" type="WorldEnvironment" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport" unique_id=1274670225] +[node name="WorldEnvironment" type="WorldEnvironment" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport" unique_id=1274670225] environment = ExtResource("5_2y716") -[node name="VBoxContainer2" type="VBoxContainer" parent="ShipTutorialContainer/GridContainer" unique_id=1062837751] +[node name="VBoxContainer2" type="VBoxContainer" parent="MarginContainer/ShipTutorialContainer/GridContainer" unique_id=1062837751] custom_minimum_size = Vector2(300, 0) layout_mode = 2 theme_override_constants/separation = 12 alignment = 1 -[node name="TextureRect" type="TextureRect" parent="ShipTutorialContainer/GridContainer/VBoxContainer2" unique_id=227115375] +[node name="TextureRect" type="TextureRect" parent="MarginContainer/ShipTutorialContainer/GridContainer/VBoxContainer2" unique_id=227115375] layout_mode = 2 texture = ExtResource("9_6olc8") expand_mode = 5 stretch_mode = 5 -[node name="RichTextLabel" type="RichTextLabel" parent="ShipTutorialContainer/GridContainer/VBoxContainer2" unique_id=1438289614] +[node name="RichTextLabel" type="RichTextLabel" parent="MarginContainer/ShipTutorialContainer/GridContainer/VBoxContainer2" unique_id=1438289614] layout_mode = 2 bbcode_enabled = true text = "RECHARGE_YOUR_SHIP_WITH_PLANT_SCORE_TEXT" @@ -308,7 +336,7 @@ fit_content = true horizontal_alignment = 1 vertical_alignment = 1 -[node name="OkButton" type="Button" parent="ShipTutorialContainer" unique_id=879779245] +[node name="OkButton" type="Button" parent="MarginContainer/ShipTutorialContainer" unique_id=879779245] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 4 @@ -320,6 +348,6 @@ icon = ExtResource("7_cnkwc") unique_name_in_owner = true libraries/ = SubResource("AnimationLibrary_cnkwc") -[connection signal="button_down" from="ShipTutorialContainer/OkButton" to="." method="_on_ok_button_button_down"] +[connection signal="button_down" from="MarginContainer/ShipTutorialContainer/OkButton" to="." method="_on_ok_button_button_down"] -[editable path="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2"] +[editable path="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2"] diff --git a/stages/3d_scenes/end_base/assets/3d/end_base.blend b/stages/3d_scenes/end_base/assets/3d/end_base.blend new file mode 100644 index 0000000..22871ac Binary files /dev/null and b/stages/3d_scenes/end_base/assets/3d/end_base.blend differ diff --git a/stages/3d_scenes/end_base/assets/3d/end_base.blend.import b/stages/3d_scenes/end_base/assets/3d/end_base.blend.import new file mode 100644 index 0000000..e669e5b --- /dev/null +++ b/stages/3d_scenes/end_base/assets/3d/end_base.blend.import @@ -0,0 +1,73 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bqo4uknlbm8r1" +path="res://.godot/imported/end_base.blend-fe62ec0b123eb800e23803303dde3051.scn" + +[deps] + +source_file="res://stages/3d_scenes/end_base/assets/3d/end_base.blend" +dest_files=["res://.godot/imported/end_base.blend-fe62ec0b123eb800e23803303dde3051.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={ +"materials": { +"Glass": { +"use_external/enabled": true, +"use_external/fallback_path": "res://common/assets/materials/glass_3d.tres", +"use_external/path": "uid://b5vlcdry8vtgi" +}, +"Material": { +"use_external/enabled": true, +"use_external/fallback_path": "res://common/assets/materials/default_3d.tres", +"use_external/path": "uid://dvvi1k5c5iowc" +} +} +} +blender/nodes/visible=0 +blender/nodes/active_collection_only=false +blender/nodes/punctual_lights=true +blender/nodes/cameras=true +blender/nodes/custom_properties=true +blender/nodes/modifiers=1 +blender/meshes/colors=false +blender/meshes/uvs=true +blender/meshes/normals=true +blender/meshes/export_geometry_nodes_instances=false +blender/meshes/gpu_instances=false +blender/meshes/tangents=true +blender/meshes/skins=2 +blender/meshes/export_bones_deforming_mesh_only=false +blender/materials/unpack_enabled=true +blender/materials/export_materials=1 +blender/animation/limit_playback=true +blender/animation/always_sample=true +blender/animation/group_tracks=true +gltf/naming_version=2 diff --git a/stages/3d_scenes/end_base/end_base.tscn b/stages/3d_scenes/end_base/end_base.tscn new file mode 100644 index 0000000..53e3751 --- /dev/null +++ b/stages/3d_scenes/end_base/end_base.tscn @@ -0,0 +1,991 @@ +[gd_scene format=3 uid="uid://b6kl2hc85a0mh"] + +[ext_resource type="Script" uid="uid://btc447j47jbx0" path="res://stages/3d_scenes/end_base/scripts/borea_base.gd" id="1_fevne"] +[ext_resource type="Shader" uid="uid://bv2rghn44mrrf" path="res://stages/title_screen/resources/shaders/stars.gdshader" id="1_xd71i"] +[ext_resource type="PackedScene" uid="uid://da7a74dg30q1l" path="res://entities/player_3d/player_3D.tscn" id="3_c8vcx"] +[ext_resource type="PackedScene" uid="uid://csx7d5khjd6y5" path="res://entities/interactable_3d/phone/phone.tscn" id="4_fevne"] +[ext_resource type="PackedScene" uid="uid://bqo4uknlbm8r1" path="res://stages/3d_scenes/end_base/assets/3d/end_base.blend" id="4_s7tqr"] +[ext_resource type="PackedScene" uid="uid://c5a32n6rjjlnt" path="res://gui/credits/credits.tscn" id="6_c8vcx"] +[ext_resource type="Material" uid="uid://cr7bp4fhh1ipr" path="res://entities/player_3d/resources/materials/post_process_quad.tres" id="7_s7tqr"] + +[sub_resource type="Animation" id="Animation_xd71i"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("%Player3D/../Lights/LightLevel0/OmniLight3D7:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("%Player3D/../Lights/LightLevel0/OmniLight3D2:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("%Player3D/../Lights/LightLevel1/OmniLight3D10:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("%Player3D/../Lights/LightLevel1/OmniLight3D14:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("%Player3D/../Lights/LightLevel3/OmniLight3D3:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} + +[sub_resource type="Animation" id="Animation_fevne"] +resource_name = "blink" +length = 3.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("%Player3D/../Lights/LightLevel0/OmniLight3D7:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.46666667, 1.37, 1.5866667, 2.2, 2.48, 2.77), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [true, false, true, false, true, false, true] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("%Player3D/../Lights/LightLevel0/OmniLight3D2:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.38, 1.2833333, 1.5, 2.2, 2.48, 2.77), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [true, false, true, false, true, true, true] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("%Player3D/../Lights/LightLevel1/OmniLight3D10:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.63, 1.5333333, 1.75, 2.2, 2.48, 2.77), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [true, false, true, false, true, false, true] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("%Player3D/../Lights/LightLevel1/OmniLight3D14:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.63, 1.5333333, 1.75, 2.2, 2.48, 2.77), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [true, false, true, false, true, true, true] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("%Player3D/../Lights/LightLevel3/OmniLight3D3:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.63, 1.5333333, 1.75, 2.2, 2.48, 2.77), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), +"update": 1, +"values": [true, false, true, false, true, false, true] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_c8vcx"] +_data = { +&"RESET": SubResource("Animation_xd71i"), +&"blink": SubResource("Animation_fevne") +} + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_2ei4e"] +shader = ExtResource("1_xd71i") +shader_parameter/sky_color = Color(0.03, 0.05, 0.11, 1) +shader_parameter/star_base_color = Color(0.8, 1, 0.3, 1) +shader_parameter/star_hue_offset = 0.6 +shader_parameter/star_intensity = 0.08 +shader_parameter/layer_scale = 20.0 +shader_parameter/layer_scale_step = 10.0 +shader_parameter/layers_count = 3 + +[sub_resource type="Sky" id="Sky_xd71i"] +sky_material = SubResource("ShaderMaterial_2ei4e") + +[sub_resource type="Environment" id="Environment_fevne"] +background_mode = 2 +sky = SubResource("Sky_xd71i") +sky_custom_fov = 61.7 +ambient_light_source = 3 +ambient_light_color = Color(1, 1, 1, 1) +ambient_light_sky_contribution = 0.85 +ambient_light_energy = 0.52 +reflected_light_source = 2 +tonemap_mode = 2 +tonemap_exposure = 0.7 +tonemap_white = 1.84 +glow_enabled = true +glow_intensity = 0.22 +glow_bloom = 0.22 +glow_hdr_threshold = 0.79 +glow_hdr_scale = 0.0 +glow_hdr_luminance_cap = 5.63 +fog_enabled = true +fog_mode = 1 +fog_light_color = Color(0.13725491, 0.39215687, 0.6666667, 1) +fog_density = 0.1831 +fog_aerial_perspective = 0.113 +fog_sky_affect = 0.0 +volumetric_fog_sky_affect = 0.0 +adjustment_enabled = true +adjustment_saturation = 1.3 + +[sub_resource type="BoxShape3D" id="BoxShape3D_c8vcx"] +size = Vector3(0.001, 7.6933594, 7.697876) + +[sub_resource type="Animation" id="Animation_s7tqr"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("TrailerCamera:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 60.366375, 0)] +} + +[sub_resource type="Animation" id="Animation_2ei4e"] +resource_name = "trailer" +length = 10.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("TrailerCamera:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 9.933333), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, 60.366375, 0), Vector3(0, 10, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_hlox4"] +_data = { +&"RESET": SubResource("Animation_s7tqr"), +&"trailer": SubResource("Animation_2ei4e") +} + +[sub_resource type="QuadMesh" id="QuadMesh_2ei4e"] +size = Vector2(2, 2) + +[node name="BoreaBase" type="Node3D" unique_id=442220603] +script = ExtResource("1_fevne") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=1539431276] +transform = Transform3D(1, 0, 0, 0, 0.25881907, 0.9659258, 0, -0.9659258, 0.25881907, 30.708645, 59.967155, 32.405155) +light_color = Color(0.6660227, 0.6797195, 0.9820071, 1) +light_energy = 0.2 +shadow_enabled = true + +[node name="Lights" type="Node3D" parent="." unique_id=1071261896] + +[node name="LightLevel0" type="Node3D" parent="Lights" unique_id=1673172585] + +[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=331040735] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.250671, -2.1126924, 23.147612) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D4" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=781678275] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.520561, -2.1126924, -9.563883) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D5" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=1029811291] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.694098, -2.1126924, -20.977478) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D6" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=706813333] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2640495, -2.1126924, -28.070211) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D7" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=522933437] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.133095, -2.1126924, -28.070211) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D10" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=1811482313] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.797234, -2.1126924, 8.860925) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D11" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=617635003] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.40009, -2.1126924, 21.334354) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=918304264] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.523638, -2.1126924, 14.304096) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D14" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=1597573435] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.475027, -5.066031, -2.8978524) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D15" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=116640999] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.343237, -5.066031, -3.1424296) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D16" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=801358869] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.506277, -5.066031, 2.9720063) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="LightLevel1" type="Node3D" parent="Lights" unique_id=1922457496] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 8.234108, 0) + +[node name="OmniLight3D" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=55476383] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5544157, -2.1126924, 27.90219) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=92670411] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.250671, -2.1126924, 23.147612) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D5" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=636878856] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.694098, -2.1126924, -20.977478) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D6" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=1423170075] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2640495, -2.1126924, -28.070211) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D7" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=58992978] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.133095, -2.1126924, -28.070211) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D8" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=2076353163] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.688046, -2.1126924, -23.17867) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D9" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=1322504637] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.514515, -2.1126924, -14.292371) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D10" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=69628955] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.797234, -2.1126924, 8.860925) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D11" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=861056154] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.40009, -2.1126924, 21.334354) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D12" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=918332677] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.4000893, -2.1126924, 27.334354) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=271744912] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.523638, -2.1126924, 14.304096) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D14" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=1456495033] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.475027, -5.066031, -2.8978524) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D15" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=1464495731] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.343237, -5.066031, -3.1424296) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D16" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=512747242] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.506277, -5.066031, 2.9720063) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="LightLevel2" type="Node3D" parent="Lights" unique_id=1658395921] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 16.305164, 0) + +[node name="OmniLight3D" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1782738053] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5544157, -2.1126924, 27.90219) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1044065491] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.250671, -2.1126924, 23.147612) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D4" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1280223269] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.520561, -2.1126924, -9.563883) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D5" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=443076410] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.694098, -2.1126924, -20.977478) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D6" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=795711828] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2640495, -2.1126924, -28.070211) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D7" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=39883193] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.133095, -2.1126924, -28.070211) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D8" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1022700169] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.688046, -2.1126924, -23.17867) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D9" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=552912438] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.514515, -2.1126924, -14.292371) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D10" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1298855751] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.797234, -2.1126924, 8.860925) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D12" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=111834629] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.4000893, -2.1126924, 27.334354) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1375255226] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.523638, -2.1126924, 14.304096) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D13" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=18165508] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.556553, -5.066031, 2.7274294) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D14" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1731050516] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.475027, -5.066031, -2.8978524) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D15" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1704489957] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.343237, -5.066031, -3.1424296) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D16" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1994672189] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.506277, -5.066031, 2.9720063) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="LightLevel3" type="Node3D" parent="Lights" unique_id=593657748] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 24.213167, 0) + +[node name="OmniLight3D" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1849026334] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5544157, -2.1126924, 27.90219) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=691708052] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.250671, -2.1126924, 23.147612) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D4" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1166186573] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.520561, -2.1126924, -9.563883) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D5" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=2008819922] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.694098, -2.1126924, -20.977478) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D6" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=588150842] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2640495, -2.1126924, -28.070211) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D7" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1080987600] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.133095, -2.1126924, -28.070211) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D8" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=580549053] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.688046, -2.1126924, -23.17867) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D9" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=639850990] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.514515, -2.1126924, -14.292371) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D10" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=559970503] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.797234, -2.1126924, 8.860925) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D11" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1743215246] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.40009, -2.1126924, 21.334354) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D12" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=814917578] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.4000893, -2.1126924, 27.334354) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1601525784] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.523638, -2.1126924, 14.304096) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D13" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=730066980] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.556553, -5.066031, 2.7274294) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D14" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1530299322] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.475027, -5.066031, -2.8978524) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D15" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1068729638] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.343237, -5.066031, -3.1424296) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D16" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=958960524] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.506277, -5.066031, 2.9720063) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="LightLevel4" type="Node3D" parent="Lights" unique_id=142117256] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 31.95812, 0) + +[node name="OmniLight3D" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1721481718] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5544157, -2.1126924, 27.90219) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=631610076] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.250671, -2.1126924, 23.147612) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D4" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1226751360] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.520561, -2.1126924, -9.563883) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D5" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1200952030] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.694098, -2.1126924, -20.977478) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D6" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1061376340] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2640495, -2.1126924, -28.070211) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D7" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1457730086] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.133095, -2.1126924, -28.070211) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D8" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1189108084] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.688046, -2.1126924, -23.17867) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D9" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1446282714] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.514515, -2.1126924, -14.292371) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D10" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=572630565] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.797234, -2.1126924, 8.860925) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D11" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=452891791] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.40009, -2.1126924, 21.334354) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D12" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1670406469] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.4000893, -2.1126924, 27.334354) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1477089662] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.523638, -2.1126924, 14.304096) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D13" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1821591613] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.556553, -5.066031, 2.7274294) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D14" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=277413158] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.475027, -5.066031, -2.8978524) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D15" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=2012725183] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.343237, -5.066031, -3.1424296) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D16" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=59140504] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.506277, -5.066031, 2.9720063) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="LightLevel5" type="Node3D" parent="Lights" unique_id=525951054] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 40.090714, 0) + +[node name="OmniLight3D13" type="OmniLight3D" parent="Lights/LightLevel5" unique_id=2058425414] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.556553, -5.066031, 2.7274294) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D14" type="OmniLight3D" parent="Lights/LightLevel5" unique_id=1964162867] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.475027, -5.066031, -2.8978524) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D15" type="OmniLight3D" parent="Lights/LightLevel5" unique_id=1968781717] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.343237, -5.066031, -3.1424296) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="OmniLight3D16" type="OmniLight3D" parent="Lights/LightLevel5" unique_id=1720654262] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.506277, -5.066031, 2.9720063) +light_color = Color(0.810676, 0.621579, 0.6067489, 1) +light_energy = 1.5 +light_size = 0.2 +shadow_enabled = true +omni_range = 11.280827 + +[node name="LightColumnLeft" type="Node3D" parent="Lights" unique_id=366580628] + +[node name="OmniLight3D" type="OmniLight3D" parent="Lights/LightColumnLeft" unique_id=33457178] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.076054, 47.19723, 0) +light_color = Color(0.99998575, 0.29117814, 0.45017415, 1) +light_energy = 2.285 +shadow_enabled = true +omni_range = 23.647278 + +[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightColumnLeft" unique_id=1523001666] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.213203, 29.529121, 0) +light_color = Color(0.99998575, 0.29117814, 0.45017415, 1) +light_energy = 2.285 +shadow_enabled = true +omni_range = 55.975483 + +[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightColumnLeft" unique_id=1636195463] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.213203, 10.504702, 0) +light_color = Color(0.99998575, 0.29117814, 0.45017415, 1) +light_energy = 2.285 +shadow_enabled = true +omni_range = 55.975483 + +[node name="LightColumnRight" type="Node3D" parent="Lights" unique_id=736248586] +transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 0, 0, 0) + +[node name="OmniLight3D" type="OmniLight3D" parent="Lights/LightColumnRight" unique_id=291131726] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.076054, 47.19723, 0) +light_color = Color(0.99998575, 0.29117814, 0.45017415, 1) +light_energy = 2.285 +shadow_enabled = true +omni_range = 23.647278 + +[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightColumnRight" unique_id=1200961344] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.213203, 29.529121, 0) +light_color = Color(0.99998575, 0.29117814, 0.45017415, 1) +light_energy = 2.285 +shadow_enabled = true +omni_range = 55.975483 + +[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightColumnRight" unique_id=652563138] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.213203, 10.504702, 0) +light_color = Color(0.99998575, 0.29117814, 0.45017415, 1) +light_energy = 2.285 +shadow_enabled = true +omni_range = 55.975483 + +[node name="ServerRoom" type="Node3D" parent="Lights" unique_id=827961816] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.9412785, -8.026912, -119.36721) + +[node name="OmniLight3D" type="OmniLight3D" parent="Lights/ServerRoom" unique_id=1844581848] +light_color = Color(0.9334627, 0.52057, 0.67796034, 1) +shadow_enabled = true +omni_range = 26.349659 + +[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/ServerRoom" unique_id=2066101397] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 25.241997) +light_color = Color(0.9334627, 0.52057, 0.67796034, 1) +shadow_enabled = true +omni_range = 26.349659 + +[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/ServerRoom" unique_id=549929558] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 42.92135) +light_color = Color(0.9334627, 0.52057, 0.67796034, 1) +shadow_enabled = true +omni_range = 26.349659 + +[node name="OmniLight3D4" type="OmniLight3D" parent="Lights/ServerRoom" unique_id=1196915107] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 61.630135) +light_color = Color(0.9334627, 0.52057, 0.67796034, 1) +shadow_enabled = true +omni_range = 26.349659 + +[node name="SpotLight3D" type="SpotLight3D" parent="Lights/ServerRoom" unique_id=1984749666] +transform = Transform3D(1, 0, 0, 0, -0.037829712, 0.9992842, 0, -0.9992842, -0.037829712, 0, 47.72103, -28.07676) +light_color = Color(0.6902202, 0.87386894, 0.8121308, 1) +light_energy = 9.0 +shadow_enabled = true +spot_range = 95.488 +spot_attenuation = 0.4 +spot_angle = 32.1892 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Lights" unique_id=1792239301] +root_node = NodePath("../../Player3D") +libraries/ = SubResource("AnimationLibrary_c8vcx") +autoplay = &"blink" + +[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1121246225] +environment = SubResource("Environment_fevne") + +[node name="AmbianceChangeDetector" type="Area3D" parent="." unique_id=1401161313] +transform = Transform3D(0.25881904, 0, 0.96592593, 0, 1, 0, -0.96592593, 0, 0.25881904, 2.7012572, -5.600957, -42.815655) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="AmbianceChangeDetector" unique_id=1969356725] +transform = Transform3D(0.9999994, 0, 0, 0, 1, 0, 0, 0, 0.9999994, -9.359516, 0.82910156, 2.9935746) +shape = SubResource("BoxShape3D_c8vcx") + +[node name="Player3D" parent="." unique_id=549819967 instance=ExtResource("3_c8vcx")] +unique_name_in_owner = true +transform = Transform3D(0.25881904, 0, 0.96592593, 0, 1, 0, -0.96592593, 0, 0.25881904, 29.244379, 41.40791, 8.823577) +speed = 5.0 + +[node name="Phone" parent="." unique_id=429299908 instance=ExtResource("4_fevne")] +unique_name_in_owner = true +transform = Transform3D(-0.93482566, 0, 0.35510686, 0, 1, 0, -0.35510686, 0, -0.93482566, 3.7943206, -7.5537004, -130.16013) + +[node name="borea_base" parent="." unique_id=1161090043 instance=ExtResource("4_s7tqr")] + +[node name="Credits" parent="." unique_id=180964898 instance=ExtResource("6_c8vcx")] +unique_name_in_owner = true + +[node name="TrailerCamera" type="Camera3D" parent="." unique_id=649852434] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, -4.3711392e-08, 1, 0, -1, -4.3711392e-08, 0, 60.366375, 0) +near = 0.003 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="TrailerCamera" unique_id=1238675722] +root_node = NodePath("../..") +libraries/ = SubResource("AnimationLibrary_hlox4") +autoplay = &"trailer" + +[node name="MeshInstance3D" type="MeshInstance3D" parent="TrailerCamera" unique_id=1018268636] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.263265e-08, 0, -0.7177747) +mesh = SubResource("QuadMesh_2ei4e") +surface_material_override/0 = ExtResource("7_s7tqr") + +[connection signal="body_entered" from="AmbianceChangeDetector" to="." method="_on_ambiance_change_detector_body_entered"] diff --git a/stages/3d_scenes/end_base/scripts/borea_base.gd b/stages/3d_scenes/end_base/scripts/borea_base.gd new file mode 100644 index 0000000..a16cfb2 --- /dev/null +++ b/stages/3d_scenes/end_base/scripts/borea_base.gd @@ -0,0 +1,22 @@ +extends Node3D + +const OUTRO_TIMELINE_PATH = "res://dialogs/timelines/tutorial/demeter_outro.dtl" + +# Called when the node enters the scene tree for the first time. +func _ready(): + %Credits.hide() + Input.mouse_mode = Input.MOUSE_MODE_CAPTURED + + await %Phone.clicked + Dialogic.start(OUTRO_TIMELINE_PATH) + await Dialogic.timeline_ended + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + %Credits.show() + AudioManager.play_music("Demo_end", false, 5.0) + AudioManager.stop_all_ambiances() + +func _on_ambiance_change_detector_body_entered(body: Node3D): + if body is Player3D: + AudioManager.stop_all_ambiances() + AudioManager.play_music("Demo_end", false, 5.0) + diff --git a/stages/3d_scenes/end_base/scripts/borea_base.gd.uid b/stages/3d_scenes/end_base/scripts/borea_base.gd.uid new file mode 100644 index 0000000..8b1d559 --- /dev/null +++ b/stages/3d_scenes/end_base/scripts/borea_base.gd.uid @@ -0,0 +1 @@ +uid://btc447j47jbx0 diff --git a/stages/terrain/region/assets/empty.png b/stages/terrain/region/assets/empty.png new file mode 100644 index 0000000..c8135f5 Binary files /dev/null and b/stages/terrain/region/assets/empty.png differ diff --git a/stages/terrain/region/assets/empty.png.import b/stages/terrain/region/assets/empty.png.import new file mode 100644 index 0000000..1503069 --- /dev/null +++ b/stages/terrain/region/assets/empty.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://djd5ing64rqk0" +path="res://.godot/imported/empty.png-ff8d2278ab956d3d787ab07e7096aec1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://stages/terrain/region/assets/empty.png" +dest_files=["res://.godot/imported/empty.png-ff8d2278ab956d3d787ab07e7096aec1.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 diff --git a/stages/terrain/region/assets/textures/moss_biome/moss_particle.png b/stages/terrain/region/assets/textures/moss_biome/moss_particle.png new file mode 100644 index 0000000..3a4d818 Binary files /dev/null and b/stages/terrain/region/assets/textures/moss_biome/moss_particle.png differ diff --git a/stages/terrain/region/assets/textures/moss_biome/moss_particle.png.import b/stages/terrain/region/assets/textures/moss_biome/moss_particle.png.import new file mode 100644 index 0000000..3e993e7 --- /dev/null +++ b/stages/terrain/region/assets/textures/moss_biome/moss_particle.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://k2smk66py4uq" +path="res://.godot/imported/moss_particle.png-5ac5ac284abd73e64071d175c4b8d609.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://stages/terrain/region/assets/textures/moss_biome/moss_particle.png" +dest_files=["res://.godot/imported/moss_particle.png-5ac5ac284abd73e64071d175c4b8d609.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 diff --git a/stages/terrain/region/region.tscn b/stages/terrain/region/region.tscn index ae39b68..0ecfbfa 100644 --- a/stages/terrain/region/region.tscn +++ b/stages/terrain/region/region.tscn @@ -20,9 +20,11 @@ [sub_resource type="Resource" id="Resource_r4e5h"] script = ExtResource("3_r4e5h") -cloud_value = 0.93 -wind_direction = Vector2(-0.9519732, -0.30618128) -wind_force = 0.039 +cloud_value = 0.49210685 +wind_direction = Vector2(-0.6777254, 0.7353151) +wind_force = 0.83562934 +fog_value = 0.5362279 +ambiance_name = "ExteriorFoggy" type = 3 [sub_resource type="FastNoiseLite" id="FastNoiseLite_2w03p"] @@ -38,7 +40,7 @@ shader_parameter/camera_position = Vector2(0, 0) shader_parameter/camera_zoom = Vector2(1, 1) shader_parameter/viewport_size = Vector2(1920, 1080) shader_parameter/noise_texture = SubResource("NoiseTexture2D_6d8m3") -shader_parameter/cloud_speed = 0.11699999999999999 +shader_parameter/cloud_speed = 0.117 shader_parameter/cloud_delay = 1.0 shader_parameter/cloud_dir = Vector2(-0.9519732, -0.30618128) shader_parameter/cloud_color = Color(0.59428054, 0.8206175, 0.899937, 1) @@ -209,6 +211,7 @@ script = ExtResource("13_fwgig") camera = NodePath("../../Camera") [node name="Camera" parent="." unique_id=1399042986 node_paths=PackedStringArray("following") instance=ExtResource("8_fwgig")] +unique_name_in_owner = true following = NodePath("../Entities/Player") [node name="WindParticles" type="GPUParticles2D" parent="Camera" unique_id=1897174931] diff --git a/stages/terrain/region/resources/materials/default_chunk_material.tres b/stages/terrain/region/resources/materials/default_chunk_material.tres index 67a0faf..03b2d9c 100644 --- a/stages/terrain/region/resources/materials/default_chunk_material.tres +++ b/stages/terrain/region/resources/materials/default_chunk_material.tres @@ -13,7 +13,6 @@ height = 20 noise = SubResource("FastNoiseLite_kujx0") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_cmstg"] -load_path = "res://.godot/imported/rock_background_texture.png-79a8569ff49f7d85f8b64d55ac1ce62d.ctex" [resource] shader = ExtResource("1_kujx0") diff --git a/stages/terrain/region/resources/materials/ground_contamination.tres b/stages/terrain/region/resources/materials/ground_contamination.tres index ea77bcf..ce9217c 100644 --- a/stages/terrain/region/resources/materials/ground_contamination.tres +++ b/stages/terrain/region/resources/materials/ground_contamination.tres @@ -10,7 +10,6 @@ frequency = 0.0109 noise = SubResource("FastNoiseLite_6hswu") [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_nntr3"] -load_path = "res://.godot/imported/garden_decontamined_background_texture_old.png-951b3e125e8b7083a60c2b7435bce68a.ctex" [resource] shader = ExtResource("1_ye8oh") diff --git a/stages/terrain/region/resources/moss_biome.tres b/stages/terrain/region/resources/moss_biome.tres index ef46795..d334efd 100644 --- a/stages/terrain/region/resources/moss_biome.tres +++ b/stages/terrain/region/resources/moss_biome.tres @@ -4,6 +4,179 @@ [ext_resource type="Texture2D" uid="uid://dr72xhc07i56e" path="res://stages/terrain/region/assets/textures/moss_biome/moss_contamination_atlas_texture.png" id="1_uqnql"] [ext_resource type="Texture2D" uid="uid://dlbdjyqj03gvo" path="res://stages/terrain/region/assets/textures/moss_biome/moss_talion_atlas_texture.png" id="2_fywqu"] [ext_resource type="Texture2D" uid="uid://bi08trir23od2" path="res://stages/terrain/region/assets/textures/red_rect.png" id="4_spfgy"] +[ext_resource type="Texture2D" uid="uid://djd5ing64rqk0" path="res://stages/terrain/region/assets/empty.png" id="5_wwlp4"] + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_d5hne"] +vertices = PackedVector2Array(-24.273438, -24, -24, 32, -32, 32, -32, -32, 32, -32, 24, -24, 32, 32, 24, 32) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(0, 3, 4, 5), PackedInt32Array(5, 4, 6, 7)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, -32, 32, -32, 32, 32, 24, 32, 24, -24, -24.272377, -24, -24, 32, -32, 32)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_lfyrs"] +vertices = PackedVector2Array(-24, 32, -32, 32, -32, -32, -24, -32, 32, 32, 24, 32, 24, -32, 32, -32) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(4, 5, 6, 7)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, -32, 32, -32, 32, 32, 24, 32, 24, -32, -24, -32, -24, 32, -32, 32)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_hl8m2"] +vertices = PackedVector2Array(24, 24, 24, -32, 32, -32, 32, 32, -32, 32, -24, 24, -32, -32, -24, -32) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(0, 3, 4, 5), PackedInt32Array(5, 4, 6, 7)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, -32, -32, 32, 32, 32, 32, -32, 24, -32, 24, 24, -24, 24, -24, -32)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_1ka8d"] +vertices = PackedVector2Array(24, 24, 32, -32, 32, 32, 24, 32, 24, -24, 24, -32, -24, -24, -32, -32, -32, 32, -24, 24) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(1, 0, 4), PackedInt32Array(5, 1, 4, 6), PackedInt32Array(7, 5, 6), PackedInt32Array(8, 7, 6, 9), PackedInt32Array(3, 8, 9, 0)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(32, 32, 32, -32, 24, -32, -32, -32, -32, 32, 24, 32, 24, 24, -24, 24, -24, -24, 24, -24, 24, 32)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_kd3mn"] +vertices = PackedVector2Array(32, -24, -32, -24, -32, -32, 32, -32) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, -32, 32, -32, 32, -24, -32, -24)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_dt08x"] +vertices = PackedVector2Array(32, -32, 32, 32, 24, 32, 24, -24, -32, -32, -32, -24) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(4, 0, 3, 5)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, -32, 32, -32, 32, 32, 24, 32, 24, -24, -32, -24)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_ai561"] +vertices = PackedVector2Array(32, 32, 24, 32, 24, -32, 32, -32) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(32, 32, 32, -32, 24, -32, 24, 32)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_0g2d2"] +vertices = PackedVector2Array(32, 32, -32, 32, -32, 24, 24, 24, 32, -32, 24, -32) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(4, 0, 3, 5)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, 32, 32, 32, 32, -32, 24, -32, 24, 24, -32, 24)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_s7hek"] +vertices = PackedVector2Array(-24.273438, -24, -24, 32, -32, 32, -32, -32, 32, -32, 32, -24) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(0, 3, 4, 5)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, -32, 32, -32, 32, -24, -24.272377, -24, -24, 32, -32, 32)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_rsjga"] +vertices = PackedVector2Array(-24, 32, -32, 32, -32, -32, -24, -32) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, -32, -24, -32, -24, 32, -32, 32)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_fdxnc"] +vertices = PackedVector2Array(-24, 24, 32, 24, 32, 32, -32, 32, -32, -32, -24, -32) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(0, 3, 4, 5)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, -32, -24, -32, -24, 24, 32, 24, 32, 32, -32, 32)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_wfpa5"] +vertices = PackedVector2Array(32, -32, 32, -24, -24.273438, -24, -32, -32, -32, 32, -24, 24, 32, 32, 32, 24) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(4, 3, 2, 5), PackedInt32Array(6, 4, 5, 7)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, -32, 32, -32, 32, -24, -24.272377, -24, -24, 24, 32, 24, 32, 32, -32, 32)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_38nby"] +vertices = PackedVector2Array(32, -24, -32, -24, -32, -32, 32, -32) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, -32, 32, -32, 32, -24, -32, -24)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_6nyek"] +vertices = PackedVector2Array(32, 32, -32, 32, -32, 24, 32, 24) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, 32, 32, 32, 32, 24, -32, 24)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_0u8fn"] +vertices = PackedVector2Array(32, 32, -32, 32, -32, 24, 32, 24, 32, -24, -32, -24, -32, -32, 32, -32) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(4, 5, 6, 7)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32, -32, 24, 32, 24, 32, -24, -32, -24)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_53wg5"] +vertices = PackedVector2Array(32, -32, 32, 32, 24, 32, 24, -24, -32, -32, -32, -24) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(4, 0, 3, 5)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, -32, 32, -32, 32, 32, 24, 32, 24, -24, -32, -24)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_w5wko"] +vertices = PackedVector2Array(32, 32, 24, 32, 24, -32, 32, -32) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(32, 32, 32, -32, 24, -32, 24, 32)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_omx72"] +vertices = PackedVector2Array(32, 32, -32, 32, -32, 24, 24, 24, 32, -32, 24, -32) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(4, 0, 3, 5)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, 32, 32, 32, 32, -32, 24, -32, 24, 24, -32, 24)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_ei338"] +vertices = PackedVector2Array(32, 32, -32, 32, -32, 24, 24, 24, 32, -32, 24, -24, -32, -32, -32, -24) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(4, 0, 3, 5), PackedInt32Array(6, 4, 5, 7)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32, -32, 24, 24, 24, 24, -24, -32, -24)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_nr1fe"] + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_0g1o1"] +vertices = PackedVector2Array(-24, 32, -32, 32, -32, -32, -24, -32) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, -32, -24, -32, -24, 32, -32, 32)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_yh1lj"] + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_g61rk"] +vertices = PackedVector2Array(32, -24, -32, -24, -32, -32, 32, -32) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, -32, 32, -32, 32, -24, -32, -24)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_i0yy6"] +vertices = PackedVector2Array(32, 32, -32, 32, -32, 24, 32, 24) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, 32, 32, 32, 32, 24, -32, 24)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_5vo1o"] +vertices = PackedVector2Array(32, -24, -32, -24, -32, -32, 32, -32) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, -32, 32, -32, 32, -24, -32, -24)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_pykno"] +vertices = PackedVector2Array(32, 32, 24, 32, 24, -32, 32, -32) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(32, 32, 32, -32, 24, -32, 24, 32)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_fv1hs"] +vertices = PackedVector2Array(-24.273438, -24, -24, 32, -32, 32, -32, -32, 32, -32, 32, -24) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(0, 3, 4, 5)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, -32, 32, -32, 32, -24, -24.272377, -24, -24, 32, -32, 32)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_nj7v8"] +vertices = PackedVector2Array(-24, 32, -32, 32, -32, -32, -24, -32) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, -32, -24, -32, -24, 32, -32, 32)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_k1gnd"] +vertices = PackedVector2Array(-24, 24, 32, 24, 32, 32, -32, 32, -32, -32, -24, -32) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(0, 3, 4, 5)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, -32, -24, -32, -24, 24, 32, 24, 32, 32, -32, 32)]) +agent_radius = 0.0 + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_3cip6"] +vertices = PackedVector2Array(32, 32, -32, 32, -32, 24, 32, 24) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, 32, 32, 32, 32, 24, -32, 24)]) +agent_radius = 0.0 [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_4i8c6"] resource_name = "Rock" @@ -12,14 +185,16 @@ texture_region_size = Vector2i(64, 64) 0:0/0 = 0 0:0/0/terrain_set = 0 0:0/0/terrain = 1 -0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 0, 0, -16, 16, 0, 16, 32, -16, 32) +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 0, 0, 16, 16, 16, 32, -16, 32) 0:0/0/terrains_peering_bit/bottom_side = 1 +0:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_d5hne") 1:0/0 = 0 1:0/0/terrain_set = 0 1:0/0/terrain = 1 -1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(32, -16, 32, 16, 16, 32, -16, 32, -16, 0, 0, -16) +1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(32, -16, 32, 16, 16, 32, -16, 32, -16, 16, 16, -16) 1:0/0/terrains_peering_bit/right_side = 1 1:0/0/terrains_peering_bit/bottom_side = 1 +1:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_s7hek") 2:0/0 = 0 2:0/0/terrain_set = 0 2:0/0/terrain = 1 @@ -27,12 +202,14 @@ texture_region_size = Vector2i(64, 64) 2:0/0/terrains_peering_bit/right_side = 1 2:0/0/terrains_peering_bit/bottom_side = 1 2:0/0/terrains_peering_bit/left_side = 1 +2:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_38nby") 3:0/0 = 0 3:0/0/terrain_set = 0 3:0/0/terrain = 1 -3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, 0, -16, 16, 0, 16, 32, -16, 32, -32, 16) +3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, -16, -16, 16, 16, 16, 32, -16, 32, -32, 16) 3:0/0/terrains_peering_bit/bottom_side = 1 3:0/0/terrains_peering_bit/left_side = 1 +3:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_53wg5") 4:0/0 = 0 4:0/0/terrain_set = 0 4:0/0/terrain = 1 @@ -42,6 +219,7 @@ texture_region_size = Vector2i(64, 64) 4:0/0/terrains_peering_bit/left_side = 1 4:0/0/terrains_peering_bit/top_left_corner = 1 4:0/0/terrains_peering_bit/top_side = 1 +4:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_nr1fe") 5:0/0 = 0 5:0/0/terrain_set = 0 5:0/0/terrain = 1 @@ -50,6 +228,7 @@ texture_region_size = Vector2i(64, 64) 5:0/0/terrains_peering_bit/bottom_right_corner = 1 5:0/0/terrains_peering_bit/bottom_side = 1 5:0/0/terrains_peering_bit/left_side = 1 +5:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_g61rk") 6:0/0 = 0 6:0/0/terrain_set = 0 6:0/0/terrain = 1 @@ -58,6 +237,7 @@ texture_region_size = Vector2i(64, 64) 6:0/0/terrains_peering_bit/bottom_side = 1 6:0/0/terrains_peering_bit/bottom_left_corner = 1 6:0/0/terrains_peering_bit/left_side = 1 +6:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_5vo1o") 7:0/0 = 0 7:0/0/terrain_set = 0 7:0/0/terrain = 1 @@ -70,10 +250,11 @@ texture_region_size = Vector2i(64, 64) 8:0/0 = 0 8:0/0/terrain_set = 0 8:0/0/terrain = 1 -8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 0, 0, -16, 32, -16, 32, 32, -16, 32) +8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 16, 16, -16, 32, -16, 32, 32, -16, 32) 8:0/0/terrains_peering_bit/right_side = 1 8:0/0/terrains_peering_bit/bottom_right_corner = 1 8:0/0/terrains_peering_bit/bottom_side = 1 +8:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_fv1hs") 9:0/0 = 0 9:0/0/terrain_set = 0 9:0/0/terrain = 1 @@ -93,19 +274,22 @@ texture_region_size = Vector2i(64, 64) 10:0/0/terrains_peering_bit/bottom_side = 1 10:0/0/terrains_peering_bit/bottom_left_corner = 1 10:0/0/terrains_peering_bit/left_side = 1 +10:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_kd3mn") 11:0/0 = 0 11:0/0/terrain_set = 0 11:0/0/terrain = 1 -11:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, 0, -16, 16, 0, 16, 32, -32, 32) +11:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, -16, -16, 16, 16, 16, 32, -32, 32) 11:0/0/terrains_peering_bit/bottom_side = 1 11:0/0/terrains_peering_bit/bottom_left_corner = 1 11:0/0/terrains_peering_bit/left_side = 1 +11:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_dt08x") 0:1/0 = 0 0:1/0/terrain_set = 0 0:1/0/terrain = 1 0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -32, 16, -32, 16, 32, -16, 32) 0:1/0/terrains_peering_bit/bottom_side = 1 0:1/0/terrains_peering_bit/top_side = 1 +0:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_lfyrs") 1:1/0 = 0 1:1/0/terrain_set = 0 1:1/0/terrain = 1 @@ -113,6 +297,7 @@ texture_region_size = Vector2i(64, 64) 1:1/0/terrains_peering_bit/right_side = 1 1:1/0/terrains_peering_bit/bottom_side = 1 1:1/0/terrains_peering_bit/top_side = 1 +1:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_rsjga") 2:1/0 = 0 2:1/0/terrain_set = 0 2:1/0/terrain = 1 @@ -128,6 +313,7 @@ texture_region_size = Vector2i(64, 64) 3:1/0/terrains_peering_bit/bottom_side = 1 3:1/0/terrains_peering_bit/left_side = 1 3:1/0/terrains_peering_bit/top_side = 1 +3:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_w5wko") 4:1/0 = 0 4:1/0/terrain_set = 0 4:1/0/terrain = 1 @@ -136,6 +322,7 @@ texture_region_size = Vector2i(64, 64) 4:1/0/terrains_peering_bit/bottom_right_corner = 1 4:1/0/terrains_peering_bit/bottom_side = 1 4:1/0/terrains_peering_bit/top_side = 1 +4:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_0g1o1") 5:1/0 = 0 5:1/0/terrain_set = 0 5:1/0/terrain = 1 @@ -166,6 +353,7 @@ texture_region_size = Vector2i(64, 64) 7:1/0/terrains_peering_bit/bottom_left_corner = 1 7:1/0/terrains_peering_bit/left_side = 1 7:1/0/terrains_peering_bit/top_side = 1 +7:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_pykno") 8:1/0 = 0 8:1/0/terrain_set = 0 8:1/0/terrain = 1 @@ -175,6 +363,7 @@ texture_region_size = Vector2i(64, 64) 8:1/0/terrains_peering_bit/bottom_side = 1 8:1/0/terrains_peering_bit/top_side = 1 8:1/0/terrains_peering_bit/top_right_corner = 1 +8:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_nj7v8") 9:1/0 = 0 9:1/0/terrain_set = 0 9:1/0/terrain = 1 @@ -198,14 +387,16 @@ texture_region_size = Vector2i(64, 64) 0:2/0 = 0 0:2/0/terrain_set = 0 0:2/0/terrain = 1 -0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -32, 16, -32, 16, 0, -0.564476, 16, -16, 0) +0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -32, 16, -32, 16, -16, 0, 0, -16, -16) 0:2/0/terrains_peering_bit/top_side = 1 +0:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_hl8m2") 1:2/0 = 0 1:2/0/terrain_set = 0 1:2/0/terrain = 1 -1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -32, 16, -32, 32, -16, 32, 16, 0, 16, -16, 0) +1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -32, 16, -32, 32, -16, 32, 16, 16, 16, -16, -16) 1:2/0/terrains_peering_bit/right_side = 1 1:2/0/terrains_peering_bit/top_side = 1 +1:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_fdxnc") 2:2/0 = 0 2:2/0/terrain_set = 0 2:2/0/terrain = 1 @@ -213,12 +404,14 @@ texture_region_size = Vector2i(64, 64) 2:2/0/terrains_peering_bit/right_side = 1 2:2/0/terrains_peering_bit/left_side = 1 2:2/0/terrains_peering_bit/top_side = 1 +2:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_6nyek") 3:2/0 = 0 3:2/0/terrain_set = 0 3:2/0/terrain = 1 -3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, -16, -32, 16, -32, 16, 0, 0, 16, -32, 16) +3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, -16, -32, 16, -32, 16, -16, -16, 16, -32, 16) 3:2/0/terrains_peering_bit/left_side = 1 3:2/0/terrains_peering_bit/top_side = 1 +3:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_omx72") 4:2/0 = 0 4:2/0/terrain_set = 0 4:2/0/terrain = 1 @@ -227,6 +420,7 @@ texture_region_size = Vector2i(64, 64) 4:2/0/terrains_peering_bit/bottom_side = 1 4:2/0/terrains_peering_bit/top_side = 1 4:2/0/terrains_peering_bit/top_right_corner = 1 +4:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_0g1o1") 5:2/0 = 0 5:2/0/terrain_set = 0 5:2/0/terrain = 1 @@ -257,6 +451,7 @@ texture_region_size = Vector2i(64, 64) 7:2/0/terrains_peering_bit/left_side = 1 7:2/0/terrains_peering_bit/top_left_corner = 1 7:2/0/terrains_peering_bit/top_side = 1 +7:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_pykno") 8:2/0 = 0 8:2/0/terrain_set = 0 8:2/0/terrain = 1 @@ -298,26 +493,31 @@ texture_region_size = Vector2i(64, 64) 11:2/0/terrains_peering_bit/left_side = 1 11:2/0/terrains_peering_bit/top_left_corner = 1 11:2/0/terrains_peering_bit/top_side = 1 +11:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ai561") 0:3/0 = 0 0:3/0/terrain_set = 0 0:3/0/terrain = 1 0:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, 0, 0, -16, 16, 0, 0, 16) +0:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_1ka8d") 1:3/0 = 0 1:3/0/terrain_set = 0 1:3/0/terrain = 1 -1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(0, -16, 32, -16, 32, 16, 0, 16, -16, 0) +1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -16, 32, -16, 32, 16, 16, 16, 0, 0) 1:3/0/terrains_peering_bit/right_side = 1 +1:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_wfpa5") 2:3/0 = 0 2:3/0/terrain_set = 0 2:3/0/terrain = 1 2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, 32, -16, 32, 16, -32, 16) 2:3/0/terrains_peering_bit/right_side = 1 2:3/0/terrains_peering_bit/left_side = 1 +2:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_0u8fn") 3:3/0 = 0 3:3/0/terrain_set = 0 3:3/0/terrain = 1 -3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, 0, -16, 16, 0, 0, 16, -32, 16) +3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, -16, -16, 0, 0, -16, 16, -32, 16) 3:3/0/terrains_peering_bit/left_side = 1 +3:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ei338") 4:3/0 = 0 4:3/0/terrain_set = 0 4:3/0/terrain = 1 @@ -327,6 +527,7 @@ texture_region_size = Vector2i(64, 64) 4:3/0/terrains_peering_bit/bottom_left_corner = 1 4:3/0/terrains_peering_bit/left_side = 1 4:3/0/terrains_peering_bit/top_side = 1 +4:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_yh1lj") 5:3/0 = 0 5:3/0/terrain_set = 0 5:3/0/terrain = 1 @@ -335,6 +536,7 @@ texture_region_size = Vector2i(64, 64) 5:3/0/terrains_peering_bit/left_side = 1 5:3/0/terrains_peering_bit/top_side = 1 5:3/0/terrains_peering_bit/top_right_corner = 1 +5:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_i0yy6") 6:3/0 = 0 6:3/0/terrain_set = 0 6:3/0/terrain = 1 @@ -343,6 +545,7 @@ texture_region_size = Vector2i(64, 64) 6:3/0/terrains_peering_bit/left_side = 1 6:3/0/terrains_peering_bit/top_left_corner = 1 6:3/0/terrains_peering_bit/top_side = 1 +6:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_i0yy6") 7:3/0 = 0 7:3/0/terrain_set = 0 7:3/0/terrain = 1 @@ -355,10 +558,11 @@ texture_region_size = Vector2i(64, 64) 8:3/0 = 0 8:3/0/terrain_set = 0 8:3/0/terrain = 1 -8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -32, 32, -32, 32, 16, 0, 16, -16, 0) +8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -32, 32, -32, 32, 16, 16, 16, -16, -16) 8:3/0/terrains_peering_bit/right_side = 1 8:3/0/terrains_peering_bit/top_side = 1 8:3/0/terrains_peering_bit/top_right_corner = 1 +8:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_k1gnd") 9:3/0 = 0 9:3/0/terrain_set = 0 9:3/0/terrain = 1 @@ -368,6 +572,7 @@ texture_region_size = Vector2i(64, 64) 9:3/0/terrains_peering_bit/top_left_corner = 1 9:3/0/terrains_peering_bit/top_side = 1 9:3/0/terrains_peering_bit/top_right_corner = 1 +9:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_3cip6") 10:3/0 = 0 10:3/0/terrain_set = 0 10:3/0/terrain = 1 @@ -381,10 +586,11 @@ texture_region_size = Vector2i(64, 64) 11:3/0 = 0 11:3/0/terrain_set = 0 11:3/0/terrain = 1 -11:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 16, -32, 16, 0, 0, 16, -32, 16) +11:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 16, -32, 16, -16, -16, 16, -32, 16) 11:3/0/terrains_peering_bit/left_side = 1 11:3/0/terrains_peering_bit/top_left_corner = 1 11:3/0/terrains_peering_bit/top_side = 1 +11:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_0g2d2") 10:1/0 = 0 10:1/0/terrain_set = 0 10:1/0/terrain = 1 @@ -1137,13 +1343,28 @@ texture_region_size = Vector2i(64, 64) 11:3/0/terrains_peering_bit/top_side = 0 [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_3g8t4"] -resource_name = "ground" +resource_name = "Ground" texture = ExtResource("4_spfgy") texture_region_size = Vector2i(64, 64) 0:0/0 = 0 0:0/0/terrain_set = 0 0:0/0/terrain = 3 +[sub_resource type="NavigationPolygon" id="NavigationPolygon_wwlp4"] +vertices = PackedVector2Array(32, 32, -32, 32, -32, -32, 32, -32) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32), PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32)]) +agent_radius = 0.0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_yh1lj"] +resource_name = "Empty" +texture = ExtResource("5_wwlp4") +texture_region_size = Vector2i(64, 64) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrain = 4 +0:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_wwlp4") + [resource] tile_size = Vector2i(64, 64) physics_layer_0/collision_layer = 1 @@ -1156,7 +1377,11 @@ terrain_set_0/terrain_2/name = "Cristal" terrain_set_0/terrain_2/color = Color(0.48793238, 0.38601816, 0.8285951, 1) terrain_set_0/terrain_3/name = "Ground" terrain_set_0/terrain_3/color = Color(0.375, 0.5, 0.25, 1) +terrain_set_0/terrain_4/name = "Walkable" +terrain_set_0/terrain_4/color = Color(0.28125, 0.5, 0.25, 1) +navigation_layer_0/layers = 1 sources/2 = SubResource("TileSetAtlasSource_aw22q") sources/0 = SubResource("TileSetAtlasSource_4i8c6") sources/1 = SubResource("TileSetAtlasSource_spfgy") sources/3 = SubResource("TileSetAtlasSource_3g8t4") +sources/4 = SubResource("TileSetAtlasSource_yh1lj") diff --git a/stages/terrain/region/scripts/chunk.gd b/stages/terrain/region/scripts/chunk.gd index b9ef698..b76f16b 100644 --- a/stages/terrain/region/scripts/chunk.gd +++ b/stages/terrain/region/scripts/chunk.gd @@ -6,7 +6,7 @@ const GENERATION_NUMBER = 4 const NOISE_IMAGE_SIZE := 150 const MAX_DECONTAMINATION_DISTANCE=0 -const MAX_TALION_DISTANCE=2 +const MAX_TALION_DISTANCE=3 const RANDOM_PADDING_NOISE_FREQUENCY := 0.01 const ROCK_NOISE_FREQUENCY := 0.005 @@ -15,6 +15,8 @@ const DECONTAMINATION_NOISE_FREQUENCY := 0.008 const CHUNK_RANDOM_PADDING := 1 +signal generated + @export var region_data : RegionData @export var chunk_coord : Vector2i @@ -95,8 +97,12 @@ func generate(): add_child.call_deferred(ground_layer) add_child.call_deferred(decontamination_layer) + call_deferred("emit_generated") is_generated = true +func emit_generated(): + generated.emit() + func calculate_all_tiles() -> Array[Vector2i]: var coords : Array[Vector2i] = [] @@ -197,15 +203,19 @@ func get_tile_value_from_noise(tile_position : Vector2i, noise : Noise) -> float func generate_rocks(layer : RockLayer): var cristals : Array[Vector2i] = [] var rocks : Array[Vector2i] = [] + var emptys : Array[Vector2i] = [] for coord in all_tiles: var tile_type := get_generated_rock_type(coord) if tile_type == RockLayer.TileType.CRISTAL: cristals.append(coord) elif tile_type == RockLayer.TileType.ROCK: rocks.append(coord) + else: + emptys.append(coord) layer.place_rocks(cristals, RockLayer.TileType.CRISTAL) layer.place_rocks(rocks, RockLayer.TileType.ROCK) + layer.place_empty(emptys) func get_generated_rock_type(coord : Vector2i) -> RockLayer.TileType: var rock_tile_value : float = ( diff --git a/stages/terrain/region/scripts/modifiers/cave_modifier.gd b/stages/terrain/region/scripts/modifiers/cave_modifier.gd new file mode 100644 index 0000000..6280a96 --- /dev/null +++ b/stages/terrain/region/scripts/modifiers/cave_modifier.gd @@ -0,0 +1,25 @@ +extends RegionModifier +class_name CaveModifier + +func get_modifier_name() -> String: + return tr("CRISTAL_CAVE") + +func get_description() -> String: + return tr("CRISTAL_CAVE_MODIFIER_DESC_TEXT") + +func get_icon() -> Texture: + return preload("res://common/icons/cristal.svg") + +func get_card_section_color() -> Color: + return Color("25c147") + +func region_ready(region : Region) -> void: + var new_cave_door = generate_door( + tr("CRISTAL_CAVE"), + tr("CRISTAL_CAVE_DOOR_DESC_TEXT") + ) + new_cave_door.to_scene = CaveScene.new(new_cave_door.door_id) + new_cave_door.available = region.data.completed_doors.find(new_cave_door.door_id) == -1 + + region.add_entity(new_cave_door) + region.random_move_object(new_cave_door,Region.DOORS_RANDOM_MOVEMENT) diff --git a/stages/terrain/region/scripts/modifiers/cave_modifier.gd.uid b/stages/terrain/region/scripts/modifiers/cave_modifier.gd.uid new file mode 100644 index 0000000..4e5660c --- /dev/null +++ b/stages/terrain/region/scripts/modifiers/cave_modifier.gd.uid @@ -0,0 +1 @@ +uid://d3g06x6sagcc5 diff --git a/stages/terrain/region/scripts/modifiers/contaminated_modifier.gd b/stages/terrain/region/scripts/modifiers/contaminated_modifier.gd index 1f0a982..fbf9868 100644 --- a/stages/terrain/region/scripts/modifiers/contaminated_modifier.gd +++ b/stages/terrain/region/scripts/modifiers/contaminated_modifier.gd @@ -13,8 +13,8 @@ func get_icon() -> Texture: func get_card_section_color() -> Color: return Color("8b2dffff") -func modify_plant_seed_random_loose(plant_seed_random_loose : int) -> int: - return plant_seed_random_loose + 1 +# func modify_plant_seed_random_loose(plant_seed_random_loose : int) -> int: +# return plant_seed_random_loose + 1 func modify_plant_seed_number(plant_seed_number : int) -> int: return plant_seed_number - 1 \ No newline at end of file diff --git a/stages/terrain/region/scripts/modifiers/magnetic_modifier.gd b/stages/terrain/region/scripts/modifiers/magnetic_modifier.gd new file mode 100644 index 0000000..9ad177b --- /dev/null +++ b/stages/terrain/region/scripts/modifiers/magnetic_modifier.gd @@ -0,0 +1,17 @@ +extends RegionModifier +class_name MagneticModifier + +func get_modifier_name() -> String: + return tr("MAGNETIC") + +func get_description() -> String: + return tr("MAGNETIC_MODIFIER_DESC_TEXT") + +func get_icon() -> Texture: + return preload("res://common/icons/magnet.svg") + +func modify_objective(objective : int) -> int: + return roundi(float(objective) / 2) + +func modify_charge(charge : int) -> int: + return roundi(float(charge) / 2) \ No newline at end of file diff --git a/stages/terrain/region/scripts/modifiers/magnetic_modifier.gd.uid b/stages/terrain/region/scripts/modifiers/magnetic_modifier.gd.uid new file mode 100644 index 0000000..3ec4918 --- /dev/null +++ b/stages/terrain/region/scripts/modifiers/magnetic_modifier.gd.uid @@ -0,0 +1 @@ +uid://3mu4qmgpyg6s diff --git a/stages/terrain/region/scripts/modifiers/tutorial_modifier.gd b/stages/terrain/region/scripts/modifiers/tutorial_modifier.gd index cbb6c64..5f7b975 100644 --- a/stages/terrain/region/scripts/modifiers/tutorial_modifier.gd +++ b/stages/terrain/region/scripts/modifiers/tutorial_modifier.gd @@ -12,9 +12,15 @@ func get_description() -> String: func get_icon() -> Texture: return preload("res://common/icons/help-hexagon.svg") +func modify_seed_rarity_pool(_seed_rarity_pool : Array[int]) -> Array[int]: + return [-1] + func modify_charge(charge : int) -> int: return charge+10 +func modify_mutation_probability(_plant_mutation_probability) -> float: + return 1. + func get_card_section_color() -> Color: return Color("25c147") diff --git a/stages/terrain/region/scripts/post_process/clouds.gd b/stages/terrain/region/scripts/post_process/clouds.gd index 45c4c87..9da2373 100644 --- a/stages/terrain/region/scripts/post_process/clouds.gd +++ b/stages/terrain/region/scripts/post_process/clouds.gd @@ -1,6 +1,6 @@ extends ColorRect -@export var camera : Camera +@export var camera : RegionCamera @export var region : Region const PASSING_DAY_CLOUD_SPEED = 1 diff --git a/stages/terrain/region/scripts/post_process/meteo.gd b/stages/terrain/region/scripts/post_process/meteo.gd index 0b2d6b2..b3f7fc2 100644 --- a/stages/terrain/region/scripts/post_process/meteo.gd +++ b/stages/terrain/region/scripts/post_process/meteo.gd @@ -39,28 +39,21 @@ func generate(): generate_windy() func generate_calm() -> void: - print("generate_calm") cloud_value = rng.randf_range(0.1,0.4) wind_force = rng.randf_range(0.,0.2) ambiance_name = "Exterior" func generate_rainy() -> void: - print("generate_rainy") rain_value = rng.randf_range(0.3,1.) cloud_value = rng.randf_range(0.5,0.9) ambiance_name = "ExteriorRaining" - if rng.randi() % 2 == 0: - wind_force = rng.randf_range(0.,0.7) - else: - fog_value = max(0, 0.5) + wind_force = rng.randf_range(0.,0.5) func generate_foggy() -> void: - print("generate_foggy") fog_value = rng.randf_range(0.5,1.) ambiance_name = "ExteriorFoggy" func generate_windy() -> void: - print("generate_windy") cloud_value = rng.randf_range(0.2,0.5) wind_force = rng.randf_range(0.8,1.) ambiance_name = "ExteriorWindy" \ No newline at end of file diff --git a/stages/terrain/region/scripts/post_process/rain.gd b/stages/terrain/region/scripts/post_process/rain.gd index 284e71f..c8963f8 100644 --- a/stages/terrain/region/scripts/post_process/rain.gd +++ b/stages/terrain/region/scripts/post_process/rain.gd @@ -1,6 +1,6 @@ extends GPUParticles2D -@export var camera : Camera +@export var camera : RegionCamera # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(_d): diff --git a/stages/terrain/region/scripts/region.gd b/stages/terrain/region/scripts/region.gd index bfeb118..0e27589 100644 --- a/stages/terrain/region/scripts/region.gd +++ b/stages/terrain/region/scripts/region.gd @@ -3,7 +3,7 @@ class_name Region const MIN_PASS_DAY_ANIMATION_TIME : float = PassDay.TIME_MARGIN * 2 -const TUTORIAL_SCENE : PackedScene = preload("res://gui/game/tutorial/tutorial.tscn") +const WIN_WAVE_SCENE : PackedScene = preload("res://stages/terrain/region/win_wave.tscn") const TILE_SET : TileSet = preload("res://stages/terrain/region/resources/moss_biome.tres") const TILE_SCALE = 1 @@ -35,6 +35,7 @@ var generated_chunks : Array[Chunk] = [] var generation_semaphore : Semaphore @onready var recharge_station : TruckRecharge = %RechargeStation +@onready var camera : RegionCamera = %Camera # Cheat Code func _input(_e): @@ -46,7 +47,7 @@ func _input(_e): ): data.succeded.emit() data.state = RegionData.State.SUCCEEDED - data.update() + # data.update() if ( Input.is_action_pressed("drop") @@ -86,6 +87,8 @@ func _ready(): GameInfo.game_data.player_data.inventory.add_item(Pickaxe.new()) GameInfo.game_data.player_data.inventory.add_item(Fork.new()) GameInfo.game_data.player_data.inventory.add_item(ShipPortal.new()) + + data.succeded.connect(finishing_region_animation) func _process(_d): if player: @@ -169,7 +172,7 @@ func random_move_object( rng.randf_range(-random_movement,random_movement) ) + offset - dig_hole(object.position, 5) + dig_hole(object.global_position, 100) func is_chunk_generated(coord : Vector2i): return generated_chunks.find_custom( @@ -244,10 +247,20 @@ func is_coords_decontaminated(tiles_coords : Array[Vector2i]): return false return true +func is_coords_rocky(tiles_coords : Array[Vector2i]): + for coord in tiles_coords: + var chunk : Chunk = get_chunk_for_coord(coord) + if chunk: + var local_coord := TilesDiffData.get_local_coord(coord, chunk.chunk_coord) + print(chunk.rock_layer.get_tile_type(local_coord)) + if chunk.rock_layer.get_tile_type(local_coord) != RockLayer.TileType.EMPTY: + return false + return true + func dig_rocks(tiles_coords : Array[Vector2i], save_tiles_diff := true, loot := true): if save_tiles_diff : data.rock_tiles_data.update_tiles_diff(tiles_coords, TilesDiffData.TileDiff.ABSENT) - + for coord in tiles_coords: var chunk : Chunk = get_chunk_for_coord(coord) if chunk: @@ -259,17 +272,11 @@ func dig_rocks(tiles_coords : Array[Vector2i], save_tiles_diff := true, loot := chunk.rock_layer.remove_rocks([local_coord]) func dig_hole(game_pos: Vector2, size : int): - var hole_tiles : Array[Vector2i] = [] - var tile_position := Vector2i( - roundi(game_pos.x/float(Region.TILE_SIZE)), - roundi(game_pos.y/float(Region.TILE_SIZE)) + var hole_tiles : Array[Vector2i] = Math.get_tiles_in_circle( + game_pos, + size ) - for x in range(-size, size): - for y in range(-size, size): - var coord = Vector2i(x,y) - if coord.distance_to(Vector2.ZERO) < size: - hole_tiles.append(coord + tile_position) - dig_rocks(hole_tiles,false,false) + dig_rocks(hole_tiles,true,false) func loot_talion(coord : Vector2i): var new_seed = Seed.generate_random(data.seed_rarity_pool.pick_random()) @@ -283,14 +290,27 @@ func decontaminate(tiles_coords : Array[Vector2i], save_tiles_diff := true): if save_tiles_diff : data.decontamination_tiles_data.update_tiles_diff(tiles_coords, TilesDiffData.TileDiff.PRESENT) + var coord_to_update : Dictionary = {} + for coord in tiles_coords: var chunk : Chunk = get_chunk_for_coord(coord) if chunk: var local_coord := TilesDiffData.get_local_coord(coord, chunk.chunk_coord) - chunk.decontamination_layer.place_decontamination(local_coord) + if not chunk in coord_to_update.keys(): + coord_to_update[chunk] = [] as Array[Vector2i] + + coord_to_update[chunk].append(local_coord) + + for chunk in coord_to_update.keys(): + var coords : Array[Vector2i] = coord_to_update[chunk] as Array[Vector2i] + chunk.decontamination_layer.place_decontaminations(coords) func finishing_region_animation(): - pass #TODO + var win_wave := WIN_WAVE_SCENE.instantiate() as WinWave + add_entity(win_wave) + win_wave.started_time = 0. + win_wave.position = player.position + win_wave.region = self #endregion diff --git a/stages/terrain/region/scripts/region_data.gd b/stages/terrain/region/scripts/region_data.gd index c492b63..a9ef114 100644 --- a/stages/terrain/region/scripts/region_data.gd +++ b/stages/terrain/region/scripts/region_data.gd @@ -11,8 +11,6 @@ signal pass_day_started(region_data : RegionData) signal pass_day_proceeded(region_data : RegionData) signal pass_day_ended(region_data : RegionData) -const DEFAULT_START_CHARGE := 10 -const DEFAULT_OBJECTIVE := 10 const MAX_RANDOM_SPAWN_DISTANCE = 3000 const START_ROCK_HOLE_RADIUS = 5 const PLAYER_ROCK_HOLE_RADIUS = 5 diff --git a/stages/terrain/region/scripts/region_parameter.gd b/stages/terrain/region/scripts/region_parameter.gd index 29e6ced..eb5acfe 100644 --- a/stages/terrain/region/scripts/region_parameter.gd +++ b/stages/terrain/region/scripts/region_parameter.gd @@ -2,14 +2,15 @@ extends Resource class_name RegionParameter const DEFAULT_ROCK_THRESHOLD = 0.3 -const DEFAULT_DECONTAMINATION_THRESHOLD = 0.4 +const DEFAULT_DECONTAMINATION_THRESHOLD = 0.5 const DEFAULT_CRISTAL_THRESHOLD = 0.1 const DEFAULT_CHARGE = 8 const DEFAULT_START_DECONTAMINATION_ZONE_RADIUS = 3 -const DEFAULT_SEED_RARITY_POOL: Array[int] = [0,0,0,0,0,0,0,1,1,1] +const DEFAULT_SEED_RARITY_POOL: Array[int] = [-1,-1,-1,-1,0,0,0,0,1,1] @export var region_name : String @export var objective : int +@export var charge : int @export var region_seed : int @export var modifiers : Array[RegionModifier] @@ -45,15 +46,13 @@ func is_objective_disabled() -> bool: var d = false for m in modifiers: - print(m.modifier_name) - print(m.disable_objective()) if m.disable_objective(): d = true return d func get_charge() -> int: - var c = DEFAULT_CHARGE + var c = charge for m in modifiers: c = m.modify_charge(c) diff --git a/stages/terrain/region/scripts/screen_post_process.gd b/stages/terrain/region/scripts/screen_post_process.gd index ea02c30..7867bf6 100644 --- a/stages/terrain/region/scripts/screen_post_process.gd +++ b/stages/terrain/region/scripts/screen_post_process.gd @@ -1,9 +1,6 @@ extends ColorRect -@export var camera : Camera - - - +@export var camera : RegionCamera func _process(_delta: float) -> void: if is_node_ready(): diff --git a/stages/terrain/region/scripts/tile_map_layers/decontamination_layer.gd b/stages/terrain/region/scripts/tile_map_layers/decontamination_layer.gd index cd2642b..89f3649 100644 --- a/stages/terrain/region/scripts/tile_map_layers/decontamination_layer.gd +++ b/stages/terrain/region/scripts/tile_map_layers/decontamination_layer.gd @@ -11,7 +11,7 @@ func setup(): func place_decontamination(coord : Vector2i, save = false): place_decontaminations([coord], save) -func place_decontaminations(coords : Array[Vector2i], _save := false): +func place_decontaminations(coords : Array, _save := false): place_terrain_cells( coords, DECONTAMINATION_TILE_TERRAIN_SET, diff --git a/stages/terrain/region/scripts/tile_map_layers/region_layer.gd b/stages/terrain/region/scripts/tile_map_layers/region_layer.gd index 6ed871b..7d216c4 100644 --- a/stages/terrain/region/scripts/tile_map_layers/region_layer.gd +++ b/stages/terrain/region/scripts/tile_map_layers/region_layer.gd @@ -12,7 +12,7 @@ func _init( set_rendering_quadrant_size(Region.CHUNK_TILE_SIZE) tile_set = Region.TILE_SET scale = Vector2.ONE * Region.TILE_SCALE - navigation_enabled = false + navigation_enabled = true region_data = _region_data # collision_visibility_mode = DebugVisibilityMode.DEBUG_VISIBILITY_MODE_FORCE_SHOW diff --git a/stages/terrain/region/scripts/tile_map_layers/rock_layer.gd b/stages/terrain/region/scripts/tile_map_layers/rock_layer.gd index 9dd7288..2fa6859 100644 --- a/stages/terrain/region/scripts/tile_map_layers/rock_layer.gd +++ b/stages/terrain/region/scripts/tile_map_layers/rock_layer.gd @@ -5,12 +5,21 @@ class_name RockLayer const ROCK_TILE_TERRAIN_SET : int = 0 const ROCK_TILE_TERRAIN : int = 1 const CRISTAL_TILE_TERRAIN : int = 2 +const EMPTY_TILE_TERRAIN_SET : int = 0 +const EMPTY_TILE_TERRAIN : int = 4 enum TileType { EMPTY,ROCK,CRISTAL } func setup(): z_index = -1 +func place_empty(coords : Array[Vector2i]): + place_terrain_cells( + coords, + EMPTY_TILE_TERRAIN_SET, + EMPTY_TILE_TERRAIN, + ) + func place_rocks(coords : Array[Vector2i], type := TileType.ROCK): if type != TileType.EMPTY: place_terrain_cells( @@ -18,12 +27,13 @@ func place_rocks(coords : Array[Vector2i], type := TileType.ROCK): ROCK_TILE_TERRAIN_SET, ROCK_TILE_TERRAIN if type == TileType.ROCK else CRISTAL_TILE_TERRAIN, ) + func remove_rocks(coords : Array[Vector2i], _save = false): place_terrain_cells( coords, - ROCK_TILE_TERRAIN_SET, - -1 + EMPTY_TILE_TERRAIN_SET, + EMPTY_TILE_TERRAIN, ) diff --git a/stages/terrain/region/scripts/win_wave.gd b/stages/terrain/region/scripts/win_wave.gd new file mode 100644 index 0000000..61cc8a4 --- /dev/null +++ b/stages/terrain/region/scripts/win_wave.gd @@ -0,0 +1,75 @@ +@tool +extends Node2D +class_name WinWave + +var region : Region +@export var started_time = 0. +var shake_asked := false +var last_updated = 0. + +const WAVE_DURATION := 10 +const WAVE_DISTANCE := 1000 +const WAVE_FERTILE_FACTOR = 0.5 +const WAVE_COLOR := Color("e29f32") +const UPDATE_INTERVAL := 1.5 + +const WIN_CRISTAL_SCENE = preload("res://entities/interactables/win_cristal/win_cristal.tscn") + +var plant_looted : Array[Plant] = [] + +func _process(delta): + %CPUParticles2D.emitting = started_time < WAVE_DURATION + if not %EarthQuakePlayer.playing and started_time < 1.: + %EarthQuakePlayer.play() + + + if started_time < WAVE_DURATION: + if region and not shake_asked: + region.camera.shake(WAVE_DURATION) + shake_asked = true + %CPUParticles2D.emission_sphere_radius = get_radius() + started_time += delta + queue_redraw() + if started_time - last_updated > UPDATE_INTERVAL: + update() + +func get_radius(): + return started_time/WAVE_DURATION * WAVE_DISTANCE + +func update(): + last_updated = started_time + + if region: + region.decontaminate( + Math.get_tiles_in_circle( + global_position, + get_radius() * WAVE_FERTILE_FACTOR + ), + true + ) + + for p in region.entity_container.get_children(): + if ( + p is Plant + and p.data.get_state() == PlantData.State.MATURE + and not p in plant_looted + and p.position.distance_to(self.position) < get_radius() + ): + AudioManager.play_sfx("Harvest") + p.produce_seed() + plant_looted.append(p) + + spawn_cristal() + + +func spawn_cristal(): + var new_cristal := WIN_CRISTAL_SCENE.instantiate() as WinCristal + new_cristal.data = WinCristalData.random() + + var random_angle = randf_range(-PI,PI) + + region.add_entity(new_cristal) + + new_cristal.global_position = global_position + Vector2.UP.rotated(random_angle) * get_radius() * WAVE_FERTILE_FACTOR + + new_cristal.spawn_animation() diff --git a/stages/terrain/region/scripts/win_wave.gd.uid b/stages/terrain/region/scripts/win_wave.gd.uid new file mode 100644 index 0000000..b018c75 --- /dev/null +++ b/stages/terrain/region/scripts/win_wave.gd.uid @@ -0,0 +1 @@ +uid://cq1g6e4ifp0nl diff --git a/stages/terrain/region/win_wave.tscn b/stages/terrain/region/win_wave.tscn new file mode 100644 index 0000000..d5ce46a --- /dev/null +++ b/stages/terrain/region/win_wave.tscn @@ -0,0 +1,35 @@ +[gd_scene format=3 uid="uid://cy6e7rf263qyn"] + +[ext_resource type="Script" uid="uid://cq1g6e4ifp0nl" path="res://stages/terrain/region/scripts/win_wave.gd" id="1_1nw4v"] +[ext_resource type="Texture2D" uid="uid://k2smk66py4uq" path="res://stages/terrain/region/assets/textures/moss_biome/moss_particle.png" id="2_qsj5l"] +[ext_resource type="AudioStream" uid="uid://di6id2kyfy2e1" path="res://common/audio_manager/assets/sfx/earth_rumble/sslc2022-earth-rumble-128880.mp3" id="3_qsj5l"] + +[node name="WinWave" type="Node2D" unique_id=1731344761] +position = Vector2(-2, 0) +script = ExtResource("1_1nw4v") +started_time = 10.00204700000008 + +[node name="CPUParticles2D" type="CPUParticles2D" parent="." unique_id=474468021] +unique_name_in_owner = true +z_index = -1 +emitting = false +amount = 16 +texture = ExtResource("2_qsj5l") +lifetime = 0.3 +emission_shape = 1 +emission_sphere_radius = 90.3 +direction = Vector2(0, -1) +initial_velocity_min = 47.81 +initial_velocity_max = 103.59 +angular_velocity_min = -10.0 +angular_velocity_max = 10.0 +angle_min = -720.0 +angle_max = 720.0 +scale_amount_min = 0.5 +scale_amount_max = 0.8 + +[node name="EarthQuakePlayer" type="AudioStreamPlayer2D" parent="." unique_id=11609177] +unique_name_in_owner = true +stream = ExtResource("3_qsj5l") +volume_db = 7.0 +bus = &"Sfx" diff --git a/stages/title_screen/assets/materials/planet_3d_terrain.tres b/stages/title_screen/assets/materials/planet_3d_terrain.tres index 0ee0d15..69450bc 100644 --- a/stages/title_screen/assets/materials/planet_3d_terrain.tres +++ b/stages/title_screen/assets/materials/planet_3d_terrain.tres @@ -22,8 +22,8 @@ render_priority = 0 shader = ExtResource("1_2voo7") shader_parameter/specular = 0.0 shader_parameter/roughness = 0.6 -shader_parameter/radius = 8.0 -shader_parameter/height = 3.81 +shader_parameter/radius = 150.0 +shader_parameter/height = 100.0 shader_parameter/gradient = ExtResource("2_t1vtm") shader_parameter/random_fertility_texture = SubResource("NoiseTexture2D_8o8xi") shader_parameter/fertility_gradient = SubResource("GradientTexture1D_neuam") diff --git a/translation/dialogs/dialogic_cave_translation.csv b/translation/dialogs/dialogic_cave_translation.csv new file mode 100644 index 0000000..77f1820 --- /dev/null +++ b/translation/dialogs/dialogic_cave_translation.csv @@ -0,0 +1,12 @@ +keys,en,fr +Text/e5/text,I hope everything is going well for you so far. I'm calling because the next regions you're heading to contain unique rock formations: the [b]Caverns of Talion[/b].,"J'espère que tout se passe bien pour toi pour l'instant. Je t'appelle, car les prochaines régions vers lesquelles tu te diriges contiennent des formations rocheuses uniques : des [b]Cavernes de Talion[/b]." +Choice/e6/text,Talion hadn't disappeared?,"Le talion n'avait pas disparu ?" +Choice/e6/disabled_text,, +Text/e7/text,"Precisely, I'd like you to check for me if its reappearance on the surface also means its reappearance in the caverns.","Justement, j'aimerais que tu vérifies pour moi si sa réapparition à la surface signifie aussi sa réapparition dans les cavernes." +Choice/e8/text,How do you know?,"Comment tu le sait ?" +Choice/e8/disabled_text,, +Text/e9/text,"Ces cavernes étaient bien connu des humains. Certains y allaient pour étudier le Talion, d'autres pour explorer la grotte. Ces explorations étaient très risquées, mais apparement certains humains aimaient beaucoup risquer leur vie...","Ces cavernes étaient bien connues des humains. Certains y allaient pour étudier le Talion, d'autres pour explorer la grotte. Ces explorations étaient très risquées, mais apparemment certains humains aimaient beaucoup risquer leur vie..." +Choice/ea/text,What does that change for me?,"Qu'est-ce que ça change pour moi ?" +Choice/ea/disabled_text,, +Text/eb/text,"The crystals in these caverns are special; they don't produce life, but they release a powerful mutagenic energy into the air. This will surely help you grow more powerfull plants for the rest of your journey.","Les cristaux de ces grottes sont spéciaux, ils ne produisent pas de vie, mais libèrent dans l'air un puissant pouvoir mutagène. Celui-ci pourra sûrement t'aider à avoir des plantes plus puissantes pour le reste de ton voyage." +Text/ec/text,Use your detector to find the entrance to the cave; humans had installed an elevator there.,"Utilise ton détecteur pour trouver l'entrée de la grotte, les humains y avaient aménagé un ascenseur." diff --git a/translation/dialogs/dialogic_cave_translation.csv.import b/translation/dialogs/dialogic_cave_translation.csv.import new file mode 100644 index 0000000..e90f66f --- /dev/null +++ b/translation/dialogs/dialogic_cave_translation.csv.import @@ -0,0 +1,19 @@ +[remap] + +importer="csv_translation" +type="Translation" +uid="uid://dif3sphy3ar03" + +[deps] + +files=["res://translation/dialogs/dialogic_cave_translation.en.translation", "res://translation/dialogs/dialogic_cave_translation.fr.translation"] + +source_file="res://translation/dialogs/dialogic_cave_translation.csv" +dest_files=["res://translation/dialogs/dialogic_cave_translation.en.translation", "res://translation/dialogs/dialogic_cave_translation.fr.translation"] + +[params] + +compress=1 +delimiter=0 +unescape_keys=false +unescape_translations=true diff --git a/translation/dialogs/dialogic_demeter_intro_translation.csv b/translation/dialogs/dialogic_demeter_intro_translation.csv index 75c76c9..78b5315 100644 --- a/translation/dialogs/dialogic_demeter_intro_translation.csv +++ b/translation/dialogs/dialogic_demeter_intro_translation.csv @@ -28,8 +28,8 @@ Text/36/text,"But first things first,[pause=0.3] you have to learn how everythin Text/37/text,[b]Just remember the following[/b],[b]Ecoute bien[/b] Label/38/display_name,, Text/a2/text,"When you emerge from this building,[pause=0.2] search for a [b]Recharge Station[/b], I think there is one near the entrance.","Quand tu sortiras d'ici,[pause=0.2] cherche la [b]Station de Recharge[/b], il devrait y en avoir une pas très loin de la sortie." -Text/a3/text,"Then,[pause=0.3] you'll have to find seeds. Just smash some [b]Talion Veins[/b] in the stone with your shovel.","Puis,[pause=0.3] tu devras récupérer des graines en brisant des [b]Veines de Talion[/b] dans la pierre avec ta pioche." -Text/a4/text,"Then, you can plant seeds in the yellow moss you'll find on the ground, it's the only [b]Fertile Zones[/b].","Tu pourras planter ces graines dans la mousse jaune que tu trouvera par terre, ce sont les seules [b]Zones Fertiles[/b]." +Text/a3/text,"Then,[pause=0.3] you have to get [b]seeds[/b].[pause=0.5] To do so,[pause=0.2] just take your shovel and smash some stones ![pause=0.5] Focus on those having yellow crystals on it,[pause=0.3] these are [color=#119758][b]Talion veins[/b][/color]","Puis,[pause=0.3] tu devras récupérer des graines en brisant des [b]Veines de Talion[/b] dans la pierre avec ta pioche." +Text/a4/text,"Afterwards, you can plant seeds in the yellow moss you'll find on the ground, it's the only [b]Fertile Zones[/b].","Tu pourras planter ces graines dans la mousse jaune que tu trouvera par terre, ce sont les seules [b]Zones Fertiles[/b]." Text/a5/text,"When you are out of [b]Energy[/b], you can recharge it on the [b]Recharge Station[/b], time will pass and plants will grow.","Quand tu seras à court d'[b]énergie[/b], tu pourras te recharger à la [b]Station de Recharge[/b], et pendant ce temps les plantes pousseront." Text/a6/text,"Each seed is different thanks to their [b]Mutations[/b], and you can get identical or better seeds from a plant by destroying it when mature, or by waiting for the end of their lifetime.","Chaque graine est unique par ses [b]Mutations[/b], et tu pourras récupérer de meilleure graines en détruisant une plante mature, ou en attendant qu'elle meurt." Text/a7/text,"Plants generate [b]Plant Points[/b] when mature, get enough plant points and you'll complete your training.","Une fois mature, les plantes génèrent des [b]Points de Plantes[/b], si tu en as assez tu finira l'entrainement." diff --git a/translation/dialogs/dialogic_demeter_ship_presentation_translation.csv b/translation/dialogs/dialogic_demeter_ship_presentation_translation.csv index 681dca7..4ab76d8 100644 --- a/translation/dialogs/dialogic_demeter_ship_presentation_translation.csv +++ b/translation/dialogs/dialogic_demeter_ship_presentation_translation.csv @@ -50,6 +50,6 @@ Text/6f/text,You are very kind [color=#FFA617]Orchid[/color] !,Tu es si gentil [ Choice/70/text,Are you hiding information from me ?,Me cachez vous quelque chose ? Choice/70/disabled_text,, Text/71/text,"Not at all ![pause=0.5] Please believe me,[pause=0.2] I just want you to join me.[pause=0.5].[pause=0.5].","Pas du tout ![pause=0.5] Crois moi je t'en prie,[pause=0.3] il faut juste que tu me rejoignes.[pause=0.3].[pause=0.3].[pause=0.3]" -Text/e2/text,"You'll need to travel north to join me, but you won't do that in one go. First, go to the [b]Mercury Relay Base[/b]; we'll use it as a temporary base to repair the ship and save your data...","Tu devras voyager vers le nord pour me rejoindre, mais tu n'iras pas d'une traite. D'abord, rends-toi à la [b]Base Relais Mercure[/b], on s'en servira de base temporaire pour réparer le vaisseau et sauvegarder tes données." +Text/e2/text,"You'll need to travel north to join me, but you won't do that in one go. First, go to the [b]Mercury Relay Base[/b]; we'll use it as a temporary base to repair the ship and save your data..","Tu devras voyager vers le nord pour me rejoindre, mais tu n'iras pas d'une traite. D'abord, rends-toi à la [b]Base Relais Mercure[/b], on s'en servira de base temporaire pour réparer le vaisseau et sauvegarder tes données." Text/e3/text,"Remember, to continue, you'll need to keep your best seeds and continue to [b]evolve your plants[/b].","Souviens-toi, pour réussir, tu devras faire évoluer tes plantes et les transporter avec toi entres les régions !" Text/73/text,"Good luck [color=#FFA617]{orchidName}[/color],[pause=0.3] I am counting on you.","Bonne chance [color=#FFA617]{orchidName}[/color],[pause=0.3] je compte sur toi." diff --git a/translation/dialogs/dialogic_mercury_arrival_translation.csv b/translation/dialogs/dialogic_mercury_arrival_translation.csv index 0460861..68a9f72 100644 --- a/translation/dialogs/dialogic_mercury_arrival_translation.csv +++ b/translation/dialogs/dialogic_mercury_arrival_translation.csv @@ -1,22 +1,22 @@ keys,en,fr Text/b0/text,I'm detecting the Mercury base from your ship's sensors. I hope the Internode is okay...,"Je détecte la base Mercure depuis les capteurs de ton vaisseau, j'espère que l'Internode est en bon état." -Choice/b1/text,It's fine for now.,"Ça va pour l'instant." +Choice/b1/text,It's fine for now.,Ça va pour l'instant. Choice/b1/disabled_text,, Choice/b2/text,"Are you kidding? The battery is draining faster and faster, it's unbearable.","Tu rigoles ? La batterie demande de plus en plus d'énergie, c'est insupportable." Choice/b2/disabled_text,, -Text/b3/text,It's already impressive that nothing has exploded on the ship yet.,"C'est déjà impressionnant que rien n'ai explosé dans le vaisseau pour l'instant." +Text/b3/text,It's already impressive that nothing has exploded on the ship yet.,C'est déjà impressionnant que rien n'ai explosé dans le vaisseau pour l'instant. Text/b4/text,...,... -Text/b5/text,Can we just pretend I didn't say anything? I really don't want to wipe your memory again.,"Est-ce qu'on peut faire comme si je n'avais rien dit ? Je n'ai vraiment pas envie de t'effacer la mémoire encore une fois." +Text/b5/text,Can we just pretend I didn't say anything? I really don't want to wipe your memory again.,Est-ce qu'on peut faire comme si je n'avais rien dit ? Je n'ai vraiment pas envie de t'effacer la mémoire encore une fois. Choice/b6/text,...,... Choice/b6/disabled_text,, -Text/b7/text,"Oh, I'm doing what I can.","Oh je fais ce que je peux." -Choice/b8/text,The ship could explode?,"Le vaisseau peut exploser ? " +Text/b7/text,"Oh, I'm doing what I can.",Oh je fais ce que je peux. +Choice/b8/text,The ship could explode?,Le vaisseau peut exploser ? Choice/b8/disabled_text,, Text/b9/text,"Not explode, but its reactor uses experimental technology from the Talion, and it could easily reach a critical instability threshold and create a deflagration that would jeopardize all of its systems.","Pas exploser, mais son réacteur utilise une technologie expérimentale au Talion, et celui-ci peut facilement atteindre un seuil d'instabilité critique et créer une déflagration qui mettra en péril l'ensemble de ses systèmes." -Choice/ba/text,Wipe my memory?,"M'effacer la mémoire ?" +Choice/ba/text,Wipe my memory?,M'effacer la mémoire ? Choice/ba/disabled_text,, -Text/bb/text,Let's just say you're not my first attempt... I don't want to discourage you as my previous attempts did...,"Disons que tu n'es pas mon premier essai... Je ne t'en dirais pas plus ! Je ne veux pas te désespérer comme mes précédents cobayes..." +Text/bb/text,Let's just say you're not my first attempt... I don't want to discourage you as my previous attempts did...,Disons que tu n'es pas mon premier essai... Je ne t'en dirais pas plus ! Je ne veux pas te désespérer comme mes précédents cobayes... Text/bc/text,"Anyway, there's enough in the base to repair the Internode, and I even found some O-800 models, I mean models identical to yours.","Enfin bon, il y a dans la base de quoi réparer l'Internode, et j'ai même trouvé des modèles O - 800, enfin, je veux dire des modèles identiques au tien. " -Text/bd/text,I'd like you to find the base and synchronize your data with it. That will allow you to come back here if you run out of energy.,"J'aimerais bien que tu trouves la base et que tu synchronises tes données avec celles de la base. Ça te permettra de revenir ici si tu manques d'énergie." +Text/bd/text,I'd like you to find the base and synchronize your data with it. That will allow you to come back here if you run out of energy.,J'aimerais bien que tu trouves la base et que tu synchronises tes données avec celles de la base. Ça te permettra de revenir ici si tu manques d'énergie. Text/be/text,"The entrance shouldn't be hard to find, use your detector.","L'entrée ne devrait pas être difficile à trouver, utilise ton détecteur." -Text/bf/text,See you Orchid !,"À plus tard Orchid" +Text/bf/text,See you Orchid !,À plus tard Orchid diff --git a/translation/dialogs/dialogic_mercury_departure_translation.csv b/translation/dialogs/dialogic_mercury_departure_translation.csv index 2baa26c..0fd0c3d 100644 --- a/translation/dialogs/dialogic_mercury_departure_translation.csv +++ b/translation/dialogs/dialogic_mercury_departure_translation.csv @@ -1,17 +1,17 @@ keys,en,fr Text/ca/text,"Great, Orchid! I now have access to the base from the ship!","Super Orchid, j'ai maintenant accès à la base depuis le vaisseau !" -Text/cb/text,I've programmed a new destination for you in the onboard computer.,"Je t'ai programmé une nouvelle destination dans l'ordinateur de bord." +Text/cb/text,I've programmed a new destination for you in the onboard computer.,Je t'ai programmé une nouvelle destination dans l'ordinateur de bord. Text/cc/text,"You now need to go a little further north, to a new relay base, [b]Venus Base[/b].","Tu dois maintenant aller un peu plus loin au sud, dans une nouvelle base relais, la [b]Base Vénus[/b]." Text/cd/text,"I managed to optimize the ship, but I'm afraid it hasn't returned to its original state...","J'ai réussi à faire des optimisations sur le vaisseau, mais j'ai peur qu'il n'ait pas retrouvé son état d'origine..." Text/ce/text,"Luckily, I've found something that might help you. I've cataloged ancient human ruins all over the planet, and some of them contain ""vending machines,"" machines for exchanging items for money.","J'ai heureusement déniché quelque chose qui pourrait t'aider. J'ai répertorié des anciennes ruines humaines un peu partout sur la planète, et dans certaines, on trouve des ""distributeurs"", des machines d'échange d'objet contre de l'argent." -Choice/cf/text,Vending machines?,"Des distributeurs ?" +Choice/cf/text,Vending machines?,Des distributeurs ? Choice/cf/disabled_text,, Text/d0/text,"Yes, that's where they used to get the energy they needed, for a completely unreasonable price.","Oui c'est là qu'ils récupéraient de quoi se réalimenter en énergie, pour un prix complètement déraisonnable." -Text/d1/text,"Before, real people were in charge of these transactions, but for some reason, humans spent all of recent history figuring out how to encounter as few humans as possible. Maybe they couldn't stand each other anymore...","Avant, de vraies personnes étaient chargées de ces transactions, mais va savoir pourquoi les humains ont passé toute leur histoire récente à trouver comment croiser le moins d'humains possible. Peut-être qu'ils ne pouvaient plus se supporter..." -Choice/d2/text,Money?,"De l'argent ?" +Text/d1/text,"Before, real people were in charge of transactions, but for some reason, humans spent all of recent history figuring out how to encounter as few humans as possible. Maybe they couldn't stand each other anymore...","Avant, de vraies personnes étaient chargées de ces transactions, mais va savoir pourquoi les humains ont passé toute leur histoire récente à trouver comment croiser le moins d'humains possible. Peut-être qu'ils ne pouvaient plus se supporter..." +Choice/d2/text,Money?,De l'argent ? Choice/d2/disabled_text,, Text/d3/text,"Yes, each human had a sum of an imaginary unit they called money. They based their entire social hierarchy on this unit.","Oui, chaque humain avait une somme d'une unité imaginaire qu'ils appelaient argent. Ils basaient toute leur échelle sociale en fonction de cette unité." Text/d4/text,"In any case, I've updated their system. They'll probably need some energy to function, but they might bring you some interesting items.","En-tout-cas, j'ai mis à jour leur système, ils auront sûrement besoin d'un peu d'énergie pour fonctionner, mais ils t'apporteront peut-être des objets intéressants." Text/d5/text,"As usual, you can use your detector to find the entrance to these ruins.","Comme d'habitude, tu peux utiliser ton détecteur pour trouver la porte d'entrée de ces ruines." Text/d6/text,"These artifacts will be placed on a shelf in your ship, but remember that if you ran out of energy and I have to teleport the ship, you'll lose them.","Ces artefacts seront placés sur une étagère dans le vaisseau, mais rappelle toi que si tu tombes à court d'énergie, je devrais téléporter le vaisseau et tu perdras tous les objets à l'intérieur !" -Text/d7/text,Good luck with the [b]Venus Relay Base[/b]; it's a little further than the last one.,"Bon courage pour la base Vénus elle est un petit peu plus loin que la dernière." +Text/d7/text,Good luck with the [b]Venus Relay Base[/b]; it's a little further than the last one.,Bon courage pour la base Vénus elle est un petit peu plus loin que la dernière. diff --git a/translation/dialogs/dialogic_venus_arrival_translation.csv b/translation/dialogs/dialogic_venus_arrival_translation.csv index 12ba3c3..853a67f 100644 --- a/translation/dialogs/dialogic_venus_arrival_translation.csv +++ b/translation/dialogs/dialogic_venus_arrival_translation.csv @@ -1,14 +1,14 @@ keys,en,fr Text/d8/text,"Wow, you arrived quickly! How's your journey going so far?","Wow, tu es arrivé vite ! Comment se passe ton voyage pour l'instant ?" -Choice/d9/text,Boring,"Fastidieux" +Choice/d9/text,Boring,Fastidieux Choice/d9/disabled_text,, Text/da/text,"Sorry, but things get even more complicated from here on out! But believe me, I need you. I wouldn't have asked you if it was not important.","Désolé, mais pour la suite cela se corse encore plus ! Mais crois moi, j'ai vraiment besoin de toi. Je ne t'aurais pas demandé si cela n'était pas important." -Choice/db/text,Too easy,"Trop simple" +Choice/db/text,Too easy,Trop simple Choice/db/disabled_text,, Text/dc/text,"Hmm, that answer surprises me. I didn't think your program contained any pride...","Cette réponse m'étonne, je ne pensais pas que ton programme contenait de la vantardise..." -Text/dd/text,[i]Analysis in progress[/i],"[i]Analyse en cours[/i]" -Text/de/text,20% pride! I must have been hallucinating while writing your behavior.,"20% de fierté quand même ! J'ai dû halluciner pendant l'écriture de ton comportement." -Choice/df/text,Interesting,"Intéressant" +Text/dd/text,[i]Analysis in progress[/i],[i]Analyse en cours[/i] +Text/de/text,20% pride! I must have been hallucinating while writing your behavior.,20% de fierté quand même ! J'ai dû halluciner pendant l'écriture de ton comportement. +Choice/df/text,Interesting,Intéressant Choice/df/disabled_text,, Text/e0/text,"Good! I hope you're enjoying your new existence, and that you're not suffering too much from being born into something you didn't choose...","Bien ! J'espère que tu aimes ta nouvelle existence, et que tu ne subis pas trop ta mise au monde pour quelque chose que tu n'as pas décidé..." Text/e1/text,"Like in [b]Mercury Base[/b], I'd like you to save yourself. In the meantime, I'll check the ship's condition. I hope it hasn't suffered too much damage from the jumps!","Comme sur la Base Mercure, je veux bien que tu te sauvegardes. Pendant ce temps, je vais regarder l'état du vaisseau. J'espère qu'il n'a pas trop morflé !" diff --git a/translation/dialogs/dialogic_venus_departure_translation.csv b/translation/dialogs/dialogic_venus_departure_translation.csv index d6dcd8f..b993260 100644 --- a/translation/dialogs/dialogic_venus_departure_translation.csv +++ b/translation/dialogs/dialogic_venus_departure_translation.csv @@ -1,15 +1,15 @@ keys,en,fr -Text/c0/text,Hello!,"Bonjour !" -Choice/c1/text,Who are you?,"Qui êtes vous ?" -Choice/c1/disabled_text,,"" +Text/c0/text,Hello!,Bonjour ! +Choice/c1/text,Who are you?,Qui êtes vous ? +Choice/c1/disabled_text,, Text/c2/text,"I'm the personification of the development team, and I'd like to announce to you that this part of the game isn't finished!","Je suis la personnification de l'équipe de développement, et j'aimerais t'annoncer que cette partie du jeu n'est pas finie !" -Choice/c3/text,How?,"Quoi ?" -Choice/c3/disabled_text,,"" -Choice/c4/text,What?,"Comment ?" -Choice/c4/disabled_text,,"" -Choice/c5/text,Can I be more surprised?,"Pourrais-je être plus étonné ?" -Choice/c5/disabled_text,,"" +Choice/c3/text,How?,Quoi ? +Choice/c3/disabled_text,, +Choice/c4/text,What?,Comment ? +Choice/c4/disabled_text,, +Choice/c5/text,Can I be more surprised?,Pourrais-je être plus étonné ? +Choice/c5/disabled_text,, Text/c6/text,"Don't worry, I'm extradiegetic.","Ne t'inquiète pas, je suis extra-diégétique." Text/c7/text,"I have a surprise for you, there's one last challenge for you to play!","Cependant, j'ai une dernière surprise pour toi, un dernier challenge à te faire jouer !" Text/c8/text,"Indeed, the next destination is an exclusive environment we're currently working on. But you'll have to earn it!","La prochaine destination est un environnement sur lequel on est en train de travailler, mais il va falloir le mériter !" -Text/c9/text,Good luck!,"Bonne chance !" +Text/c9/text,Good luck!,Bonne chance ! diff --git a/translation/dialogs/dialogic_wake_up_translation.csv b/translation/dialogs/dialogic_wake_up_translation.csv index 1117913..d0cd0b0 100644 --- a/translation/dialogs/dialogic_wake_up_translation.csv +++ b/translation/dialogs/dialogic_wake_up_translation.csv @@ -5,7 +5,7 @@ Text/8f/text,"[i]Suddenly, a [rainbow]spark[/rainbow].[pause=0.5] A thousand of Label/90/display_name,, Choice/91/text,Check components,Examiner les composants Choice/91/disabled_text,, -Text/92/text,"Exploring available drivers.[pause=0.5].[pause=0.5].[pause=0.5] New actions discovered.[pause=0.5] Three propellers,[pause=0.3] small models,[pause=0.3] only suitable for low altitude movement.[pause=0.5] Robotic arm,[pause=0.3] multipurpose,[pause=0.3] retractable.","Exploration des pilotes disponibles[pause=0.5].[pause=0.5].[pause=0.5] Nouvelles actions découvertes.[pause=0.5] Trois hélices,[pause=0.3] petits modèles,[pause=0.3] appropriéespour du mouvement en basse altitude seulement.[pause=0.5] Un bras robotique,[pause=0.3] versatile,[pause=0.3] rétractable." +Text/92/text,"Exploring available drivers.[pause=0.5].[pause=0.5].[pause=0.5] New actions available.[pause=0.5] Three propellers,[pause=0.3] small models,[pause=0.3] only suitable for low altitude movement.[pause=0.5] Robotic arm,[pause=0.3] multipurpose,[pause=0.3] retractable.","Exploration des pilotes disponibles[pause=0.5].[pause=0.5].[pause=0.5] Nouvelles actions découvertes.[pause=0.5] Trois hélices,[pause=0.3] petits modèles,[pause=0.3] appropriéespour du mouvement en basse altitude seulement.[pause=0.5] Un bras robotique,[pause=0.3] versatile,[pause=0.3] rétractable." Choice/93/text,Check streams,Examiner les flux Choice/93/disabled_text,, Text/94/text,"A continuous stream of data flow,[pause=0.3] unchecked.[pause=0.5] A video,[pause=0.5] dark colored pixels only.[pause=0.5] Another stream,[pause=0.3] flat signal.[pause=0.5] No radio emission detected.","Un flux de données continu,[pause=0.3] non verifié.[pause=0.5] Une vidéo,[pause=0.5] seulement faite de pixels assombris.[pause=0.5] Un autre flux,[pause=0.3] pas de signal.[pause=0.5] Aucune émission radio détectée." diff --git a/translation/game/gui.csv b/translation/game/gui.csv index 87e8a0e..8fe62b3 100644 --- a/translation/game/gui.csv +++ b/translation/game/gui.csv @@ -93,7 +93,7 @@ BUILD_%s,Build %s,Construit %s FORK,Fork,Fourche FORK_DESC_TEXT,"Use it to [b]harvest mature plants[/b].","Utilise-la pour [b]récolter les plantes mature[/b]." DETECTOR,Detector,Détecteur -DETECTOR_DESC_TEXT,"Indicate [b]near signals[/b].","Indique les [b]signaux proches[/b]" +DETECTOR_DESC_TEXT,"Indicate [b]near signals[/b]","Indique les [b]signaux proches[/b]" DETECT_USE_TEXT,"Search near signals","Rechercher les signaux proches" SHIP_TELEPORT,Ship Portal,Portail vers le vaisseau SHIP_TELEPORT_DESC_TEXT,"A mysterious technology that get you to the [b]Internode[/b].","Une mystèrieuse technologie qui t'amène sur l'[b]Internode[/b]" @@ -106,7 +106,7 @@ SHOVEL_DESC_TEXT,"Use it to [b]dig up seeds[/b] and [b]harvest mature plants[/b] TROWEL,Trowel,Truelle TROWEL_DESC_TEXT,"Use it to [b]harvest mature plants[/b]. Can grant a [b]bonus seed[/b].","Utilise-la pour [b]récolter les plantes mature[/b]. Peut donner une [b]graine supplémentaire[/b]." PICKAXE,Pickaxe,Pioche -PICKAXE_DESC_TEXT,Can dig rock and precious materials,Peut creuser la roche et des matériaux précieux +PICKAXE_DESC_TEXT,Can dig [b]Talion Veins[/b] and rock,Peut creuser les [b]Veine de Talion[/b] et la roche DIG,Dig,Creuser OPEN,Open,Ouvrir %s_SEED,%s Seed,Graine de %s @@ -124,11 +124,15 @@ DIG_A_TALION_VEIN_WITH_SHOVEL,Dig a [b]Talion Vein[/b] with the [b]Pickaxe[/b],C PLANT_SEED_IN_FERTILE_ZONE,Plant a [b]Seed[/b] in the [b]Fertile Zone[/b],Planter une [b]Graine[/b] dans la [b]Zone Fertile[/b] GAIN_FIRST_PLANT_POINT,Earn your first [b]Plant Point[/b] while waiting for a plant to [b]Mature[/b] (recharging will pass days),Gagnez votre premier [b]Point de Plante[/b] en attendant qu'une plante soit [b]Mature[/b] (se recharger fera passer les jours) HARVEST_A_MATURE_PLANT,Harvest a [b]Mature Plant[/b] using your [b]Fork[/b],Récoltez une [b]Plante Mature[/b] en utilisant votre [b]Fourche[/b] -PLANT_NAME_TEXT,"[b]Plant name and state[/b] Each plant species has a unique name and can have 2 states: juvenile and mature","[b]Nom et état de la plante[/b] Chaque espèce de plantes a un nom unique et chaque plante peut avoir deux états : juvénile et mature" +TAKE_HARVESTED_SEEDS,Take the harvested seeds,Prenez les graines récoltées +PLANT_NAME_TEXT,"[b]Plant name and state[/b] Each plant species has a unique name and can have 2 states: juvenile or mature","[b]Nom et état de la plante[/b] Chaque espèce de plantes a un nom unique et chaque plante peut avoir deux états : juvénile ou mature" PLANT_STATS_TEXT,"[b]Plant stats[/b] Here you can see your plant's age, the day of maturation, the lifetime, and the seed number that the plant can produce","[b]Statistiques[/b] Ici, vous pouvez voir l'âge de votre plante, le jour de maturation, le temps de vie et le nombre de graine que la plante donne" -PLANT_MUTATION_TEXT,"[b]Mutations[/b] Each species has mutations that alter the plant's behavior. These mutations are transmissible to the plant's seeds, where they can change or evolve superior levels","[b]Mutations[/b] Chaque espèce possède des mutations qui modifient le comportement de la plante. Ces mutations se transmettent aux graines, et peuvent changer ou évoluer aux niveaux supérieurs" PLANTS_INFO,"Plants info","Information des plantes" OBTAIN_INFORMATION_ON_PLANTS_WHILE_HOVERING_PLANTS_BASE,"Obtain information on plants while hovering over the plant base","Obtenez des informations sur les plantes en survolant leur base" +PLANT_MUTATION_TEXT,"[b]Mutations[/b] Mutation change the plant behavior. These mutations are transmitted between generations, where they can change or evolve superior levels","[b]Mutations[/b] Les mutations changent le comportement de la plante. Ces mutations se transmettent entre les générations, et peuvent changer ou évoluer aux niveaux supérieurs" +MUTATIONS,Mutations,Mutations +MUTATION,Mutation,Mutation +SEEDS_HAVE_A_CHANCE_TO_GAIN_MUTATIONS,"Seeds have a chance to gain mutations","Les graines ont une chance de gagner des mutations" PLANT_SCORE_TEXT,"[b]Score[/b] By default, each plant get 1 score when mature","[b]Score[/b] Par défaut, chaque plante gagne 1 de score à la maturation" %d_PLANT_POINT,%d Plant Point,%d Point de plante %d_PLANT_POINTS,%d Plant Points,%d Points de plante @@ -140,6 +144,8 @@ LADDER_DESC_TEXT,A good old ladder,Une bonne vieille échelle RECHARGE_STATION,Recharge station,Station de recharge RECHARGE,Recharge,Recharger RECHARGE_STATION_DESC_TEXT,"[b]You can recharge yourself here.[/b] When recharging, time pass and plants grow.","[b]Tu peux te recharger ici.[/b] Pendant la recharge, le temps passe et les plantes grandissent." +TALION_CRISTAL,Talion Crystal,Cristal de Talion +TALION_CRISTAL_DESC_TEXT,"A pure form of Talion, cannot be break or used","Une forme pure de Talion, ne peut être cassé ou utilisé" COMPOST,Compost,Compost START,Start,Commencer HELP,Help,Aide @@ -174,6 +180,8 @@ ITEM_6,Item 6,Item 6 ITEM_7,Item 7,Item 7 ITEM_8,Item 8,Item 8 ITEM_9,Item 9,Item 9 +ZOOM_IN,Zoom in,Zoomer +ZOOM_OUT,Zoom ou,Dézoomer PRESS_KEY,Press a key...,Appuyer sur une touche... LOADING,Loading...,Chargement... LOADING_SCENE,Loading Scene,Chargement de la scène @@ -206,7 +214,11 @@ SHIP_ACQUIRED,Ship Acquired,Vaisseau Acquis USE_THE_SHIP_TO_TRAVEL_ACROSS_THE_PLANET,"Use the ship to travel across the planet","Utilisez le vaisseau pour voyager sur la planète" JUMP_BETWEEN_REGION_TEXT,"[b]Jump between regions[/b] Use the ship dashboard to choose the next region between two choices","[b]Changez de région[/b] Utilisez le tableau de bord pour changer de région parmi deux choix" RECHARGE_YOUR_SHIP_WITH_PLANT_SCORE_TEXT,"[b]Recharge your ship with plant score[/b] The Internode has fuel for only one jump; recharge it with plants on the planet","[b]Rechargez votre vaisseau avec les scores de plantes[/b] L'Internode a du carburant pour un seul changement, rechargez le en plantant sur la planète" -SHIP_IS_READY_TO_TAKE_OFF,Ship is ready to take off,Le vaisseau est prêt à partir +OUT_OF_ENERGY,Out of energy,À court d'énergie +USE_THE_BACKUP_DEVICE_TO_RESPAWN_TO_LAST_BASE,Use the backup device to respawn to last base,Utilisez l'appareil de sauvegarde pour réapparaitre à la dernière base +STEP_ON_THE_DATA_SAVER_TEXT,[b]Step on the backup device to use it[/b] You can use it at any time.,[b]Déplacez-vous sur l'appareil de sauvegarde pour l'utiliser[/b] Vous pouvez l'utiliser à tout moment +RESTART_FROM_LAST_BASE_WITHOUT_SEEDS_TEXT,[b]Restart from last base without any seeds[/b] You will also lose all artefacts found.,[b]Recommencer à partir de la dernière base sans aucune graine[/b] Vous perdrez également tous les artefacts trouvés. +COLLECT_YOUR_SEEDS_AND_TAKE_OFF,Collect your seeds and take off with the ship,Collectez vos graines et décollez avec le vaisseau SAVE_ORCHID_MEMORY_AND_RESPAWN,Save Orchid Memory and respawn,Sauvegarder la mémoire d'Orchid et recommencer DOWNLOAD_ORCHID_DATA_TO_LOCAL_SERVERS,Download Orchid data to local servers,Télécharger les données d'Orchid sur les serveurs locaux TUTORIAL_FINISHED,Tutorial finished,Tutoriel terminé @@ -268,11 +280,14 @@ SANDY_MODIFIER_DESC_TEXT,Reduce plants influence radius,Réduit le rayon d'influ RADIOACTIVE,Radioactive,Radioactif RADIOACTIVE_MODIFIER_DESC_TEXT,Reduce the plant's base score by 1,Réduit le score de base des plantes de 1 CONTAMINATED,Contaminated,Contaminée -CONTAMINATED_MODIFIER_DESC_TEXT,Decrease all plants seeds production and increase the possible seed loss,Diminue la production de graine et augmente la perte possible de graine pour toutes les plantes +CONTAMINATED_MODIFIER_DESC_TEXT,Decrease all plants seeds production by one,Diminue la production de graine de 1 +MAGNETIC,Magnetic,Magnétique +MAGNETIC_MODIFIER_DESC_TEXT,Divide the number of [b]Recharge[/b] and the [b]Plant Points[/b] needed by 2, Divise le nombre de [b]Recharge[/b] et le nombre de [b]Points de Plantes[/b] nécessaire par 2 STORM,Storm,Tempête STORM_MODIFIER_DESC_TEXT,Increases a lot the [b]Plant Points[/b] needed,Augmente beaucoup le nombre de [b]Points de Plantes[/b] nécessaires VENDING_MACHINES,Vending Machines,Distributeurs VENDING_MACHINES_MODIFIER_DESC_TEXT,A room with old vending machine is in the area,Une pièce avec de vieux distributeurs se trouve dans la zone +CRISTAL_CAVE_MODIFIER_DESC_TEXT,An cave full of Talion can be found in the region,Une caverne remplie de Talion peut être trouvée dans cette région RESONNANCE,Resonnance,Résonnance RESONNANCE_MODIFIER_DESC_TEXT,Mutation level from [b]Talion Veins[/b] seeds is increased,Le niveau de mutation des graines issues de [b]Veine de Talion[/b] est augmenté INSTABLE,Instable,Instable @@ -283,6 +298,8 @@ ORBIT,Orbit,Orbite RECHARGE_NUMBER,Recharge Number,Nombre de recharge ORCHID_ENERGY,Orchid's energy,Énergie d'Orchid NEW_TOOL,New tool,Nouvel Outil +NEW_MUTATION,New Mutation,Nouvelle Mutation +NEW_ARTEFACT,New Artefact,Nouvel Artefact PILE,Pile,Pile, PILE_DESC_TEXT,Give an extra energy cell,Donne une cellule d'énergie supplémentaire SEED_CASE,Seed Case,Emplacement de graine @@ -292,7 +309,7 @@ STABILISATOR_DESC_TEXT,Increase all plants lifetime by 1,Augmente la durée de v TALION_OVERLOADER,Talion Overloader,Surchargeur de Talion TALION_OVERLOADER_DESC_TEXT,Increase maximum mutation number on one plant by 1,Augmente le nombre de mutations possibles sur une plante de 1 TALION_RELAY,Talion Relay,Relai de Talion -TALION_RELAY_DESC_TEXT,Augmente la probabilité des mutations +TALION_RELAY_DESC_TEXT,Increase mutation probability,Augmente la probabilité des mutations TALION_SOIL,Talion Soil,Terreau de Talion TALION_SOIL_DESC_TEXT,Increase plant influence radius,Augmente le rayon d'influence des plantes PLANTS_CAN_HAVE_UP_TO_X_MUTATION,Plants can have up to [b]%d[/b] mutations,Les plantes peuvent avoir jusqu'à [b]%d[/b] mutations @@ -309,4 +326,6 @@ INSPECT,Inspect,Inspecter VENDING_MACHINE,Vending Machine,Distributeur VENDING_MACHINE_ROOM,Vending Machine Room,Local de Distributeur VENDING_MACHINES_DOOR_DESC_TEXT,"An ancient room filled with old vending machines","Une pièce ancienne remplie de vieux distributeurs" +CRISTAL_CAVE,Crystal Cave,Caverne aux Cristaux +CRISTAL_CAVE_DOOR_DESC_TEXT,Leads to a deep cave with Talion crystals inside,Mène à une caverne profonde avec des cristaux de Talion à l'intérieur THANK_YOU_FOR_YOUR_PURCHASE,Thank you for your purchase,Merci pour votre achat \ No newline at end of file