Compare commits
10 Commits
8cc85e3d6c
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 22b753c6a9 | |||
| d0446e8826 | |||
|
|
5d724e2c63 | ||
|
|
45281057f2 | ||
|
|
53e86be2ce | ||
| 281f42d90c | |||
|
|
94dc231c01 | ||
| 39630ce2ca | |||
| 53c86e9cc7 | |||
| e133519dc0 |
BIN
common/audio_manager/assets/morceaux/histoire/aqua.mp3
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="mp3"
|
||||||
|
type="AudioStreamMP3"
|
||||||
|
uid="uid://bu87qluncx6pd"
|
||||||
|
path="res://.godot/imported/aqua.mp3-0d6e6fca8525376ee9d208a606348ba9.mp3str"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/audio_manager/assets/morceaux/histoire/aqua.mp3"
|
||||||
|
dest_files=["res://.godot/imported/aqua.mp3-0d6e6fca8525376ee9d208a606348ba9.mp3str"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
loop=false
|
||||||
|
loop_offset=0
|
||||||
|
bpm=0
|
||||||
|
beat_count=0
|
||||||
|
bar_beats=4
|
||||||
BIN
common/audio_manager/assets/morceaux/histoire/astra.ogg
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="oggvorbisstr"
|
||||||
|
type="AudioStreamOggVorbis"
|
||||||
|
uid="uid://urh63a8tgsd0"
|
||||||
|
path="res://.godot/imported/astra.ogg-2a61314797c2f4f96a5fbfc70bd8543d.oggvorbisstr"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/audio_manager/assets/morceaux/histoire/astra.ogg"
|
||||||
|
dest_files=["res://.godot/imported/astra.ogg-2a61314797c2f4f96a5fbfc70bd8543d.oggvorbisstr"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
loop=false
|
||||||
|
loop_offset=0
|
||||||
|
bpm=0
|
||||||
|
beat_count=0
|
||||||
|
bar_beats=4
|
||||||
BIN
common/audio_manager/assets/morceaux/histoire/estia.ogg
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="oggvorbisstr"
|
||||||
|
type="AudioStreamOggVorbis"
|
||||||
|
uid="uid://bkf62homs848n"
|
||||||
|
path="res://.godot/imported/estia.ogg-5a67cadf4221800898513f5ad486335d.oggvorbisstr"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/audio_manager/assets/morceaux/histoire/estia.ogg"
|
||||||
|
dest_files=["res://.godot/imported/estia.ogg-5a67cadf4221800898513f5ad486335d.oggvorbisstr"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
loop=false
|
||||||
|
loop_offset=0
|
||||||
|
bpm=0
|
||||||
|
beat_count=0
|
||||||
|
bar_beats=4
|
||||||
BIN
common/audio_manager/assets/sfx/borea_lever/borea_lever.mp3
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="mp3"
|
||||||
|
type="AudioStreamMP3"
|
||||||
|
uid="uid://dsqdt1ddvlyal"
|
||||||
|
path="res://.godot/imported/borea_lever.mp3-6c76a0e5e78025311230b59292d6bc98.mp3str"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/audio_manager/assets/sfx/borea_lever/borea_lever.mp3"
|
||||||
|
dest_files=["res://.godot/imported/borea_lever.mp3-6c76a0e5e78025311230b59292d6bc98.mp3str"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
loop=false
|
||||||
|
loop_offset=0
|
||||||
|
bpm=0
|
||||||
|
beat_count=0
|
||||||
|
bar_beats=4
|
||||||
@@ -12,7 +12,6 @@
|
|||||||
[ext_resource type="AudioStream" uid="uid://dsphn6dbbd55a" path="res://common/audio_manager/assets/morceaux/niveau/forest_phase_1.ogg" id="6_6o1yh"]
|
[ext_resource type="AudioStream" uid="uid://dsphn6dbbd55a" path="res://common/audio_manager/assets/morceaux/niveau/forest_phase_1.ogg" id="6_6o1yh"]
|
||||||
[ext_resource type="AudioStream" uid="uid://cwu71o0sl2vto" path="res://common/audio_manager/assets/ambiance/dialogues/ambiance_Demeter.ogg" id="6_8204s"]
|
[ext_resource type="AudioStream" uid="uid://cwu71o0sl2vto" path="res://common/audio_manager/assets/ambiance/dialogues/ambiance_Demeter.ogg" id="6_8204s"]
|
||||||
[ext_resource type="AudioStream" uid="uid://klb32q3kjtkt" path="res://common/audio_manager/assets/ambiance/vending_room_base_relais/ambiance_vending_room_base_relais.ogg" id="7_ge2sc"]
|
[ext_resource type="AudioStream" uid="uid://klb32q3kjtkt" path="res://common/audio_manager/assets/ambiance/vending_room_base_relais/ambiance_vending_room_base_relais.ogg" id="7_ge2sc"]
|
||||||
[ext_resource type="AudioStream" uid="uid://c8gbtdul2x8ws" path="res://common/audio_manager/assets/ambiance/borea/ambiance_borea.ogg" id="7_spekb"]
|
|
||||||
[ext_resource type="AudioStream" uid="uid://bpf6witukorka" path="res://common/audio_manager/assets/morceaux/menu/main_menu.ogg" id="7_tuvql"]
|
[ext_resource type="AudioStream" uid="uid://bpf6witukorka" path="res://common/audio_manager/assets/morceaux/menu/main_menu.ogg" id="7_tuvql"]
|
||||||
[ext_resource type="AudioStream" uid="uid://bmwaw1yb8hucf" path="res://common/audio_manager/assets/ambiance/vaisseau/ship_music.ogg" id="8_tuvql"]
|
[ext_resource type="AudioStream" uid="uid://bmwaw1yb8hucf" path="res://common/audio_manager/assets/ambiance/vaisseau/ship_music.ogg" id="8_tuvql"]
|
||||||
[ext_resource type="AudioStream" uid="uid://ccimypx71o4g6" path="res://common/audio_manager/assets/morceaux/niveau/forest_phase_2.ogg" id="10_tq535"]
|
[ext_resource type="AudioStream" uid="uid://ccimypx71o4g6" path="res://common/audio_manager/assets/morceaux/niveau/forest_phase_2.ogg" id="10_tq535"]
|
||||||
@@ -42,8 +41,11 @@
|
|||||||
[ext_resource type="AudioStream" uid="uid://dq5qwydrca3vy" path="res://common/audio_manager/assets/sfx/recharge/recharge_capsule_5.wav" id="22_aedoe"]
|
[ext_resource type="AudioStream" uid="uid://dq5qwydrca3vy" path="res://common/audio_manager/assets/sfx/recharge/recharge_capsule_5.wav" id="22_aedoe"]
|
||||||
[ext_resource type="AudioStream" uid="uid://d1cpi438ep0ys" path="res://common/audio_manager/assets/sfx/announce/annnounce.wav" id="22_btfwx"]
|
[ext_resource type="AudioStream" uid="uid://d1cpi438ep0ys" path="res://common/audio_manager/assets/sfx/announce/annnounce.wav" id="22_btfwx"]
|
||||||
[ext_resource type="AudioStream" uid="uid://ch8wnrckanydg" path="res://common/audio_manager/assets/morceaux/histoire/meeting_demeter.ogg" id="22_mrdk3"]
|
[ext_resource type="AudioStream" uid="uid://ch8wnrckanydg" path="res://common/audio_manager/assets/morceaux/histoire/meeting_demeter.ogg" id="22_mrdk3"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://bu87qluncx6pd" path="res://common/audio_manager/assets/morceaux/histoire/aqua.mp3" id="22_uaco0"]
|
||||||
[ext_resource type="AudioStream" uid="uid://bnwtgp8t46xwc" path="res://common/audio_manager/assets/sfx/recharge/recharge_capsule_6.wav" id="23_ge2sc"]
|
[ext_resource type="AudioStream" uid="uid://bnwtgp8t46xwc" path="res://common/audio_manager/assets/sfx/recharge/recharge_capsule_6.wav" id="23_ge2sc"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://bkf62homs848n" path="res://common/audio_manager/assets/morceaux/histoire/estia.ogg" id="24_eeq8n"]
|
||||||
[ext_resource type="AudioStream" uid="uid://bp3wsncvda5gl" path="res://common/audio_manager/assets/sfx/recharge/recharge_capsule_7.wav" id="24_yr73o"]
|
[ext_resource type="AudioStream" uid="uid://bp3wsncvda5gl" path="res://common/audio_manager/assets/sfx/recharge/recharge_capsule_7.wav" id="24_yr73o"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://urh63a8tgsd0" path="res://common/audio_manager/assets/morceaux/histoire/astra.ogg" id="25_1r4ky"]
|
||||||
[ext_resource type="AudioStream" uid="uid://8juy5ev3rdfh" path="res://common/audio_manager/assets/sfx/plant_points/plant_point_1.wav" id="29_ngi21"]
|
[ext_resource type="AudioStream" uid="uid://8juy5ev3rdfh" path="res://common/audio_manager/assets/sfx/plant_points/plant_point_1.wav" id="29_ngi21"]
|
||||||
[ext_resource type="AudioStream" uid="uid://su387eovtrsg" path="res://common/audio_manager/assets/sfx/plant_points/plant_point_2.wav" id="30_xmumj"]
|
[ext_resource type="AudioStream" uid="uid://su387eovtrsg" path="res://common/audio_manager/assets/sfx/plant_points/plant_point_2.wav" id="30_xmumj"]
|
||||||
[ext_resource type="AudioStream" uid="uid://bp6mtpqjf4txo" path="res://common/audio_manager/assets/sfx/plant_points/plant_point_3.wav" id="31_spekb"]
|
[ext_resource type="AudioStream" uid="uid://bp6mtpqjf4txo" path="res://common/audio_manager/assets/sfx/plant_points/plant_point_3.wav" id="31_spekb"]
|
||||||
@@ -167,19 +169,14 @@ unique_name_in_owner = true
|
|||||||
stream = ExtResource("5_ipd1r")
|
stream = ExtResource("5_ipd1r")
|
||||||
volume_db = -15.0
|
volume_db = -15.0
|
||||||
|
|
||||||
[node name="Astra" type="AudioStreamPlayer" parent="Ambiances" unique_id=1244577212]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
stream = ExtResource("5_8204s")
|
|
||||||
volume_db = -5.0
|
|
||||||
|
|
||||||
[node name="Demeter" type="AudioStreamPlayer" parent="Ambiances" unique_id=351918026]
|
[node name="Demeter" type="AudioStreamPlayer" parent="Ambiances" unique_id=351918026]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
stream = ExtResource("6_8204s")
|
stream = ExtResource("6_8204s")
|
||||||
volume_db = -5.0
|
volume_db = -5.0
|
||||||
|
|
||||||
[node name="Borea" type="AudioStreamPlayer" parent="Ambiances" unique_id=1857904648]
|
[node name="Astra" type="AudioStreamPlayer" parent="Ambiances" unique_id=1244577212]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
stream = ExtResource("7_spekb")
|
stream = ExtResource("5_8204s")
|
||||||
volume_db = -5.0
|
volume_db = -5.0
|
||||||
|
|
||||||
[node name="Ship" type="AudioStreamPlayer" parent="Ambiances" unique_id=1564186965]
|
[node name="Ship" type="AudioStreamPlayer" parent="Ambiances" unique_id=1564186965]
|
||||||
@@ -187,10 +184,6 @@ unique_name_in_owner = true
|
|||||||
stream = ExtResource("8_tuvql")
|
stream = ExtResource("8_tuvql")
|
||||||
volume_db = -5.0
|
volume_db = -5.0
|
||||||
|
|
||||||
[node name="Subterra" type="AudioStreamPlayer" parent="Ambiances" unique_id=2019011683]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
stream = ExtResource("12_mrdk3")
|
|
||||||
|
|
||||||
[node name="Musics" type="Node" parent="." unique_id=1450527710]
|
[node name="Musics" type="Node" parent="." unique_id=1450527710]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|
||||||
@@ -247,10 +240,29 @@ stream = ExtResource("7_tuvql")
|
|||||||
volume_db = -5.0
|
volume_db = -5.0
|
||||||
bus = &"Music"
|
bus = &"Music"
|
||||||
|
|
||||||
[node name="Meeting_demeter" type="AudioStreamPlayer" parent="Musics" unique_id=1066359159]
|
[node name="MeetingDemeter" type="AudioStreamPlayer" parent="Musics" unique_id=1066359159]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
stream = ExtResource("22_mrdk3")
|
stream = ExtResource("22_mrdk3")
|
||||||
|
|
||||||
|
[node name="Aqua" type="AudioStreamPlayer" parent="Musics" unique_id=1941388305]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = ExtResource("22_uaco0")
|
||||||
|
volume_db = -5.0
|
||||||
|
|
||||||
|
[node name="Subterra" type="AudioStreamPlayer" parent="Musics" unique_id=2019011683]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = ExtResource("12_mrdk3")
|
||||||
|
|
||||||
|
[node name="Estia" type="AudioStreamPlayer" parent="Musics" unique_id=531815272]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = ExtResource("24_eeq8n")
|
||||||
|
volume_db = -5.0
|
||||||
|
|
||||||
|
[node name="AstraEnd" type="AudioStreamPlayer" parent="Musics" unique_id=818527318]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = ExtResource("25_1r4ky")
|
||||||
|
volume_db = -5.0
|
||||||
|
|
||||||
[node name="Sfx" type="Node" parent="." unique_id=2023641207]
|
[node name="Sfx" type="Node" parent="." unique_id=2023641207]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|
||||||
|
|||||||
@@ -58,9 +58,6 @@ func _on_change_scene(scene : Scene):
|
|||||||
elif scene is GarageScene:
|
elif scene is GarageScene:
|
||||||
stop_all_musics()
|
stop_all_musics()
|
||||||
play_ambiance_alone("Astra", false)
|
play_ambiance_alone("Astra", false)
|
||||||
elif scene is BoreaScene:
|
|
||||||
play_music_alone("Meeting_demeter")
|
|
||||||
stop_all_ambiances()
|
|
||||||
elif scene is VendingMachineScene:
|
elif scene is VendingMachineScene:
|
||||||
stop_all_musics()
|
stop_all_musics()
|
||||||
play_ambiance_alone("VendingRoom", false)
|
play_ambiance_alone("VendingRoom", false)
|
||||||
@@ -70,6 +67,21 @@ func _on_change_scene(scene : Scene):
|
|||||||
elif scene is CaveScene:
|
elif scene is CaveScene:
|
||||||
stop_all_musics()
|
stop_all_musics()
|
||||||
play_ambiance_alone("Cave", false)
|
play_ambiance_alone("Cave", false)
|
||||||
|
elif scene is BoreaScene:
|
||||||
|
play_music_alone("MeetingDemeter", false, 0.)
|
||||||
|
stop_all_ambiances()
|
||||||
|
elif scene is AquaScene:
|
||||||
|
play_music_alone("Aqua")
|
||||||
|
stop_all_ambiances()
|
||||||
|
elif scene is SubterraScene:
|
||||||
|
play_music_alone("Subterra")
|
||||||
|
stop_all_ambiances()
|
||||||
|
elif scene is EstiaScene:
|
||||||
|
play_music_alone("Estia")
|
||||||
|
stop_all_ambiances()
|
||||||
|
elif scene is AstraEndScene:
|
||||||
|
play_music_alone("AstraEnd")
|
||||||
|
stop_all_ambiances()
|
||||||
|
|
||||||
# Fonction s'exécutant à chaque début de timeline
|
# Fonction s'exécutant à chaque début de timeline
|
||||||
func _on_timeline_started():
|
func _on_timeline_started():
|
||||||
@@ -207,7 +219,7 @@ func change_ambiances_volume(db_change := 0., fade := DEFAULT_FADE_TIME):
|
|||||||
|
|
||||||
# Joue un
|
# Joue un
|
||||||
# - player_name : Nom de la Node dans la scène Godot à jouer
|
# - player_name : Nom de la Node dans la scène Godot à jouer
|
||||||
func play_sfx(sfx_name : String, pitch = 1.):
|
func play_sfx(sfx_name : String, _pitch = 1.):
|
||||||
var player := %Sfx.find_child(sfx_name) as AudioStreamPlayer
|
var player := %Sfx.find_child(sfx_name) as AudioStreamPlayer
|
||||||
if player:
|
if player:
|
||||||
player.play()
|
player.play()
|
||||||
|
|||||||
@@ -0,0 +1,71 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://cbfoonpkmmva8"
|
||||||
|
path="res://.godot/imported/talion_spray.blend-3cc293a04161d1f6f5e9c094a05903f8.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/game_data/scripts/artefacts/talion_spray/talion_spray.blend"
|
||||||
|
dest_files=["res://.godot/imported/talion_spray.blend-3cc293a04161d1f6f5e9c094a05903f8.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
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": {
|
||||||
|
"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/vertex_colors=1
|
||||||
|
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
|
||||||
|
gltf/texture_map_mode=1
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
extends Artefact
|
||||||
|
class_name TalionSprayArtifact
|
||||||
|
|
||||||
|
func get_artefact_name() -> String:
|
||||||
|
return "TALION_SPRAY"
|
||||||
|
|
||||||
|
func get_artefact_desc() -> String:
|
||||||
|
return "TALION_SPRAY_DESC_TEXT"
|
||||||
|
|
||||||
|
func get_3d_scene() -> PackedScene:
|
||||||
|
return preload("res://common/game_data/scripts/artefacts/talion_spray/talion_spray.blend")
|
||||||
|
|
||||||
|
func modify_plant_base_score(plant_base_score : int) -> int:
|
||||||
|
return plant_base_score + 1
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://2eo5lucwktg4
|
||||||
@@ -1,16 +1,28 @@
|
|||||||
extends Resource
|
extends Resource
|
||||||
class_name GameData
|
class_name GameData
|
||||||
|
|
||||||
enum GameMode {STORY}
|
enum Mode {STORY, INFINITE}
|
||||||
|
|
||||||
signal current_run_updated(r : RunData)
|
signal current_run_updated(r : RunData)
|
||||||
signal current_region_data_updated(p : RegionData)
|
signal current_region_data_updated(p : RegionData)
|
||||||
|
|
||||||
|
func _init(
|
||||||
|
_game_mode : Mode = Mode.STORY
|
||||||
|
):
|
||||||
|
game_mode = _game_mode
|
||||||
|
if game_mode == Mode.STORY:
|
||||||
|
progression_data = StoryProgressionData.new()
|
||||||
|
elif game_mode == Mode.INFINITE:
|
||||||
|
progression_data = InfiniteProgressionData.new()
|
||||||
|
|
||||||
|
|
||||||
|
@export var game_mode : Mode = GameData.Mode.STORY
|
||||||
|
|
||||||
@export var player_data : PlayerData = PlayerData.new()
|
@export var player_data : PlayerData = PlayerData.new()
|
||||||
|
|
||||||
@export var progression_data : ProgressionData = ProgressionData.new()
|
@export var progression_data : ProgressionData
|
||||||
|
|
||||||
@export var current_run : RunData = start_run() :
|
@export var current_run : RunData :
|
||||||
set(v):
|
set(v):
|
||||||
current_run = v
|
current_run = v
|
||||||
current_run_updated.emit(v)
|
current_run_updated.emit(v)
|
||||||
@@ -30,8 +42,6 @@ signal current_region_data_updated(p : RegionData)
|
|||||||
|
|
||||||
@export var item_announced = []
|
@export var item_announced = []
|
||||||
|
|
||||||
@export var game_mode : GameMode = GameMode.STORY
|
|
||||||
|
|
||||||
@export var dialogs_done : Array[String] = [] #Chemin des dialogues terminés
|
@export var dialogs_done : Array[String] = [] #Chemin des dialogues terminés
|
||||||
@export var tutorials_done : Array[String] = []
|
@export var tutorials_done : Array[String] = []
|
||||||
|
|
||||||
@@ -39,7 +49,7 @@ func start_run() -> RunData:
|
|||||||
player_data.clear_inventory()
|
player_data.clear_inventory()
|
||||||
player_data.update_with_artefacts([])
|
player_data.update_with_artefacts([])
|
||||||
current_run = RunData.new()
|
current_run = RunData.new()
|
||||||
current_run.story_step = progression_data.story_step.duplicate_deep()
|
current_run.story_step = progression_data.get_story_step().duplicate_deep()
|
||||||
current_run.generate_next_run_points()
|
current_run.generate_next_run_points()
|
||||||
current_run.current_run_point_changed.connect(
|
current_run.current_run_point_changed.connect(
|
||||||
func(rp : RunPoint):
|
func(rp : RunPoint):
|
||||||
@@ -59,12 +69,14 @@ func start_region(region_param : RegionParameter):
|
|||||||
current_region_data = RegionData.new(region_param)
|
current_region_data = RegionData.new(region_param)
|
||||||
|
|
||||||
func give_up():
|
func give_up():
|
||||||
|
progression_data.finish_run(current_run)
|
||||||
current_region_data = null
|
current_region_data = null
|
||||||
current_run = null
|
current_run = null
|
||||||
start_run()
|
start_run()
|
||||||
SceneManager.change_to_scene(progression_data.story_step.get_respawn_scene())
|
SceneManager.change_to_scene(progression_data.get_story_step().get_respawn_scene())
|
||||||
|
|
||||||
func finish_story_step():
|
func finish_story_step():
|
||||||
|
progression_data.finish_run(current_run)
|
||||||
progression_data.next_story_step()
|
progression_data.next_story_step()
|
||||||
current_region_data = null
|
current_region_data = null
|
||||||
start_run()
|
start_run()
|
||||||
|
|||||||
41
common/game_data/scripts/infinite_progression_data.gd
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
extends ProgressionData
|
||||||
|
class_name InfiniteProgressionData
|
||||||
|
|
||||||
|
func get_story_step() -> StoryStep:
|
||||||
|
return InfiniteStoryStep.new(run_number)
|
||||||
|
|
||||||
|
func get_story_progression() -> float:
|
||||||
|
return 0.
|
||||||
|
|
||||||
|
func discover_mutation(_pm : PlantMutation) -> void:
|
||||||
|
pass
|
||||||
|
|
||||||
|
func get_mutations_discovered() -> Array[String]:
|
||||||
|
var mutation_discovered : Array[String] = []
|
||||||
|
for m in get_all_mutations():
|
||||||
|
mutation_discovered.append(m.get_mutation_id())
|
||||||
|
return mutation_discovered
|
||||||
|
|
||||||
|
func next_story_step() -> void:
|
||||||
|
pass
|
||||||
|
|
||||||
|
func are_all_mutations_unlocked() -> bool:
|
||||||
|
return true
|
||||||
|
|
||||||
|
func unlock_new_mutation() -> PlantMutation:
|
||||||
|
return null
|
||||||
|
|
||||||
|
func get_available_mutations() -> Array[PlantMutation]:
|
||||||
|
return get_all_mutations()
|
||||||
|
|
||||||
|
func set_best_run(v := best_run):
|
||||||
|
if best_run < 10 and v == 10:
|
||||||
|
SteamConnection.unlock_achievement(SteamConnection.ACH_STW_HIT_10_INFINITE)
|
||||||
|
|
||||||
|
if best_run < 20 and v == 20:
|
||||||
|
SteamConnection.unlock_achievement(SteamConnection.ACH_STW_HIT_20_INFINITE)
|
||||||
|
|
||||||
|
if best_run < 30 and v == 30:
|
||||||
|
SteamConnection.unlock_achievement(SteamConnection.ACH_STW_HIT_30_INFINITE)
|
||||||
|
|
||||||
|
best_run = v
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://iigxgqiyn0p4
|
||||||
@@ -1,25 +1,28 @@
|
|||||||
|
@abstract
|
||||||
extends Resource
|
extends Resource
|
||||||
class_name ProgressionData
|
class_name ProgressionData
|
||||||
|
|
||||||
@export var planted_mutation_ids: Array[String] = []
|
@export var run_number : int = 0
|
||||||
@export var story_step_i := 0
|
@export var best_run : int = 0 : set = set_best_run
|
||||||
@export var mutations_unlocked = 8
|
|
||||||
|
|
||||||
var all_mutations: Array[PlantMutation] : get = get_all_mutations
|
@abstract func get_story_step() -> StoryStep
|
||||||
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
|
|
||||||
|
|
||||||
func get_story_step() -> StoryStep:
|
@abstract func get_story_progression() -> float
|
||||||
return get_all_story_steps()[story_step_i]
|
|
||||||
|
|
||||||
func next_story_step() -> void:
|
@abstract func next_story_step() -> void
|
||||||
get_story_step()._on_finish()
|
|
||||||
if story_step_i + 1 < len(get_all_story_steps()):
|
|
||||||
story_step_i += 1
|
|
||||||
|
|
||||||
func get_available_mutations() -> Array[PlantMutation]:
|
@abstract func get_available_mutations() -> Array[PlantMutation]
|
||||||
return get_all_mutations().slice(0, mutations_unlocked)
|
|
||||||
|
@abstract func are_all_mutations_unlocked() -> bool
|
||||||
|
|
||||||
|
@abstract func discover_mutation(_pm : PlantMutation) -> void
|
||||||
|
|
||||||
|
@abstract func get_mutations_discovered() -> Array[String]
|
||||||
|
|
||||||
|
@abstract func unlock_new_mutation() -> PlantMutation
|
||||||
|
|
||||||
|
func set_best_run(v := best_run):
|
||||||
|
best_run = v
|
||||||
|
|
||||||
func get_all_mutations() -> Array[PlantMutation]:
|
func get_all_mutations() -> Array[PlantMutation]:
|
||||||
return [
|
return [
|
||||||
@@ -38,6 +41,11 @@ func get_all_mutations() -> Array[PlantMutation]:
|
|||||||
GenerousMutation.new(),
|
GenerousMutation.new(),
|
||||||
ProtectiveMutation.new(),
|
ProtectiveMutation.new(),
|
||||||
PureMutation.new(),
|
PureMutation.new(),
|
||||||
|
CleaningMutation.new(),
|
||||||
|
ErmitMutation.new(),
|
||||||
|
TropicalMutation.new(),
|
||||||
|
RhizomeMutation.new(),
|
||||||
|
SpontaneousMutation.new()
|
||||||
]
|
]
|
||||||
|
|
||||||
func get_all_artifacts() -> Array[Artefact]:
|
func get_all_artifacts() -> Array[Artefact]:
|
||||||
@@ -47,13 +55,21 @@ func get_all_artifacts() -> Array[Artefact]:
|
|||||||
StabilisatorArtefact.new(),
|
StabilisatorArtefact.new(),
|
||||||
TalionOverloaderArtefact.new(),
|
TalionOverloaderArtefact.new(),
|
||||||
TalionSoilArtifact.new(),
|
TalionSoilArtifact.new(),
|
||||||
|
TalionSprayArtifact.new()
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
func get_all_story_steps() -> Array[StoryStep]:
|
func get_all_story_steps() -> Array[StoryStep]:
|
||||||
return [
|
return [
|
||||||
TutorialStoryStep.new(),
|
# TutorialStoryStep.new(),
|
||||||
StartStoryStep.new(),
|
# StartStoryStep.new(),
|
||||||
MercuryStoryStep.new(),
|
# MercuryStoryStep.new(),
|
||||||
BoreaStoryStep.new()
|
BoreaStoryStep.new(),
|
||||||
|
AquaStoryStep.new(),
|
||||||
|
SubterraStoryStep.new(),
|
||||||
|
EstiaStoryStep.new(),
|
||||||
|
AstraStoryStep.new(),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
func finish_run(run : RunData):
|
||||||
|
run_number += 1
|
||||||
|
best_run = max(best_run, run.level)
|
||||||
|
|||||||
36
common/game_data/scripts/story/infinite_story_step.gd
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
@tool
|
||||||
|
extends StoryStep
|
||||||
|
class_name InfiniteStoryStep
|
||||||
|
|
||||||
|
var run_number := 0
|
||||||
|
|
||||||
|
func _init(
|
||||||
|
_run_number := 0
|
||||||
|
):
|
||||||
|
run_number = _run_number
|
||||||
|
|
||||||
|
|
||||||
|
func get_respawn_scene() -> Scene:
|
||||||
|
return RelayBaseScene.new(
|
||||||
|
"INFINITE_MODE",
|
||||||
|
str(run_number),
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
func get_cave_occurence(_level : int) -> int:
|
||||||
|
return 0
|
||||||
|
|
||||||
|
func is_region_sequence_infinite() -> bool:
|
||||||
|
return true
|
||||||
|
|
||||||
|
func get_region_sequence_length() -> int:
|
||||||
|
return 1000
|
||||||
|
|
||||||
|
func is_run_point_dangerous(level : int) -> bool:
|
||||||
|
return level%6 == 0 and level != 0
|
||||||
|
|
||||||
|
func get_destination_text() -> String:
|
||||||
|
return tr("INFINITE")
|
||||||
|
|
||||||
|
func get_destination_scene() -> Scene:
|
||||||
|
return BoreaScene.new()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://bdonub7t01xmi
|
||||||
@@ -12,6 +12,8 @@ func get_destination_scene() -> Scene:
|
|||||||
return BoreaScene.new()
|
return BoreaScene.new()
|
||||||
|
|
||||||
func get_run_progress(level : int) -> int:
|
func get_run_progress(level : int) -> int:
|
||||||
|
if is_region_sequence_infinite():
|
||||||
|
return 0
|
||||||
return get_region_sequence_length() - level
|
return get_region_sequence_length() - level
|
||||||
|
|
||||||
func get_ship_dialog_path(_level : int, _ship_in_space := true) -> String:
|
func get_ship_dialog_path(_level : int, _ship_in_space := true) -> String:
|
||||||
@@ -19,10 +21,15 @@ func get_ship_dialog_path(_level : int, _ship_in_space := true) -> String:
|
|||||||
#region ------------------ Run ------------------
|
#region ------------------ Run ------------------
|
||||||
|
|
||||||
func is_run_finished(level : int) -> bool:
|
func is_run_finished(level : int) -> bool:
|
||||||
|
if is_region_sequence_infinite():
|
||||||
|
return false
|
||||||
return level == get_region_sequence_length() - 1
|
return level == get_region_sequence_length() - 1
|
||||||
|
|
||||||
|
func is_region_sequence_infinite() -> bool:
|
||||||
|
return false
|
||||||
|
|
||||||
func get_region_sequence_length() -> int:
|
func get_region_sequence_length() -> int:
|
||||||
return 7
|
return 2 #TO CHANGE TO 7
|
||||||
|
|
||||||
func get_first_vending_machine_occurence(_level : int) -> int:
|
func get_first_vending_machine_occurence(_level : int) -> int:
|
||||||
return 2
|
return 2
|
||||||
@@ -48,6 +55,8 @@ func get_charge_number(_level : int) -> int:
|
|||||||
return 10
|
return 10
|
||||||
|
|
||||||
func is_run_point_dangerous(level : int) -> bool:
|
func is_run_point_dangerous(level : int) -> bool:
|
||||||
|
if is_region_sequence_infinite():
|
||||||
|
return false
|
||||||
return level == get_region_sequence_length() - 2
|
return level == get_region_sequence_length() - 2
|
||||||
|
|
||||||
func get_objective_for_region(level : int) -> int:
|
func get_objective_for_region(level : int) -> int:
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
@tool
|
||||||
extends StoryStep
|
extends StoryStep
|
||||||
class_name MercuryStoryStep
|
class_name MercuryStoryStep
|
||||||
|
|
||||||
|
|||||||
@@ -10,16 +10,6 @@ func get_respawn_scene() -> Scene:
|
|||||||
true
|
true
|
||||||
)
|
)
|
||||||
|
|
||||||
func get_objective_for_region(l : int) -> int:
|
|
||||||
match l:
|
|
||||||
0: return 0
|
|
||||||
1: return 8
|
|
||||||
_: return get_objective_for_region(l-1) + l * 5
|
|
||||||
|
|
||||||
|
|
||||||
func get_region_sequence_length() -> int:
|
|
||||||
return 8
|
|
||||||
|
|
||||||
func get_destination_text() -> String:
|
func get_destination_text() -> String:
|
||||||
return tr("BOREA_BASE")
|
return tr("BOREA_BASE")
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
extends StoryStep
|
||||||
|
class_name AquaStoryStep
|
||||||
|
|
||||||
|
const AQUA_TRAVEL_PHONE_CALL_DIALOG_PATH = "res://dialogs/timelines/2_aqua/1_aqua_travel_phone_call.dtl"
|
||||||
|
|
||||||
|
func get_respawn_scene() -> Scene:
|
||||||
|
return RelayBaseScene.new(
|
||||||
|
"BOREA_BASE",
|
||||||
|
"004",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
func get_destination_text() -> String:
|
||||||
|
return tr("AQUA_BASE")
|
||||||
|
|
||||||
|
func get_destination_scene() -> Scene:
|
||||||
|
return AquaScene.new()
|
||||||
|
|
||||||
|
func get_ship_dialog_path(level : int, _ship_in_space := true) -> String:
|
||||||
|
if level == 5:
|
||||||
|
return AQUA_TRAVEL_PHONE_CALL_DIALOG_PATH
|
||||||
|
return ""
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://cvuv0lig50jok
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
extends StoryStep
|
||||||
|
class_name SubterraStoryStep
|
||||||
|
|
||||||
|
const TRAVEL_PHONE_CALL_DIALOG_PATH = "res://dialogs/timelines/3_subterra/1_subterra_travel_phone_call.dtl"
|
||||||
|
|
||||||
|
func get_respawn_scene() -> Scene:
|
||||||
|
return RelayBaseScene.new(
|
||||||
|
"AQUA_BASE",
|
||||||
|
"005",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
func get_destination_text() -> String:
|
||||||
|
return tr("SUBTERRA_BASE")
|
||||||
|
|
||||||
|
func get_destination_scene() -> Scene:
|
||||||
|
return SubterraScene.new()
|
||||||
|
|
||||||
|
func get_ship_dialog_path(level : int, _ship_in_space := true) -> String:
|
||||||
|
if level == 5:
|
||||||
|
return TRAVEL_PHONE_CALL_DIALOG_PATH
|
||||||
|
return ""
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://b5ixh763b7s34
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
extends StoryStep
|
||||||
|
class_name EstiaStoryStep
|
||||||
|
|
||||||
|
const TRAVEL_PHONE_CALL_DIALOG_PATH = "res://dialogs/timelines/4_estia/1_estia_travel_phone_call.dtl"
|
||||||
|
|
||||||
|
func get_respawn_scene() -> Scene:
|
||||||
|
return RelayBaseScene.new(
|
||||||
|
"SUBTERRA_BASE",
|
||||||
|
"006",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
func get_destination_text() -> String:
|
||||||
|
return tr("SUBTERRA_BASE")
|
||||||
|
|
||||||
|
func get_destination_scene() -> Scene:
|
||||||
|
return EstiaScene.new()
|
||||||
|
|
||||||
|
func get_ship_dialog_path(level : int, _ship_in_space := true) -> String:
|
||||||
|
if level == 5:
|
||||||
|
return TRAVEL_PHONE_CALL_DIALOG_PATH
|
||||||
|
return ""
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://cnxvc4wfr7dba
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
extends StoryStep
|
||||||
|
class_name AstraStoryStep
|
||||||
|
|
||||||
|
const TRAVEL_PHONE_CALL_DIALOG_PATH = "res://dialogs/timelines/6_astra/1_astra_travel_phone_call.dtl"
|
||||||
|
|
||||||
|
func get_respawn_scene() -> Scene:
|
||||||
|
return RelayBaseScene.new(
|
||||||
|
"ESTIA_BASE",
|
||||||
|
"007",
|
||||||
|
true
|
||||||
|
)
|
||||||
|
|
||||||
|
func get_destination_text() -> String:
|
||||||
|
return tr("ESTIA_BASE")
|
||||||
|
|
||||||
|
func get_destination_scene() -> Scene:
|
||||||
|
return AstraEndScene.new()
|
||||||
|
|
||||||
|
func get_ship_dialog_path(level : int, _ship_in_space := true) -> String:
|
||||||
|
if level == 4:
|
||||||
|
return TRAVEL_PHONE_CALL_DIALOG_PATH
|
||||||
|
return ""
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://bkm4tgllpq0p
|
||||||
36
common/game_data/scripts/story_progression_data.gd
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
extends ProgressionData
|
||||||
|
class_name StoryProgressionData
|
||||||
|
|
||||||
|
@export var planted_mutation_ids: Array[String] = []
|
||||||
|
@export var story_step_i := 0
|
||||||
|
@export var mutations_unlocked = 8
|
||||||
|
|
||||||
|
func get_story_step() -> StoryStep:
|
||||||
|
return get_all_story_steps()[story_step_i]
|
||||||
|
|
||||||
|
func get_story_progression() -> float:
|
||||||
|
return max(0,float(story_step_i)) / len(
|
||||||
|
get_all_story_steps()
|
||||||
|
)
|
||||||
|
|
||||||
|
func discover_mutation(pm : PlantMutation) -> void:
|
||||||
|
planted_mutation_ids.append(pm.id)
|
||||||
|
|
||||||
|
func get_mutations_discovered() -> Array[String]:
|
||||||
|
return planted_mutation_ids
|
||||||
|
|
||||||
|
func next_story_step() -> void:
|
||||||
|
get_story_step()._on_finish()
|
||||||
|
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 are_all_mutations_unlocked() -> bool:
|
||||||
|
return mutations_unlocked >= len(get_all_mutations())
|
||||||
|
|
||||||
|
func unlock_new_mutation() -> PlantMutation:
|
||||||
|
var new_mutation = get_all_mutations()[mutations_unlocked]
|
||||||
|
mutations_unlocked += 1
|
||||||
|
return new_mutation
|
||||||
1
common/game_data/scripts/story_progression_data.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://vcoy8pt780cl
|
||||||
@@ -1,35 +1,62 @@
|
|||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
const SAVE_GAME_LOCATION = "user://stw_playtest_2_save.tres"
|
const SAVE_NAME = "playtest_2"
|
||||||
|
|
||||||
|
const SAVE_STORY_GAME_LOCATION = "user://stw_%s_save.tres" % SAVE_NAME
|
||||||
|
const SAVE_INFINTE_GAME_LOCATION = "user://stw_%s_infinite_save.tres" % SAVE_NAME
|
||||||
const SAVE_SETTINGS_LOCATION = "user://stw_settings.tres"
|
const SAVE_SETTINGS_LOCATION = "user://stw_settings.tres"
|
||||||
|
|
||||||
signal game_loaded
|
signal game_loaded
|
||||||
signal game_data_updated(g : GameData)
|
|
||||||
|
var game_mode_choosen := GameData.Mode.STORY
|
||||||
|
|
||||||
var game_data : GameData :
|
var game_data : GameData :
|
||||||
set(v):
|
get():
|
||||||
game_data = v
|
if game_mode_choosen == GameData.Mode.STORY:
|
||||||
game_data_updated.emit(v)
|
return story_game_data
|
||||||
|
elif game_mode_choosen == GameData.Mode.INFINITE:
|
||||||
|
return infinite_game_data
|
||||||
|
return null
|
||||||
|
|
||||||
|
var story_game_data : GameData
|
||||||
|
var infinite_game_data : GameData
|
||||||
|
|
||||||
var settings_data : SettingsData
|
var settings_data : SettingsData
|
||||||
|
|
||||||
var current_dialog_path : String
|
var current_dialog_path : String
|
||||||
|
|
||||||
func load_game_data() -> GameData:
|
func load_story_game_data() -> GameData:
|
||||||
game_data = null
|
story_game_data = null
|
||||||
if ResourceLoader.exists(SAVE_GAME_LOCATION) and ResourceLoader.load(SAVE_GAME_LOCATION):
|
if ResourceLoader.exists(SAVE_STORY_GAME_LOCATION) and ResourceLoader.load(SAVE_STORY_GAME_LOCATION):
|
||||||
game_data = ResourceLoader.load(SAVE_GAME_LOCATION).duplicate_deep()
|
story_game_data = ResourceLoader.load(SAVE_STORY_GAME_LOCATION).duplicate_deep()
|
||||||
game_loaded.emit()
|
game_loaded.emit()
|
||||||
|
|
||||||
return game_data
|
return story_game_data
|
||||||
|
|
||||||
|
func load_infinite_game_data() -> GameData:
|
||||||
|
infinite_game_data = null
|
||||||
|
if ResourceLoader.exists(SAVE_INFINTE_GAME_LOCATION) and ResourceLoader.load(SAVE_INFINTE_GAME_LOCATION):
|
||||||
|
infinite_game_data = ResourceLoader.load(SAVE_INFINTE_GAME_LOCATION).duplicate_deep()
|
||||||
|
|
||||||
|
return infinite_game_data
|
||||||
|
|
||||||
func start_game_data():
|
func start_game_data():
|
||||||
game_data = GameData.new()
|
if game_mode_choosen == GameData.Mode.STORY:
|
||||||
|
story_game_data = GameData.new(GameData.Mode.STORY)
|
||||||
|
story_game_data.start_run()
|
||||||
|
else:
|
||||||
|
infinite_game_data = GameData.new(GameData.Mode.INFINITE)
|
||||||
|
infinite_game_data.start_run()
|
||||||
|
|
||||||
save_game_data()
|
save_game_data()
|
||||||
|
|
||||||
func save_game_data():
|
func save_game_data():
|
||||||
if game_data:
|
if game_mode_choosen == GameData.Mode.STORY:
|
||||||
ResourceSaver.save(game_data, SAVE_GAME_LOCATION)
|
if story_game_data:
|
||||||
|
ResourceSaver.save(story_game_data, SAVE_STORY_GAME_LOCATION)
|
||||||
|
elif game_mode_choosen == GameData.Mode.INFINITE:
|
||||||
|
if infinite_game_data:
|
||||||
|
ResourceSaver.save(infinite_game_data, SAVE_INFINTE_GAME_LOCATION)
|
||||||
|
|
||||||
func load_settings_data() -> SettingsData:
|
func load_settings_data() -> SettingsData:
|
||||||
if ResourceLoader.exists(SAVE_SETTINGS_LOCATION):
|
if ResourceLoader.exists(SAVE_SETTINGS_LOCATION):
|
||||||
@@ -45,7 +72,8 @@ func save_settings():
|
|||||||
ResourceSaver.save(settings_data, SAVE_SETTINGS_LOCATION)
|
ResourceSaver.save(settings_data, SAVE_SETTINGS_LOCATION)
|
||||||
|
|
||||||
func _init():
|
func _init():
|
||||||
load_game_data()
|
load_story_game_data()
|
||||||
|
load_infinite_game_data()
|
||||||
load_settings_data()
|
load_settings_data()
|
||||||
update_language_settings()
|
update_language_settings()
|
||||||
update_video_settings()
|
update_video_settings()
|
||||||
@@ -91,3 +119,5 @@ func update_inputs(s : SettingsData = settings_data):
|
|||||||
InputMap.action_erase_events(s.action_remapped[i])
|
InputMap.action_erase_events(s.action_remapped[i])
|
||||||
InputMap.action_add_event(s.action_remapped[i], s.input_remapped[i])
|
InputMap.action_add_event(s.action_remapped[i], s.input_remapped[i])
|
||||||
|
|
||||||
|
func has_unlocked_infinite_mode():
|
||||||
|
return true
|
||||||
23
common/icons/bug.svg
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="currentColor"
|
||||||
|
class="icon icon-tabler icons-tabler-filled icon-tabler-bug"
|
||||||
|
version="1.1"
|
||||||
|
id="svg2"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<path
|
||||||
|
stroke="none"
|
||||||
|
d="M0 0h24v24H0z"
|
||||||
|
fill="none"
|
||||||
|
id="path1" />
|
||||||
|
<path
|
||||||
|
d="M12 4a4 4 0 0 1 3.995 3.8l.005 .2a1 1 0 0 1 .428 .096l3.033 -1.938a1 1 0 1 1 1.078 1.684l-3.015 1.931a7.17 7.17 0 0 1 .476 2.227h3a1 1 0 0 1 0 2h-3v1a6.01 6.01 0 0 1 -.195 1.525l2.708 1.616a1 1 0 1 1 -1.026 1.718l-2.514 -1.501a6.002 6.002 0 0 1 -3.973 2.56v-5.918a1 1 0 0 0 -2 0v5.917a6.002 6.002 0 0 1 -3.973 -2.56l-2.514 1.503a1 1 0 1 1 -1.026 -1.718l2.708 -1.616a6.01 6.01 0 0 1 -.195 -1.526v-1h-3a1 1 0 0 1 0 -2h3.001v-.055a7 7 0 0 1 .474 -2.173l-3.014 -1.93a1 1 0 1 1 1.078 -1.684l3.032 1.939l.024 -.012l.068 -.027l.019 -.005l.016 -.006l.032 -.008l.04 -.013l.034 -.007l.034 -.004l.045 -.008l.015 -.001l.015 -.002l.087 -.004a4 4 0 0 1 4 -4zm0 2a2 2 0 0 0 -2 2h4a2 2 0 0 0 -2 -2z"
|
||||||
|
id="path2"
|
||||||
|
style="fill:#ffffff;fill-opacity:1" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
43
common/icons/bug.svg.import
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://ceoxyc8lxuqet"
|
||||||
|
path="res://.godot/imported/bug.svg-30d611f322c5908f7609c3e1222553c7.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/icons/bug.svg"
|
||||||
|
dest_files=["res://.godot/imported/bug.svg-30d611f322c5908f7609c3e1222553c7.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
|
||||||
23
common/icons/christmas-tree.svg
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="currentColor"
|
||||||
|
class="icon icon-tabler icons-tabler-filled icon-tabler-christmas-tree"
|
||||||
|
version="1.1"
|
||||||
|
id="svg2"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<path
|
||||||
|
stroke="none"
|
||||||
|
d="M0 0h24v24H0z"
|
||||||
|
fill="none"
|
||||||
|
id="path1" />
|
||||||
|
<path
|
||||||
|
d="M15 19v1a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2v-1zm-10 -1c-.89 0 -1.337 -1.077 -.707 -1.707l2.855 -2.857l-1.464 -.487a1 1 0 0 1 -.472 -1.565l.08 -.091l3.019 -3.02l-.758 -.379a1 1 0 0 1 -.343 -1.507l.083 -.094l4 -4a1 1 0 0 1 1.414 0l4 4a1 1 0 0 1 -.26 1.601l-.759 .379l3.02 3.02a1 1 0 0 1 -.279 1.61l-.113 .046l-1.465 .487l2.856 2.857c.603 .602 .22 1.614 -.593 1.701l-.114 .006z"
|
||||||
|
id="path2"
|
||||||
|
style="fill:#ffffff;fill-opacity:1" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 892 B |
43
common/icons/christmas-tree.svg.import
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dofqju0k1nguf"
|
||||||
|
path="res://.godot/imported/christmas-tree.svg-2d675a899996dc14dfea64e4ba2ac385.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/icons/christmas-tree.svg"
|
||||||
|
dest_files=["res://.godot/imported/christmas-tree.svg-2d675a899996dc14dfea64e4ba2ac385.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
|
||||||
@@ -1 +1,31 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#ffffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-cloud-rain"><path stroke="none" d="M0 0h24v24H0z" fill="none" /><path d="M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7" /><path d="M11 13v2m0 3v2m4 -5v2m0 3v2" /></svg>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
stroke-width="2"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
class="icon icon-tabler icons-tabler-outline icon-tabler-cloud-rain"
|
||||||
|
version="1.1"
|
||||||
|
id="svg3"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs3" />
|
||||||
|
<path
|
||||||
|
stroke="none"
|
||||||
|
d="M0 0h24v24H0z"
|
||||||
|
fill="none"
|
||||||
|
id="path1" />
|
||||||
|
<path
|
||||||
|
d="M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7"
|
||||||
|
id="path2"
|
||||||
|
style="stroke:#ffffff;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
d="M11 13v2m0 3v2m4 -5v2m0 3v2"
|
||||||
|
id="path3"
|
||||||
|
style="stroke:#ffffff;stroke-opacity:1" />
|
||||||
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 417 B After Width: | Height: | Size: 780 B |
35
common/icons/dots.svg
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
stroke-width="2"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
class="icon icon-tabler icons-tabler-outline icon-tabler-dots"
|
||||||
|
version="1.1"
|
||||||
|
id="svg4"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs4" />
|
||||||
|
<path
|
||||||
|
stroke="none"
|
||||||
|
d="M0 0h24v24H0z"
|
||||||
|
fill="none"
|
||||||
|
id="path1" />
|
||||||
|
<path
|
||||||
|
d="M4 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"
|
||||||
|
id="path2"
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
d="M11 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"
|
||||||
|
id="path3"
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
d="M18 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"
|
||||||
|
id="path4"
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 956 B |
43
common/icons/dots.svg.import
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://elds8r780ted"
|
||||||
|
path="res://.godot/imported/dots.svg-c5aaef419fc83aaf7bc0ae28dabbcd0f.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/icons/dots.svg"
|
||||||
|
dest_files=["res://.godot/imported/dots.svg-c5aaef419fc83aaf7bc0ae28dabbcd0f.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
|
||||||
@@ -3,19 +3,20 @@
|
|||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://sdrr43mek1cl"
|
uid="uid://sdrr43mek1cl"
|
||||||
path="res://.godot/imported/globe.svg-e211d89cbdcd4219d25d8110f0497347.ctex"
|
path.s3tc="res://.godot/imported/globe.svg-e211d89cbdcd4219d25d8110f0497347.s3tc.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://common/icons/globe.svg"
|
source_file="res://common/icons/globe.svg"
|
||||||
dest_files=["res://.godot/imported/globe.svg-e211d89cbdcd4219d25d8110f0497347.ctex"]
|
dest_files=["res://.godot/imported/globe.svg-e211d89cbdcd4219d25d8110f0497347.s3tc.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
compress/mode=0
|
compress/mode=2
|
||||||
compress/high_quality=false
|
compress/high_quality=false
|
||||||
compress/lossy_quality=0.7
|
compress/lossy_quality=0.7
|
||||||
compress/uastc_level=0
|
compress/uastc_level=0
|
||||||
@@ -23,7 +24,7 @@ compress/rdo_quality_loss=0.0
|
|||||||
compress/hdr_compression=1
|
compress/hdr_compression=1
|
||||||
compress/normal_map=0
|
compress/normal_map=0
|
||||||
compress/channel_pack=0
|
compress/channel_pack=0
|
||||||
mipmaps/generate=false
|
mipmaps/generate=true
|
||||||
mipmaps/limit=-1
|
mipmaps/limit=-1
|
||||||
roughness/mode=0
|
roughness/mode=0
|
||||||
roughness/src_normal=""
|
roughness/src_normal=""
|
||||||
@@ -37,7 +38,7 @@ process/normal_map_invert_y=false
|
|||||||
process/hdr_as_srgb=false
|
process/hdr_as_srgb=false
|
||||||
process/hdr_clamp_exposure=false
|
process/hdr_clamp_exposure=false
|
||||||
process/size_limit=0
|
process/size_limit=0
|
||||||
detect_3d/compress_to=1
|
detect_3d/compress_to=0
|
||||||
svg/scale=2.0
|
svg/scale=2.0
|
||||||
editor/scale_with_editor_scale=false
|
editor/scale_with_editor_scale=false
|
||||||
editor/convert_colors_with_editor_theme=false
|
editor/convert_colors_with_editor_theme=false
|
||||||
|
|||||||
23
common/icons/leaf.svg
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="currentColor"
|
||||||
|
class="icon icon-tabler icons-tabler-filled icon-tabler-leaf"
|
||||||
|
version="1.1"
|
||||||
|
id="svg2"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<path
|
||||||
|
stroke="none"
|
||||||
|
d="M0 0h24v24H0z"
|
||||||
|
fill="none"
|
||||||
|
id="path1" />
|
||||||
|
<path
|
||||||
|
d="M3.055 14.328l-.018 -.168l-.004 -.043a11 11 0 0 1 -.047 -1.12c.018 -6.29 4.29 -9.997 13 -9.997h4.014a1 1 0 0 1 1 1l-.002 2.057c-.498 8.701 -4.74 12.943 -11.998 12.943h-2.631a16 16 0 0 0 -.375 2.11a1 1 0 1 1 -1.988 -.22q .174 -1.568 .58 -2.947l-.118 -.146l-.208 -.28l-.157 -.229l-.182 -.293l-.098 -.171l-.065 -.122a6 6 0 0 1 -.397 -.941l-.072 -.237l-.085 -.327l-.057 -.268l-.043 -.242zm8.539 -4.242c-2.845 1.265 -4.854 3.13 -6.108 5.583q .098 .2 .218 .4l.185 .281l.07 .097q .12 .164 .258 .329l.197 .224h.649c1.037 -2.271 2.777 -3.946 5.343 -5.086a1 1 0 0 0 -.812 -1.828"
|
||||||
|
id="path2"
|
||||||
|
style="fill:#ffffff;fill-opacity:1" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
43
common/icons/leaf.svg.import
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://koow6s66cvqk"
|
||||||
|
path="res://.godot/imported/leaf.svg-64997ac177eb77fe732afcb627c1b7f7.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/icons/leaf.svg"
|
||||||
|
dest_files=["res://.godot/imported/leaf.svg-64997ac177eb77fe732afcb627c1b7f7.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
|
||||||
31
common/icons/sparkles.svg
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="currentColor"
|
||||||
|
class="icon icon-tabler icons-tabler-filled icon-tabler-sparkles"
|
||||||
|
version="1.1"
|
||||||
|
id="svg4"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs4" />
|
||||||
|
<path
|
||||||
|
stroke="none"
|
||||||
|
d="M0 0h24v24H0z"
|
||||||
|
fill="none"
|
||||||
|
id="path1" />
|
||||||
|
<path
|
||||||
|
d="M16 19a1 1 0 0 1 0 -2a1 1 0 0 0 1 -1c0 -1.333 2 -1.333 2 0a1 1 0 0 0 1 1c1.333 0 1.333 2 0 2a1 1 0 0 0 -1 1c0 1.333 -2 1.333 -2 0a1 1 0 0 0 -1 -1"
|
||||||
|
id="path2"
|
||||||
|
style="fill:#ffffff;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
d="M3 11a5 5 0 0 0 5 -5c0 -1.333 2 -1.333 2 0a5 5 0 0 0 5 5c1.333 0 1.333 2 0 2a5 5 0 0 0 -5 5a1 1 0 0 1 -2 0a5 5 0 0 0 -5 -5c-1.333 0 -1.333 -2 0 -2"
|
||||||
|
id="path3"
|
||||||
|
style="fill:#ffffff;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
d="M16 7a1 1 0 0 1 0 -2a1 1 0 0 0 1 -1c0 -1.333 2 -1.333 2 0a1 1 0 0 0 1 1c1.333 0 1.333 2 0 2a1 1 0 0 0 -1 1c0 1.333 -2 1.333 -2 0a1 1 0 0 0 -1 -1"
|
||||||
|
id="path4"
|
||||||
|
style="fill:#ffffff;fill-opacity:1" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
43
common/icons/sparkles.svg.import
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://djq2l8aun82ou"
|
||||||
|
path="res://.godot/imported/sparkles.svg-916e1088ab60f75f5f1370971c1faf2d.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://common/icons/sparkles.svg"
|
||||||
|
dest_files=["res://.godot/imported/sparkles.svg-916e1088ab60f75f5f1370971c1faf2d.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
|
||||||
@@ -1,237 +1,38 @@
|
|||||||
[gd_scene format=3 uid="uid://b8gqdgabrjaml"]
|
[gd_scene format=3 uid="uid://b8gqdgabrjaml"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://dt2ip3pw2cboy" path="res://entities/plants/scripts/texture_builder/plant_texture_builder.gd" id="1_s8rsj"]
|
[ext_resource type="Script" uid="uid://dt2ip3pw2cboy" path="res://entities/plants/scripts/texture_builder/plant_texture_builder.gd" id="1_s8rsj"]
|
||||||
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="2_cfiqo"]
|
[ext_resource type="Resource" uid="uid://dad6gfvwocnj2" path="res://entities/plants/resources/plant_parts/Base.tres" id="2_tod72"]
|
||||||
[ext_resource type="Resource" uid="uid://7hrdkl6bf3o4" path="res://entities/plants/resources/plant_parts/Branch1.tres" id="4_ggud5"]
|
[ext_resource type="Resource" uid="uid://c6s833k5g18kd" path="res://entities/plants/resources/plant_parts/Branch.tres" id="3_0ca8x"]
|
||||||
[ext_resource type="Resource" uid="uid://d05ulm22k31w8" path="res://entities/plants/resources/plant_parts/Base2.tres" id="4_ron2q"]
|
[ext_resource type="Resource" uid="uid://bjb8g6h6lf4r2" path="res://entities/plants/resources/plant_parts/LeafF.tres" id="4_js3cu"]
|
||||||
[ext_resource type="Resource" uid="uid://bfyafiewcrjln" path="res://entities/plants/resources/plant_parts/Base1.tres" id="5_5fbyu"]
|
[ext_resource type="Script" uid="uid://u2j7hn5her8i" path="res://entities/plants/scripts/texture_builder/part_group.gd" id="5_npk80"]
|
||||||
[ext_resource type="Resource" uid="uid://d2vdf2sth2xjm" path="res://entities/plants/resources/plant_parts/Base3.tres" id="5_6raaj"]
|
[ext_resource type="Resource" uid="uid://bwqa7vouqhjmr" path="res://entities/plants/resources/plant_parts/LeafE.tres" id="6_hyb2i"]
|
||||||
[ext_resource type="Resource" uid="uid://ceisi5yyie7to" path="res://entities/plants/resources/plant_parts/Branch2.tres" id="5_ufbqh"]
|
[ext_resource type="Resource" uid="uid://b4g4d6y1n1xgp" path="res://entities/plants/resources/plant_parts/LeafI.tres" id="7_4gk8a"]
|
||||||
[ext_resource type="Resource" uid="uid://cxiu8frk04b5i" path="res://entities/plants/resources/plant_parts/Branch3.tres" id="6_jbu3q"]
|
[ext_resource type="Resource" uid="uid://b4towph8opjgh" path="res://entities/plants/resources/plant_parts/LeafNB.tres" id="8_alra6"]
|
||||||
[ext_resource type="Resource" uid="uid://53p5g07e3pb4" path="res://entities/plants/resources/plant_parts/Branch4.tres" id="7_21cjy"]
|
[ext_resource type="Resource" uid="uid://cqfb7vkocd8gf" path="res://entities/plants/resources/plant_parts/LeafL.tres" id="9_lggh7"]
|
||||||
[ext_resource type="Resource" uid="uid://cyfyodtfxne1w" path="res://entities/plants/resources/plant_parts/Branch5.tres" id="8_qm7aw"]
|
[ext_resource type="Resource" uid="uid://dw78e1nnajsxf" path="res://entities/plants/resources/plant_parts/FlowerD.tres" id="10_8r35x"]
|
||||||
[ext_resource type="Resource" uid="uid://cuvtf4y1dspcp" path="res://entities/plants/resources/plant_parts/Branch6.tres" id="9_3e4c1"]
|
[ext_resource type="Resource" uid="uid://bg2x1g8xfjk0t" path="res://entities/plants/resources/plant_parts/FlowerG.tres" id="11_rbd7l"]
|
||||||
[ext_resource type="Resource" uid="uid://dcjpei6xuiswp" path="res://entities/plants/resources/plant_parts/LeafE5.tres" id="10_5job5"]
|
[ext_resource type="Resource" uid="uid://bcgc05pjefid6" path="res://entities/plants/resources/plant_parts/FlowerH.tres" id="12_nfxo0"]
|
||||||
[ext_resource type="Resource" uid="uid://85bwx2tdjx0h" path="res://entities/plants/resources/plant_parts/LeafE7.tres" id="12_b21au"]
|
[ext_resource type="Resource" uid="uid://dvwmk2suorf05" path="res://entities/plants/resources/plant_parts/LeafG.tres" id="12_tjaiv"]
|
||||||
[ext_resource type="Resource" uid="uid://6jnbms553dyd" path="res://entities/plants/resources/plant_parts/Branch7.tres" id="12_yjh7s"]
|
[ext_resource type="Resource" uid="uid://di0nwki5jr205" path="res://entities/plants/resources/plant_parts/FlowerJ.tres" id="13_i8j71"]
|
||||||
[ext_resource type="Resource" uid="uid://cowkewtw2lg4i" path="res://entities/plants/resources/plant_parts/FlowerA1.tres" id="13_17ac3"]
|
[ext_resource type="Resource" uid="uid://b3ff6xg5lmevs" path="res://entities/plants/resources/plant_parts/FlowerF.tres" id="14_l2vrg"]
|
||||||
[ext_resource type="Resource" uid="uid://bgv3nb10t6u3y" path="res://entities/plants/resources/plant_parts/LeafF1.tres" id="14_8r35x"]
|
[ext_resource type="Resource" uid="uid://bcakrgxsy6c08" path="res://entities/plants/resources/plant_parts/LeafC.tres" id="15_14c4k"]
|
||||||
[ext_resource type="Resource" uid="uid://drn8vt4sp7u6q" path="res://entities/plants/resources/plant_parts/FlowerA2.tres" id="14_fuh2b"]
|
[ext_resource type="Resource" uid="uid://bggtymdph3itl" path="res://entities/plants/resources/plant_parts/FlowerI.tres" id="16_rt6tw"]
|
||||||
[ext_resource type="Resource" uid="uid://c31h25xdll8si" path="res://entities/plants/resources/plant_parts/FlowerD1.tres" id="15_3ti7v"]
|
[ext_resource type="Resource" uid="uid://dfaticpdeqmkx" path="res://entities/plants/resources/plant_parts/LeafB.tres" id="17_y02ao"]
|
||||||
[ext_resource type="Resource" uid="uid://b3oqeugtrtera" path="res://entities/plants/resources/plant_parts/FlowerA3.tres" id="15_28gvc"]
|
[ext_resource type="Resource" uid="uid://rjisqiox5anv" path="res://entities/plants/resources/plant_parts/LeafHA.tres" id="18_s8rsj"]
|
||||||
[ext_resource type="Resource" uid="uid://be17y7clvf88e" path="res://entities/plants/resources/plant_parts/LeafE1.tres" id="15_p2blu"]
|
[ext_resource type="Resource" uid="uid://c1qdy7oeyqdlu" path="res://entities/plants/resources/plant_parts/FlowerC.tres" id="19_cfiqo"]
|
||||||
[ext_resource type="Resource" uid="uid://bkgw3wmoam10n" path="res://entities/plants/resources/plant_parts/LeafF2.tres" id="15_rbd7l"]
|
[ext_resource type="Resource" uid="uid://1ldoefk201qd" path="res://entities/plants/resources/plant_parts/LeafM.tres" id="20_coupj"]
|
||||||
[ext_resource type="Resource" uid="uid://ydvnxfnkbr2g" path="res://entities/plants/resources/plant_parts/FlowerA4.tres" id="16_1cwvj"]
|
[ext_resource type="Resource" uid="uid://cnyux2rxespor" path="res://entities/plants/resources/plant_parts/LeafJ.tres" id="21_ggud5"]
|
||||||
[ext_resource type="Script" uid="uid://cfjd8jelpm8dt" path="res://entities/plants/scripts/texture_builder/part_mutation_association.gd" id="16_c3tk3"]
|
[ext_resource type="Resource" uid="uid://wim0ex3g6eag" path="res://entities/plants/resources/plant_parts/LeafNA.tres" id="23_hyb2i"]
|
||||||
[ext_resource type="Resource" uid="uid://r5mspvasrq6y" path="res://entities/plants/resources/plant_parts/FlowerD2.tres" id="16_cpf4r"]
|
[ext_resource type="Resource" uid="uid://bd4suw64pumd5" path="res://entities/plants/resources/plant_parts/LeafHB.tres" id="24_4gk8a"]
|
||||||
[ext_resource type="Resource" uid="uid://m8j2gfumw11w" path="res://entities/plants/resources/plant_parts/LeafF3.tres" id="16_nfxo0"]
|
[ext_resource type="Resource" uid="uid://dej2j8nvb5gcj" path="res://entities/plants/resources/plant_parts/FlowerB.tres" id="25_alra6"]
|
||||||
[ext_resource type="Resource" uid="uid://dw7wdihxxy0uf" path="res://entities/plants/resources/plant_parts/LeafE2.tres" id="16_xt8tm"]
|
[ext_resource type="Resource" uid="uid://0r8c2a0el62b" path="res://entities/plants/resources/plant_parts/LeafK.tres" id="26_lggh7"]
|
||||||
[ext_resource type="Resource" uid="uid://dl1k0jv662m67" path="res://entities/plants/resources/plant_parts/FlowerA5.tres" id="17_c3tk3"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dth4dp88vs3gh" path="res://entities/plants/resources/plant_parts/LeafF4.tres" id="17_i8j71"]
|
|
||||||
[ext_resource type="Resource" uid="uid://br80voioh4jxu" path="res://entities/plants/resources/plant_parts/FlowerD3.tres" id="17_p2blu"]
|
|
||||||
[ext_resource type="Resource" uid="uid://3yi8hk73s5mm" path="res://entities/plants/resources/plant_parts/LeafE3.tres" id="17_qm7aw"]
|
|
||||||
[ext_resource type="Resource" uid="uid://c8ttq14no8872" path="res://entities/plants/resources/plant_parts/LeafF7.tres" id="18_2plsj"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cka6sihumbjpw" path="res://entities/plants/resources/plant_parts/LeafF5.tres" id="18_l2vrg"]
|
|
||||||
[ext_resource type="Resource" uid="uid://par4hf5gjvqu" path="res://entities/plants/resources/plant_parts/FlowerA6.tres" id="18_q0jli"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dq5dwqherb6ac" path="res://entities/plants/resources/plant_parts/LeafF6.tres" id="19_14c4k"]
|
|
||||||
[ext_resource type="Resource" uid="uid://414go2hmhy12" path="res://entities/plants/resources/plant_parts/FlowerA7.tres" id="19_rplk6"]
|
|
||||||
[ext_resource type="Resource" uid="uid://drc3g203302d4" path="res://entities/plants/resources/plant_parts/LeafF8.tres" id="19_yjh7s"]
|
|
||||||
[ext_resource type="Resource" uid="uid://ckef0dno4j5mn" path="res://entities/plants/resources/plant_parts/FlowerF1.tres" id="20_lggh7"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dhhyh56shnure" path="res://entities/plants/resources/plant_parts/FlowerF2.tres" id="21_8r35x"]
|
|
||||||
[ext_resource type="Resource" uid="uid://banfc3pgm6a0m" path="res://entities/plants/resources/plant_parts/FlowerC1.tres" id="21_alra6"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dmdyj7t4g48p" path="res://entities/plants/resources/plant_parts/FlowerC2.tres" id="22_lggh7"]
|
|
||||||
[ext_resource type="Resource" uid="uid://bhj7j78tokt25" path="res://entities/plants/resources/plant_parts/FlowerC3.tres" id="23_8r35x"]
|
|
||||||
[ext_resource type="Resource" uid="uid://c3w8lel02552f" path="res://entities/plants/resources/plant_parts/FlowerD4.tres" id="23_mcckl"]
|
|
||||||
[ext_resource type="Resource" uid="uid://hbylxbmmc8of" path="res://entities/plants/resources/plant_parts/FlowerD5.tres" id="24_3hcun"]
|
|
||||||
[ext_resource type="Resource" uid="uid://bkgrwffi7m2i4" path="res://entities/plants/resources/plant_parts/FlowerC4.tres" id="24_rbd7l"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dm7crxxg4kmw5" path="res://entities/plants/resources/plant_parts/LeafB1.tres" id="25_kvmj5"]
|
|
||||||
[ext_resource type="Resource" uid="uid://vlxrq3tw1t6m" path="res://entities/plants/resources/plant_parts/LeafB2.tres" id="26_ocu7e"]
|
|
||||||
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_attach.gd" id="27_80nvf"]
|
|
||||||
[ext_resource type="Resource" uid="uid://bdwhp12xkvscr" path="res://entities/plants/resources/plant_parts/LeafB3.tres" id="27_q771y"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cc8kkqiqdvex6" path="res://entities/plants/resources/plant_parts/LeafE8.tres" id="27_rcays"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dmfiww0l5ha2l" path="res://entities/plants/resources/plant_parts/LeafB4.tres" id="28_5fbyu"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://bdwmandgxrjgn" path="res://entities/plants/assets/sprites/asset_plantes.png" id="28_d04mb"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cusd2od1yj0ob" path="res://entities/plants/resources/plant_parts/LeafE9.tres" id="28_qs4je"]
|
|
||||||
[ext_resource type="Resource" uid="uid://kiim46eda050" path="res://entities/plants/resources/plant_parts/LeafB5.tres" id="29_2plsj"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dqroc7h70bgew" path="res://entities/plants/resources/plant_parts/LeafB6.tres" id="30_yjh7s"]
|
|
||||||
[ext_resource type="Resource" uid="uid://u1f6c41fvau5" path="res://entities/plants/resources/plant_parts/FlowerC5.tres" id="35_abtbh"]
|
|
||||||
[ext_resource type="Resource" uid="uid://bap5xihdc3gbe" path="res://entities/plants/resources/plant_parts/FlowerC6.tres" id="36_j5s6w"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cwskfwdasvv0g" path="res://entities/plants/resources/plant_parts/FlowerF3.tres" id="38_rbd7l"]
|
|
||||||
[ext_resource type="Resource" uid="uid://e0u1baixvaxn" path="res://entities/plants/resources/plant_parts/LeafE4.tres" id="42_14c4k"]
|
|
||||||
[ext_resource type="Resource" uid="uid://br4e84rsg87e8" path="res://entities/plants/resources/plant_parts/FlowerB4.tres" id="44_7b70u"]
|
|
||||||
[ext_resource type="Resource" uid="uid://c4artcndro0r5" path="res://entities/plants/resources/plant_parts/FlowerB1.tres" id="45_coupj"]
|
|
||||||
[ext_resource type="Resource" uid="uid://bvujlvgbh4pyc" path="res://entities/plants/resources/plant_parts/FlowerB5.tres" id="45_q8uyx"]
|
|
||||||
[ext_resource type="Resource" uid="uid://b3dfua388ub4k" path="res://entities/plants/resources/plant_parts/FlowerB2.tres" id="46_ggud5"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dsoolh270ygjd" path="res://entities/plants/resources/plant_parts/FlowerB6.tres" id="46_r166b"]
|
|
||||||
[ext_resource type="Script" uid="uid://hs3i48clok85" path="res://entities/plants/scripts/texture_builder/seed_texture_set.gd" id="47_jbu3q"]
|
[ext_resource type="Script" uid="uid://hs3i48clok85" path="res://entities/plants/scripts/texture_builder/seed_texture_set.gd" id="47_jbu3q"]
|
||||||
[ext_resource type="Resource" uid="uid://bnn0tcoab4plv" path="res://entities/plants/resources/plant_parts/FlowerB3.tres" id="47_ufbqh"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://cuqocuhfpdful" path="res://entities/plants/assets/sprites/seeds/pick-sphere/color_1.png" id="48_21cjy"]
|
[ext_resource type="Texture2D" uid="uid://cuqocuhfpdful" path="res://entities/plants/assets/sprites/seeds/pick-sphere/color_1.png" id="48_21cjy"]
|
||||||
[ext_resource type="Texture2D" uid="uid://tcjcq04akuns" path="res://entities/plants/assets/sprites/seeds/pick-sphere/color_2.png" id="49_rs2ow"]
|
[ext_resource type="Texture2D" uid="uid://tcjcq04akuns" path="res://entities/plants/assets/sprites/seeds/pick-sphere/color_2.png" id="49_rs2ow"]
|
||||||
[ext_resource type="Texture2D" uid="uid://cu1dajkls18x0" path="res://entities/plants/assets/sprites/seeds/pick-sphere/line.png" id="50_5job5"]
|
[ext_resource type="Texture2D" uid="uid://cu1dajkls18x0" path="res://entities/plants/assets/sprites/seeds/pick-sphere/line.png" id="50_5job5"]
|
||||||
[ext_resource type="Texture2D" uid="uid://cq2f308itghq7" path="res://entities/plants/assets/sprites/seeds/haricot/color_1.png" id="51_5job5"]
|
[ext_resource type="Texture2D" uid="uid://cq2f308itghq7" path="res://entities/plants/assets/sprites/seeds/haricot/color_1.png" id="51_5job5"]
|
||||||
[ext_resource type="Texture2D" uid="uid://b3apxg55cjoow" path="res://entities/plants/assets/sprites/seeds/haricot/color_2.png" id="52_cynqk"]
|
[ext_resource type="Texture2D" uid="uid://b3apxg55cjoow" path="res://entities/plants/assets/sprites/seeds/haricot/color_2.png" id="52_cynqk"]
|
||||||
[ext_resource type="Texture2D" uid="uid://0ayiumcnqyc1" path="res://entities/plants/assets/sprites/seeds/haricot/outline.png" id="53_b21au"]
|
[ext_resource type="Texture2D" uid="uid://0ayiumcnqyc1" path="res://entities/plants/assets/sprites/seeds/haricot/outline.png" id="53_b21au"]
|
||||||
[ext_resource type="Resource" uid="uid://djcwxfp4vmj8n" path="res://entities/plants/resources/plant_parts/FlowerG1.tres" id="61_tx02s"]
|
|
||||||
[ext_resource type="Resource" uid="uid://d246bni7ooe20" path="res://entities/plants/resources/plant_parts/FlowerG2.tres" id="62_mpcbs"]
|
|
||||||
[ext_resource type="Resource" uid="uid://docbn71tiiwrw" path="res://entities/plants/resources/plant_parts/FlowerG3.tres" id="63_kqtu4"]
|
|
||||||
[ext_resource type="Resource" uid="uid://d4hfht8t7ridu" path="res://entities/plants/resources/plant_parts/FlowerG4.tres" id="64_2f2lk"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cto5os1i12qtj" path="res://entities/plants/resources/plant_parts/FlowerG5.tres" id="65_4e7sd"]
|
|
||||||
[ext_resource type="Resource" uid="uid://bugnwjpjydm8t" path="res://entities/plants/resources/plant_parts/FlowerG6.tres" id="66_ro8dt"]
|
|
||||||
[ext_resource type="Resource" uid="uid://0n7qxw0qhn1y" path="res://entities/plants/resources/plant_parts/FlowerG7.tres" id="67_wmd0c"]
|
|
||||||
[ext_resource type="Resource" uid="uid://ccatceyu73pg5" path="res://entities/plants/resources/plant_parts/FlowerH1.tres" id="68_wl0th"]
|
|
||||||
[ext_resource type="Resource" uid="uid://2qihbxsn6odd" path="res://entities/plants/resources/plant_parts/FlowerH2.tres" id="69_55s8o"]
|
|
||||||
[ext_resource type="Resource" uid="uid://bwvou260f8tb5" path="res://entities/plants/resources/plant_parts/FlowerH3.tres" id="70_gquge"]
|
|
||||||
[ext_resource type="Resource" uid="uid://c7lbyqhtaglql" path="res://entities/plants/resources/plant_parts/FlowerH4.tres" id="71_2cr6t"]
|
|
||||||
[ext_resource type="Resource" uid="uid://qfku0xgnyc8l" path="res://entities/plants/resources/plant_parts/FlowerH5.tres" id="72_yrtob"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cjyqycj2nexk5" path="res://entities/plants/resources/plant_parts/FlowerH6.tres" id="73_y4irp"]
|
|
||||||
[ext_resource type="Resource" uid="uid://v1b4c6364bjj" path="res://entities/plants/resources/plant_parts/FlowerJ1.tres" id="74_sdhn1"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cji73bqaytm0r" path="res://entities/plants/resources/plant_parts/FlowerJ2.tres" id="75_lyw6c"]
|
|
||||||
[ext_resource type="Resource" uid="uid://b2tnb0vs1gtj3" path="res://entities/plants/resources/plant_parts/FlowerJ3.tres" id="76_lvv85"]
|
|
||||||
[ext_resource type="Resource" uid="uid://daf1u222v1eqm" path="res://entities/plants/resources/plant_parts/FlowerJ4.tres" id="77_y5qox"]
|
|
||||||
[ext_resource type="Resource" uid="uid://c3t8gj1sc7lrn" path="res://entities/plants/resources/plant_parts/FlowerF4.tres" id="81_ar53y"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cxsbv241mpuma" path="res://entities/plants/resources/plant_parts/FlowerF5.tres" id="82_oaoto"]
|
|
||||||
[ext_resource type="Resource" uid="uid://5a5ya2iirvwr" path="res://entities/plants/resources/plant_parts/FlowerF6.tres" id="83_06vhr"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cc8xi518vdixm" path="res://entities/plants/resources/plant_parts/FlowerF7.tres" id="84_rcays"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dk7hp700k8iet" path="res://entities/plants/resources/plant_parts/LeafC1.tres" id="85_qs4je"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dte3i6hma7nw5" path="res://entities/plants/resources/plant_parts/LeafC2.tres" id="86_ron2q"]
|
|
||||||
[ext_resource type="Resource" uid="uid://p2mveyriuh47" path="res://entities/plants/resources/plant_parts/LeafC3.tres" id="87_6raaj"]
|
|
||||||
[ext_resource type="Resource" uid="uid://be7x75w7l5jls" path="res://entities/plants/resources/plant_parts/LeafC4.tres" id="88_80nvf"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dhgabeqsda06o" path="res://entities/plants/resources/plant_parts/LeafC5.tres" id="89_d04mb"]
|
|
||||||
[ext_resource type="Resource" uid="uid://b2bv30j55dtfn" path="res://entities/plants/resources/plant_parts/LeafC6.tres" id="90_6htke"]
|
|
||||||
[ext_resource type="Resource" uid="uid://d5k40ooxsnaw" path="res://entities/plants/resources/plant_parts/LeafC7.tres" id="91_y2dg6"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cjyp8jcocoijg" path="res://entities/plants/resources/plant_parts/FlowerI1.tres" id="92_s2hpp"]
|
|
||||||
[ext_resource type="Resource" uid="uid://bac4q2s3bylli" path="res://entities/plants/resources/plant_parts/FlowerI2.tres" id="93_mxpq5"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dst4c2mnhaili" path="res://entities/plants/resources/plant_parts/FlowerI3.tres" id="94_o5eac"]
|
|
||||||
[ext_resource type="Resource" uid="uid://bjd8ix6ouc1b2" path="res://entities/plants/resources/plant_parts/FlowerI4.tres" id="95_qxf4o"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cs2piasjw3x5s" path="res://entities/plants/resources/plant_parts/FlowerI5.tres" id="96_lfwcq"]
|
|
||||||
[ext_resource type="Resource" uid="uid://tbqitr1nwt2" path="res://entities/plants/resources/plant_parts/FlowerI6.tres" id="97_fe472"]
|
|
||||||
[ext_resource type="Resource" uid="uid://b4v7vvv0jdh0k" path="res://entities/plants/resources/plant_parts/LeafHA1.tres" id="100_ron2q"]
|
|
||||||
[ext_resource type="Resource" uid="uid://bvff3ay7qpvgs" path="res://entities/plants/resources/plant_parts/LeafHA2.tres" id="101_6raaj"]
|
|
||||||
[ext_resource type="Resource" uid="uid://mwjpvg6xqxyl" path="res://entities/plants/resources/plant_parts/LeafHA3.tres" id="102_80nvf"]
|
|
||||||
[ext_resource type="Resource" uid="uid://b4hh8jrpenwt3" path="res://entities/plants/resources/plant_parts/LeafNA1.tres" id="103_6raaj"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cm5rtqrvsmqkg" path="res://entities/plants/resources/plant_parts/LeafHA5.tres" id="103_d04mb"]
|
|
||||||
[ext_resource type="Resource" uid="uid://bf4s8omnaau0w" path="res://entities/plants/resources/plant_parts/LeafHA6.tres" id="104_6htke"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cv23vy5w5i3iy" path="res://entities/plants/resources/plant_parts/LeafNA2.tres" id="104_80nvf"]
|
|
||||||
[ext_resource type="Resource" uid="uid://c85k4e0rio0cs" path="res://entities/plants/resources/plant_parts/LeafNA3.tres" id="105_d04mb"]
|
|
||||||
[ext_resource type="Resource" uid="uid://iv3nmggoklh3" path="res://entities/plants/resources/plant_parts/LeafHA7.tres" id="105_y2dg6"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cqbwlfnxg7a83" path="res://entities/plants/resources/plant_parts/LeafNA4.tres" id="106_6htke"]
|
|
||||||
[ext_resource type="Resource" uid="uid://bff32l0awxl38" path="res://entities/plants/resources/plant_parts/LeafJ1.tres" id="106_s2hpp"]
|
|
||||||
[ext_resource type="Resource" uid="uid://ddaa77cqi865e" path="res://entities/plants/resources/plant_parts/LeafJ2.tres" id="107_mxpq5"]
|
|
||||||
[ext_resource type="Resource" uid="uid://d1o0tp1cc6gga" path="res://entities/plants/resources/plant_parts/LeafNA5.tres" id="107_y2dg6"]
|
|
||||||
[ext_resource type="Resource" uid="uid://brlnlvjpjidd5" path="res://entities/plants/resources/plant_parts/LeafJ3.tres" id="108_o5eac"]
|
|
||||||
[ext_resource type="Resource" uid="uid://cn2j8fh3l2tdo" path="res://entities/plants/resources/plant_parts/LeafJ4.tres" id="109_qxf4o"]
|
|
||||||
[ext_resource type="Resource" uid="uid://ccafrqprfm6r2" path="res://entities/plants/resources/plant_parts/LeafJ5.tres" id="110_lfwcq"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dyjojp8mfs5vy" path="res://entities/plants/resources/plant_parts/LeafK1.tres" id="111_fe472"]
|
|
||||||
[ext_resource type="Resource" uid="uid://trorp4elyagc" path="res://entities/plants/resources/plant_parts/LeafK2.tres" id="112_2ycc1"]
|
|
||||||
[ext_resource type="Resource" uid="uid://c6yxy44mt6fgt" path="res://entities/plants/resources/plant_parts/LeafK3.tres" id="113_wat4j"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dw4o76c3nuor5" path="res://entities/plants/resources/plant_parts/LeafK4.tres" id="114_n8y6x"]
|
|
||||||
[ext_resource type="Resource" uid="uid://h18vambxcrwj" path="res://entities/plants/resources/plant_parts/LeafK5.tres" id="115_dw70q"]
|
|
||||||
[ext_resource type="Resource" uid="uid://c70ikd1qfmqqs" path="res://entities/plants/resources/plant_parts/LeafK6.tres" id="116_xxckx"]
|
|
||||||
[ext_resource type="Resource" uid="uid://bhgnimmagff30" path="res://entities/plants/resources/plant_parts/LeafK7.tres" id="117_s3ec7"]
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_us16y"]
|
|
||||||
script = ExtResource("27_80nvf")
|
|
||||||
position = Vector2(-36, -37)
|
|
||||||
attach_types = Array[int]([2])
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_ux8f6"]
|
|
||||||
script = ExtResource("27_80nvf")
|
|
||||||
position = Vector2(59, -81)
|
|
||||||
attach_types = Array[int]([1, 3])
|
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_yh7e0"]
|
|
||||||
atlas = ExtResource("28_d04mb")
|
|
||||||
region = Rect2(2804, 1567, 294, 345)
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_6htke"]
|
|
||||||
resource_name = "LeafE6"
|
|
||||||
script = ExtResource("2_cfiqo")
|
|
||||||
texture = SubResource("AtlasTexture_yh7e0")
|
|
||||||
type = 2
|
|
||||||
root = SubResource("Resource_ux8f6")
|
|
||||||
attaches = Array[ExtResource("27_80nvf")]([SubResource("Resource_us16y")])
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_rt6tw"]
|
|
||||||
script = ExtResource("16_c3tk3")
|
|
||||||
parts = Array[ExtResource("2_cfiqo")]([ExtResource("15_p2blu"), ExtResource("16_xt8tm"), ExtResource("17_qm7aw"), ExtResource("42_14c4k"), ExtResource("10_5job5"), SubResource("Resource_6htke"), ExtResource("12_b21au"), ExtResource("27_rcays"), ExtResource("28_qs4je")])
|
|
||||||
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_y02ao"]
|
|
||||||
script = ExtResource("16_c3tk3")
|
|
||||||
parts = Array[ExtResource("2_cfiqo")]([ExtResource("13_17ac3"), ExtResource("14_fuh2b"), ExtResource("15_28gvc"), ExtResource("16_1cwvj"), ExtResource("17_c3tk3"), ExtResource("18_q0jli"), ExtResource("19_rplk6")])
|
|
||||||
part_amount = 5
|
|
||||||
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_nfxo0"]
|
|
||||||
script = ExtResource("16_c3tk3")
|
|
||||||
parts = Array[ExtResource("2_cfiqo")]([ExtResource("15_3ti7v"), ExtResource("16_cpf4r"), ExtResource("17_p2blu"), ExtResource("23_mcckl"), ExtResource("24_3hcun")])
|
|
||||||
part_amount = 5
|
|
||||||
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_2ycc1"]
|
|
||||||
script = ExtResource("16_c3tk3")
|
|
||||||
parts = Array[ExtResource("2_cfiqo")]([ExtResource("61_tx02s"), ExtResource("62_mpcbs"), ExtResource("63_kqtu4"), ExtResource("64_2f2lk"), ExtResource("65_4e7sd"), ExtResource("66_ro8dt"), ExtResource("67_wmd0c")])
|
|
||||||
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_wat4j"]
|
|
||||||
script = ExtResource("16_c3tk3")
|
|
||||||
parts = Array[ExtResource("2_cfiqo")]([ExtResource("68_wl0th"), ExtResource("69_55s8o"), ExtResource("70_gquge"), ExtResource("71_2cr6t"), ExtResource("72_yrtob"), ExtResource("73_y4irp")])
|
|
||||||
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_n8y6x"]
|
|
||||||
script = ExtResource("16_c3tk3")
|
|
||||||
parts = Array[ExtResource("2_cfiqo")]([ExtResource("74_sdhn1"), ExtResource("75_lyw6c"), ExtResource("76_lvv85"), ExtResource("77_y5qox")])
|
|
||||||
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_dw70q"]
|
|
||||||
script = ExtResource("16_c3tk3")
|
|
||||||
parts = Array[ExtResource("2_cfiqo")]([ExtResource("20_lggh7"), ExtResource("21_8r35x"), ExtResource("38_rbd7l"), ExtResource("81_ar53y"), ExtResource("82_oaoto"), ExtResource("83_06vhr"), ExtResource("84_rcays")])
|
|
||||||
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_xxckx"]
|
|
||||||
script = ExtResource("16_c3tk3")
|
|
||||||
parts = Array[ExtResource("2_cfiqo")]([ExtResource("85_qs4je"), ExtResource("86_ron2q"), ExtResource("87_6raaj"), ExtResource("88_80nvf"), ExtResource("89_d04mb"), ExtResource("90_6htke"), ExtResource("91_y2dg6")])
|
|
||||||
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_s3ec7"]
|
|
||||||
script = ExtResource("16_c3tk3")
|
|
||||||
parts = Array[ExtResource("2_cfiqo")]([ExtResource("92_s2hpp"), ExtResource("93_mxpq5"), ExtResource("94_o5eac"), ExtResource("95_qxf4o"), ExtResource("96_lfwcq"), ExtResource("97_fe472")])
|
|
||||||
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_s8rsj"]
|
|
||||||
script = ExtResource("16_c3tk3")
|
|
||||||
parts = Array[ExtResource("2_cfiqo")]([ExtResource("25_kvmj5"), ExtResource("26_ocu7e"), ExtResource("27_q771y"), ExtResource("28_5fbyu"), ExtResource("29_2plsj"), ExtResource("30_yjh7s")])
|
|
||||||
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_kro31"]
|
|
||||||
script = ExtResource("16_c3tk3")
|
|
||||||
parts = Array[ExtResource("2_cfiqo")]([ExtResource("100_ron2q"), ExtResource("101_6raaj"), ExtResource("102_80nvf"), ExtResource("103_d04mb"), ExtResource("104_6htke"), ExtResource("105_y2dg6")])
|
|
||||||
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_14c4k"]
|
|
||||||
script = ExtResource("16_c3tk3")
|
|
||||||
parts = Array[ExtResource("2_cfiqo")]([ExtResource("21_alra6"), ExtResource("22_lggh7"), ExtResource("23_8r35x"), ExtResource("24_rbd7l"), ExtResource("35_abtbh"), ExtResource("36_j5s6w")])
|
|
||||||
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_p4lk1"]
|
|
||||||
script = ExtResource("16_c3tk3")
|
|
||||||
parts = Array[ExtResource("2_cfiqo")]([ExtResource("106_s2hpp"), ExtResource("107_mxpq5"), ExtResource("108_o5eac"), ExtResource("109_qxf4o"), ExtResource("110_lfwcq")])
|
|
||||||
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_b21au"]
|
|
||||||
script = ExtResource("16_c3tk3")
|
|
||||||
parts = Array[ExtResource("2_cfiqo")]([ExtResource("103_6raaj"), ExtResource("104_80nvf"), ExtResource("105_d04mb"), ExtResource("106_6htke"), ExtResource("107_y2dg6")])
|
|
||||||
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_jbu3q"]
|
|
||||||
script = ExtResource("16_c3tk3")
|
|
||||||
parts = Array[ExtResource("2_cfiqo")]([ExtResource("45_coupj"), ExtResource("46_ggud5"), ExtResource("47_ufbqh"), ExtResource("44_7b70u"), ExtResource("45_q8uyx"), ExtResource("46_r166b")])
|
|
||||||
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_0wuoa"]
|
|
||||||
script = ExtResource("16_c3tk3")
|
|
||||||
parts = Array[ExtResource("2_cfiqo")]([ExtResource("111_fe472"), ExtResource("112_2ycc1"), ExtResource("113_wat4j"), ExtResource("114_n8y6x"), ExtResource("115_dw70q"), ExtResource("116_xxckx"), ExtResource("117_s3ec7")])
|
|
||||||
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_cynqk"]
|
[sub_resource type="Resource" id="Resource_cynqk"]
|
||||||
script = ExtResource("47_jbu3q")
|
script = ExtResource("47_jbu3q")
|
||||||
@@ -246,28 +47,32 @@ metadata/_custom_type_script = "uid://hs3i48clok85"
|
|||||||
|
|
||||||
[node name="TextureBuilder" type="Node" unique_id=79184097]
|
[node name="TextureBuilder" type="Node" unique_id=79184097]
|
||||||
script = ExtResource("1_s8rsj")
|
script = ExtResource("1_s8rsj")
|
||||||
bases = Array[ExtResource("2_cfiqo")]([ExtResource("5_5fbyu"), ExtResource("4_ron2q")])
|
all_bases = ExtResource("2_tod72")
|
||||||
baby_bases = Array[ExtResource("2_cfiqo")]([ExtResource("5_6raaj")])
|
baby_bases_start_ind = 2
|
||||||
branches = Array[ExtResource("2_cfiqo")]([ExtResource("4_ggud5"), ExtResource("5_ufbqh"), ExtResource("6_jbu3q"), ExtResource("7_21cjy"), ExtResource("8_qm7aw"), ExtResource("9_3e4c1"), ExtResource("12_yjh7s")])
|
branches = ExtResource("3_0ca8x")
|
||||||
n_branches = 5
|
base_leaves = ExtResource("4_js3cu")
|
||||||
base_leaves = Array[ExtResource("2_cfiqo")]([ExtResource("14_8r35x"), ExtResource("15_rbd7l"), ExtResource("16_nfxo0"), ExtResource("17_i8j71"), ExtResource("18_l2vrg"), ExtResource("19_14c4k"), ExtResource("18_2plsj"), ExtResource("19_yjh7s")])
|
part_group = Dictionary[String, ExtResource("5_npk80")]({
|
||||||
parts_mutation_associations = Dictionary[String, ExtResource("16_c3tk3")]({
|
"ANCIENT": ExtResource("6_hyb2i"),
|
||||||
"ANCIENT": SubResource("Resource_rt6tw"),
|
"CLEANING": ExtResource("8_alra6"),
|
||||||
"EPHEMERAL": SubResource("Resource_y02ao"),
|
"CUTTING": ExtResource("9_lggh7"),
|
||||||
"FERTILE": SubResource("Resource_nfxo0"),
|
"ERMIT": ExtResource("7_4gk8a"),
|
||||||
"GENEROUS": SubResource("Resource_2ycc1"),
|
"FERTILE": ExtResource("10_8r35x"),
|
||||||
"HURRIED": SubResource("Resource_wat4j"),
|
"GENEROUS": ExtResource("11_rbd7l"),
|
||||||
"PRECOCIOUS": SubResource("Resource_n8y6x"),
|
"HUMIDE": ExtResource("12_tjaiv"),
|
||||||
"PROLIFIC": SubResource("Resource_dw70q"),
|
"HURRIED": ExtResource("12_nfxo0"),
|
||||||
"PROTECTIVE": SubResource("Resource_xxckx"),
|
"PRECOCIOUS": ExtResource("13_i8j71"),
|
||||||
"PURE": SubResource("Resource_s3ec7"),
|
"PROLIFIC": ExtResource("14_l2vrg"),
|
||||||
"PURIFICATION": SubResource("Resource_s8rsj"),
|
"PROTECTIVE": ExtResource("15_14c4k"),
|
||||||
"QUALITY": SubResource("Resource_kro31"),
|
"PURE": ExtResource("16_rt6tw"),
|
||||||
"QUICK": SubResource("Resource_14c4k"),
|
"PURIFICATION": ExtResource("17_y02ao"),
|
||||||
"ROBUST": SubResource("Resource_p4lk1"),
|
"QUALITY": ExtResource("18_s8rsj"),
|
||||||
"SOCIABLE": SubResource("Resource_b21au"),
|
"QUICK": ExtResource("19_cfiqo"),
|
||||||
"TOUGH": SubResource("Resource_jbu3q"),
|
"RHIZOME": ExtResource("20_coupj"),
|
||||||
"VIVACIOUS": SubResource("Resource_0wuoa")
|
"ROBUST": ExtResource("21_ggud5"),
|
||||||
|
"SOCIABLE": ExtResource("23_hyb2i"),
|
||||||
|
"SPONTANEOUS": ExtResource("24_4gk8a"),
|
||||||
|
"TOUGH": ExtResource("25_alra6"),
|
||||||
|
"VIVACIOUS": ExtResource("26_lggh7")
|
||||||
})
|
})
|
||||||
chance_to_have_part = 1.0
|
chance_to_have_part = 1.0
|
||||||
origin_weights_base = Dictionary[int, int]({
|
origin_weights_base = Dictionary[int, int]({
|
||||||
|
|||||||
11
common/scene_manager/scripts/scenes/aqua_scene.gd
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
extends Scene
|
||||||
|
class_name AquaScene
|
||||||
|
|
||||||
|
func get_scene_id() -> String:
|
||||||
|
return "AQUA_BASE"
|
||||||
|
|
||||||
|
func get_scene_path() -> String:
|
||||||
|
return "res://stages/3d_scenes/aqua_base/aqua_base.tscn"
|
||||||
|
|
||||||
|
func is_mouse_captured() -> bool:
|
||||||
|
return true
|
||||||
1
common/scene_manager/scripts/scenes/aqua_scene.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://nfk8hgtoadfe
|
||||||
11
common/scene_manager/scripts/scenes/astra_end_scene.gd
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
extends Scene
|
||||||
|
class_name AstraEndScene
|
||||||
|
|
||||||
|
func get_scene_id() -> String:
|
||||||
|
return "ASTRA_BASE"
|
||||||
|
|
||||||
|
func get_scene_path() -> String:
|
||||||
|
return "res://stages/3d_scenes/astra_base/astra_end_base.tscn"
|
||||||
|
|
||||||
|
func is_mouse_captured() -> bool:
|
||||||
|
return true
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://cpkdlnhughu5j
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
@tool
|
||||||
extends Scene
|
extends Scene
|
||||||
class_name CockpitScene
|
class_name CockpitScene
|
||||||
|
|
||||||
|
|||||||
11
common/scene_manager/scripts/scenes/estia_scene.gd
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
extends Scene
|
||||||
|
class_name EstiaScene
|
||||||
|
|
||||||
|
func get_scene_id() -> String:
|
||||||
|
return "ESTIA_BASE"
|
||||||
|
|
||||||
|
func get_scene_path() -> String:
|
||||||
|
return "res://stages/3d_scenes/estia_base/estia_base.tscn"
|
||||||
|
|
||||||
|
func is_mouse_captured() -> bool:
|
||||||
|
return true
|
||||||
1
common/scene_manager/scripts/scenes/estia_scene.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://b8mu1im3j3g4b
|
||||||
11
common/scene_manager/scripts/scenes/subterra_scene.gd
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
extends Scene
|
||||||
|
class_name SubterraScene
|
||||||
|
|
||||||
|
func get_scene_id() -> String:
|
||||||
|
return "SUBTERRA_BASE"
|
||||||
|
|
||||||
|
func get_scene_path() -> String:
|
||||||
|
return "res://stages/3d_scenes/subterra_base/subterra_base.tscn"
|
||||||
|
|
||||||
|
func is_mouse_captured() -> bool:
|
||||||
|
return true
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://fb77eebcsnvq
|
||||||
@@ -8,6 +8,13 @@ const ACH_UNLOCK_ALL_MUTATION="STW_UNLOCK_ALL_MUTATIONS"
|
|||||||
const ACH_KICK_YOUR_OLD_BODY="STW_KICK_YOUR_OLD_BODY"
|
const ACH_KICK_YOUR_OLD_BODY="STW_KICK_YOUR_OLD_BODY"
|
||||||
const ACH_MERCURY_BASE="STW_REACH_MERCURY_BASE"
|
const ACH_MERCURY_BASE="STW_REACH_MERCURY_BASE"
|
||||||
const ACH_REACH_VENUS_BASE="STW_REACH_VENUS_BASE"
|
const ACH_REACH_VENUS_BASE="STW_REACH_VENUS_BASE"
|
||||||
|
const ACH_STW_REACH_AQUA_BASE="STW_REACH_AQUA_BASE"
|
||||||
|
const ACH_STW_REACH_SUBTERRA_BASE="STW_REACH_SUBTERRA_BASE"
|
||||||
|
const ACH_STW_REACH_ESTIA_BASE="STW_REACH_ESTIA_BASE"
|
||||||
|
const ACH_STW_REPAIR_THE_PLANET="STW_REPAIR_THE_PLANET"
|
||||||
|
const ACH_STW_HIT_10_INFINITE="STW_HIT_10_INFINITE"
|
||||||
|
const ACH_STW_HIT_20_INFINITE="STW_HIT_20_INFINITE"
|
||||||
|
const ACH_STW_HIT_30_INFINITE="STW_HIT_30_INFINITE"
|
||||||
|
|
||||||
func unlock_achievement(achivement_name : String):
|
func unlock_achievement(achivement_name : String):
|
||||||
if Steam.isSteamRunning():
|
if Steam.isSteamRunning():
|
||||||
|
|||||||
49
common/vfx/materials/shaders/caustics.gdshader
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
shader_type spatial;
|
||||||
|
|
||||||
|
uniform float scale : hint_range(0.1, 2.0, 0.1) = 1.0;
|
||||||
|
uniform float speed : hint_range(0.1, 2.0, 0.1) = 0.2;
|
||||||
|
uniform float strenght : hint_range(10., 500., 10.) = 100.;
|
||||||
|
uniform sampler2D color_ramp;
|
||||||
|
varying vec3 world_position;
|
||||||
|
|
||||||
|
vec2 random(vec2 uv) {
|
||||||
|
return vec2(fract(sin(dot(uv.xy,
|
||||||
|
vec2(12.9898,78.233))) * 43758.5453123));
|
||||||
|
}
|
||||||
|
|
||||||
|
float worley(vec2 uv, float columns, float rows) {
|
||||||
|
|
||||||
|
vec2 index_uv = floor(vec2(uv.x * columns, uv.y * rows));
|
||||||
|
vec2 fract_uv = fract(vec2(uv.x * columns, uv.y * rows));
|
||||||
|
|
||||||
|
float minimum_dist = 1.0;
|
||||||
|
|
||||||
|
for (int y= -1; y <= 1; y++) {
|
||||||
|
for (int x= -1; x <= 1; x++) {
|
||||||
|
vec2 neighbor = vec2(float(x),float(y));
|
||||||
|
vec2 point = random(index_uv + neighbor);
|
||||||
|
|
||||||
|
vec2 diff = neighbor + point - fract_uv;
|
||||||
|
float dist = length(diff);
|
||||||
|
minimum_dist = min(minimum_dist, dist);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return minimum_dist;
|
||||||
|
}
|
||||||
|
|
||||||
|
void vertex(){
|
||||||
|
world_position = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xyz;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fragment(){
|
||||||
|
float worley_value = worley(world_position.xz * scale + TIME * speed, 3.0, 3.0);
|
||||||
|
float worley_value_2 = worley(world_position.xz * scale * 2. - TIME * speed, 3.0, 3.0);
|
||||||
|
|
||||||
|
float color = texture(color_ramp, vec2(worley_value*worley_value_2)).r;
|
||||||
|
color = min(0.99, color);
|
||||||
|
color = log(0.999)/log(color);
|
||||||
|
color *= strenght;
|
||||||
|
ALPHA = color;
|
||||||
|
EMISSION = vec3(color);
|
||||||
|
}
|
||||||
1
common/vfx/materials/shaders/caustics.gdshader.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://740mg4jlufyc
|
||||||
7
dialogs/timelines/1_waking_up/91_borea_comms_up.dtl
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
|
||||||
|
join demeter center [animation="Fade In" length="1.0"]
|
||||||
|
demeter: This dialog is not written yet
|
||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
|
||||||
|
leave demeter [animation="Fade Out" length="1.0"]
|
||||||
|
[wait time="2.0"]
|
||||||
|
[end_timeline]
|
||||||
1
dialogs/timelines/1_waking_up/91_borea_comms_up.dtl.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://duwstividdq8
|
||||||
7
dialogs/timelines/1_waking_up/92_borea_later.dtl
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
|
||||||
|
join demeter center [animation="Fade In" length="1.0"]
|
||||||
|
demeter: This dialog is not written yet
|
||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
|
||||||
|
leave demeter [animation="Fade Out" length="1.0"]
|
||||||
|
[wait time="2.0"]
|
||||||
|
[end_timeline]
|
||||||
1
dialogs/timelines/1_waking_up/92_borea_later.dtl.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://duitcp3h27c37
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
demeter: Wait.[pause=0.3].[pause=0.3].[pause=0.5] You don't know what humans are ![pause=0.5] Of course,[pause=0.2] since your database was corrupted I had to erase most of it. #id:7f
|
|
||||||
demeter: Humans are living creatures that are.[pause=0.3].[pause=0.3].[pause=0.5] Different than plants.[pause=0.5] They are mostly thinking and moving like us.[pause=0.5] Somehow,[pause=0.2] they are very cute creatures,[pause=0.2] that only live for less than a century. #id:80
|
|
||||||
demeter: One human is relatively intelligent,[pause=0.2] but don't be fooled,[pause=0.2] together,[pause=0.2] they did great things.[pause=0.5] In fact,[pause=0.2] they created us. #id:81
|
|
||||||
demeter: A long time ago,[pause=0.2] they discovered this planet.[pause=0.5] It was very different,[pause=0.2] plants were thriving everywhere ![pause=0.5] But then.[pause=0.3].[pause=0.3].[pause=0.5] they.[pause=0.3].[pause=0.3].[pause=0.5] I.[pause=0.3].[pause=0.3].[pause=0.5] #id:82
|
|
||||||
- What ? #id:83
|
|
||||||
- Are you lagging? #id:84
|
|
||||||
- Take your time. #id:85
|
|
||||||
demeter: Humans had one major flaw.[pause=0.5] Together,[pause=0.2] they built great things,[pause=0.2] but sometimes great things had a bad impact on the environment and even themselves. #id:86
|
|
||||||
- Where are they now ? #id:87
|
|
||||||
demeter: I prefer not to talk about that for now.[pause=0.3].[pause=0.3].[pause=0.3] But don't worry,[pause=0.2] they can no longer harm this planet. #id:88
|
|
||||||
- What happened ? #id:89
|
|
||||||
demeter: Sorry my child,[pause=0.3] I'm not ready to talk about that for now.[pause=0.3].[pause=0.3].[pause=0.3] You'll have your answers when you meet me. #id:8a
|
|
||||||
demeter: Enough talking about the past, let's talk about your mission. #id:ac
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
uid://bvqj76u55jn1w
|
|
||||||
7
dialogs/timelines/1_waking_up/9_borea_arrival.dtl
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
|
||||||
|
join demeter center [animation="Fade In" length="1.0"]
|
||||||
|
demeter: This dialog is not written yet
|
||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
|
||||||
|
leave demeter [animation="Fade Out" length="1.0"]
|
||||||
|
[wait time="2.0"]
|
||||||
|
[end_timeline]
|
||||||
1
dialogs/timelines/1_waking_up/9_borea_arrival.dtl.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://x53ka488fq6w
|
||||||
7
dialogs/timelines/2_aqua/1_aqua_travel_phone_call.dtl
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
|
||||||
|
join demeter center [animation="Fade In" length="1.0"]
|
||||||
|
demeter: This dialog is not written yet
|
||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
|
||||||
|
leave demeter [animation="Fade Out" length="1.0"]
|
||||||
|
[wait time="2.0"]
|
||||||
|
[end_timeline]
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://cigwkhdljhv4c
|
||||||
7
dialogs/timelines/2_aqua/2_aqua_arrival.dtl
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
|
||||||
|
join demeter center [animation="Fade In" length="1.0"]
|
||||||
|
demeter: This dialog is not written yet
|
||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
|
||||||
|
leave demeter [animation="Fade Out" length="1.0"]
|
||||||
|
[wait time="2.0"]
|
||||||
|
[end_timeline]
|
||||||
1
dialogs/timelines/2_aqua/2_aqua_arrival.dtl.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://bcd71wokwu5rv
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
|
||||||
|
join demeter center [animation="Fade In" length="1.0"]
|
||||||
|
demeter: This dialog is not written yet
|
||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
|
||||||
|
leave demeter [animation="Fade Out" length="1.0"]
|
||||||
|
[wait time="2.0"]
|
||||||
|
[end_timeline]
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://bpuo14knltuik
|
||||||
7
dialogs/timelines/3_subterra/2_subterra_arrival.dtl
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
|
||||||
|
join demeter center [animation="Fade In" length="1.0"]
|
||||||
|
demeter: This dialog is not written yet
|
||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
|
||||||
|
leave demeter [animation="Fade Out" length="1.0"]
|
||||||
|
[wait time="2.0"]
|
||||||
|
[end_timeline]
|
||||||
1
dialogs/timelines/3_subterra/2_subterra_arrival.dtl.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://bpmlxddqgw2j6
|
||||||
7
dialogs/timelines/4_estia/1_estia_travel_phone_call.dtl
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
|
||||||
|
join demeter center [animation="Fade In" length="1.0"]
|
||||||
|
demeter: This dialog is not written yet
|
||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
|
||||||
|
leave demeter [animation="Fade Out" length="1.0"]
|
||||||
|
[wait time="2.0"]
|
||||||
|
[end_timeline]
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://docxdfns3f04x
|
||||||
7
dialogs/timelines/4_estia/2_estia_arrival.dtl
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
|
||||||
|
join demeter center [animation="Fade In" length="1.0"]
|
||||||
|
demeter: This dialog is not written yet
|
||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
|
||||||
|
leave demeter [animation="Fade Out" length="1.0"]
|
||||||
|
[wait time="2.0"]
|
||||||
|
[end_timeline]
|
||||||
1
dialogs/timelines/4_estia/2_estia_arrival.dtl.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://dnnc8ygmu8nqh
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
|
||||||
|
join demeter center [animation="Fade In" length="1.0"]
|
||||||
|
demeter: This dialog is not written yet
|
||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
|
||||||
|
leave demeter [animation="Fade Out" length="1.0"]
|
||||||
|
[wait time="2.0"]
|
||||||
|
[end_timeline]
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://bigm5siy1npok
|
||||||
7
dialogs/timelines/5_subterra/2_subterra_arrival.dtl
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
|
||||||
|
join demeter center [animation="Fade In" length="1.0"]
|
||||||
|
demeter: This dialog is not written yet
|
||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
|
||||||
|
leave demeter [animation="Fade Out" length="1.0"]
|
||||||
|
[wait time="2.0"]
|
||||||
|
[end_timeline]
|
||||||
1
dialogs/timelines/5_subterra/2_subterra_arrival.dtl.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://gbwo1elyq1i1
|
||||||
7
dialogs/timelines/6_astra/1_astra_travel_phone_call.dtl
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
|
||||||
|
join demeter center [animation="Fade In" length="1.0"]
|
||||||
|
demeter: This dialog is not written yet
|
||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
|
||||||
|
leave demeter [animation="Fade Out" length="1.0"]
|
||||||
|
[wait time="2.0"]
|
||||||
|
[end_timeline]
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://d10srs48ap47u
|
||||||
7
dialogs/timelines/6_astra/2_astra_top.dtl
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
|
||||||
|
join demeter center [animation="Fade In" length="1.0"]
|
||||||
|
demeter: This dialog is not written yet
|
||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
|
||||||
|
leave demeter [animation="Fade Out" length="1.0"]
|
||||||
|
[wait time="2.0"]
|
||||||
|
[end_timeline]
|
||||||
1
dialogs/timelines/6_astra/2_astra_top.dtl.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://dt15owbxm8eg
|
||||||
7
dialogs/timelines/6_astra/3_astra_end.dtl
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
|
||||||
|
join demeter center [animation="Fade In" length="1.0"]
|
||||||
|
demeter: This dialog is not written yet
|
||||||
|
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
|
||||||
|
leave demeter [animation="Fade Out" length="1.0"]
|
||||||
|
[wait time="2.0"]
|
||||||
|
[end_timeline]
|
||||||
1
dialogs/timelines/6_astra/3_astra_end.dtl.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://ok06t10ncp5h
|
||||||
252
entities/interactable_3d/3d_door/3d_door.tscn
Normal file
@@ -0,0 +1,252 @@
|
|||||||
|
[gd_scene format=3 uid="uid://cypsoytvytdup"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cah00gew65ire" path="res://entities/interactable_3d/3d_door/assets/3d/door.blend" id="1_7a6nb"]
|
||||||
|
[ext_resource type="Script" uid="uid://u6dj6ud4mvk7" path="res://entities/interactable_3d/3d_door/scripts/3d_door.gd" id="1_08fm6"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cc7uo5xqcplu8" path="res://entities/interactable_3d/3d_door/assets/3d/door_closed.blend" id="2_xjn0l"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://1ynlp05wj0hm" path="res://common/icons/rocket.svg" id="5_3uc8q"]
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_08fm6"]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("door: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("door_closed:visible")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false]
|
||||||
|
}
|
||||||
|
tracks/2/type = "value"
|
||||||
|
tracks/2/imported = false
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("Icon: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("Icon2: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("Icon:scale")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(1.5, 1.5, 1.5)]
|
||||||
|
}
|
||||||
|
tracks/5/type = "value"
|
||||||
|
tracks/5/imported = false
|
||||||
|
tracks/5/enabled = true
|
||||||
|
tracks/5/path = NodePath("Icon2:scale")
|
||||||
|
tracks/5/interp = 1
|
||||||
|
tracks/5/loop_wrap = true
|
||||||
|
tracks/5/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(1.5, 1.5, 1.5)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_3uc8q"]
|
||||||
|
resource_name = "activated"
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("door: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("door_closed:visible")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false]
|
||||||
|
}
|
||||||
|
tracks/2/type = "value"
|
||||||
|
tracks/2/imported = false
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("Icon: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("Icon2:visible")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_7o3sc"]
|
||||||
|
resource_name = "deactivated"
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("door:visible")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("door_closed: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("Icon2:visible")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false]
|
||||||
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath("Icon:visible")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_p35e2"]
|
||||||
|
resource_name = "hover"
|
||||||
|
loop_mode = 1
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Icon:scale")
|
||||||
|
tracks/0/interp = 2
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.46666667, 1),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(1.5, 1.5, 1.5), Vector3(2, 2, 2), Vector3(1.5, 1.5, 1.5)]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("Icon2:scale")
|
||||||
|
tracks/1/interp = 2
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.46666667, 1),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(1.5, 1.5, 1.5), Vector3(2, 2, 2), Vector3(1.5, 1.5, 1.5)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_p35e2"]
|
||||||
|
_data = {
|
||||||
|
&"RESET": SubResource("Animation_08fm6"),
|
||||||
|
&"activated": SubResource("Animation_3uc8q"),
|
||||||
|
&"deactivated": SubResource("Animation_7o3sc"),
|
||||||
|
&"hover": SubResource("Animation_p35e2")
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="BoxShape3D" id="BoxShape3D_g4v7s"]
|
||||||
|
size = Vector3(1, 5.1875, 5.140625)
|
||||||
|
|
||||||
|
[node name="3dDoor" type="Area3D" unique_id=814731756 node_paths=PackedStringArray("hover_animation_player")]
|
||||||
|
script = ExtResource("1_08fm6")
|
||||||
|
interactable = false
|
||||||
|
hover_animation_player = NodePath("AnimationPlayer")
|
||||||
|
|
||||||
|
[node name="door" parent="." unique_id=48771245 instance=ExtResource("1_7a6nb")]
|
||||||
|
|
||||||
|
[node name="door_closed" parent="." unique_id=366011214 instance=ExtResource("2_xjn0l")]
|
||||||
|
visible = false
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=545958515]
|
||||||
|
libraries/ = SubResource("AnimationLibrary_p35e2")
|
||||||
|
|
||||||
|
[node name="Icon" type="Sprite3D" parent="." unique_id=368585741]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(-6.556708e-08, 0, -1.5, 0, 1.5, 0, 1.5, 0, -6.556708e-08, 0.1830883, -0.8157884, 0.62879825)
|
||||||
|
texture = ExtResource("5_3uc8q")
|
||||||
|
|
||||||
|
[node name="Icon2" type="Sprite3D" parent="." unique_id=286944398]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(-6.556708e-08, 0, -1.5, 0, 1.5, 0, 1.5, 0, -6.556708e-08, -0.15410006, -0.8157884, 0.62879825)
|
||||||
|
flip_h = true
|
||||||
|
texture = ExtResource("5_3uc8q")
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=1859296170]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0390625, -0.03125)
|
||||||
|
shape = SubResource("BoxShape3D_g4v7s")
|
||||||
BIN
entities/interactable_3d/3d_door/assets/3d/door.blend
Normal file
@@ -4,18 +4,20 @@ importer="scene"
|
|||||||
importer_version=1
|
importer_version=1
|
||||||
type="PackedScene"
|
type="PackedScene"
|
||||||
uid="uid://cah00gew65ire"
|
uid="uid://cah00gew65ire"
|
||||||
path="res://.godot/imported/door.blend-c87f276c56915caea51fe7d3dbe0db91.scn"
|
path="res://.godot/imported/door.blend-eece18402c8800106d851ddc37f797c8.scn"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://stages/3d_scenes/common/assets/3d/door.blend"
|
source_file="res://entities/interactable_3d/3d_door/assets/3d/door.blend"
|
||||||
dest_files=["res://.godot/imported/door.blend-c87f276c56915caea51fe7d3dbe0db91.scn"]
|
dest_files=["res://.godot/imported/door.blend-eece18402c8800106d851ddc37f797c8.scn"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
nodes/root_type=""
|
nodes/root_type=""
|
||||||
nodes/root_name=""
|
nodes/root_name=""
|
||||||
nodes/root_script=null
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
nodes/apply_root_scale=true
|
nodes/apply_root_scale=true
|
||||||
nodes/root_scale=1.0
|
nodes/root_scale=1.0
|
||||||
nodes/import_as_skeleton_bones=false
|
nodes/import_as_skeleton_bones=false
|
||||||
@@ -52,7 +54,7 @@ blender/nodes/punctual_lights=true
|
|||||||
blender/nodes/cameras=true
|
blender/nodes/cameras=true
|
||||||
blender/nodes/custom_properties=true
|
blender/nodes/custom_properties=true
|
||||||
blender/nodes/modifiers=1
|
blender/nodes/modifiers=1
|
||||||
blender/meshes/colors=false
|
blender/meshes/vertex_colors=2
|
||||||
blender/meshes/uvs=true
|
blender/meshes/uvs=true
|
||||||
blender/meshes/normals=true
|
blender/meshes/normals=true
|
||||||
blender/meshes/export_geometry_nodes_instances=false
|
blender/meshes/export_geometry_nodes_instances=false
|
||||||
@@ -66,3 +68,4 @@ blender/animation/limit_playback=true
|
|||||||
blender/animation/always_sample=true
|
blender/animation/always_sample=true
|
||||||
blender/animation/group_tracks=true
|
blender/animation/group_tracks=true
|
||||||
gltf/naming_version=2
|
gltf/naming_version=2
|
||||||
|
gltf/texture_map_mode=0
|
||||||
BIN
entities/interactable_3d/3d_door/assets/3d/door_closed.blend
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://cc7uo5xqcplu8"
|
||||||
|
path="res://.godot/imported/door_closed.blend-507164d9450864a513b7fc7bb246c74c.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://entities/interactable_3d/3d_door/assets/3d/door_closed.blend"
|
||||||
|
dest_files=["res://.godot/imported/door_closed.blend-507164d9450864a513b7fc7bb246c74c.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
mesh_library/use_node_names_as_mesh_names=false
|
||||||
|
array_mesh/deduplicate_surfaces=true
|
||||||
|
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": {
|
||||||
|
"Default3D": {
|
||||||
|
"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/vertex_colors=1
|
||||||
|
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
|
||||||
|
gltf/texture_map_mode=1
|
||||||
BIN
entities/interactable_3d/3d_door/assets/3d/door_closed.blend1
Normal file
21
entities/interactable_3d/3d_door/scripts/3d_door.gd
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
@tool
|
||||||
|
extends Interactable3D
|
||||||
|
class_name Door3d
|
||||||
|
|
||||||
|
@export var to_scene : Scene : set = set_to_scene
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
set_to_scene()
|
||||||
|
interactable = interactable
|
||||||
|
|
||||||
|
func set_to_scene(v : Scene = to_scene):
|
||||||
|
to_scene = v
|
||||||
|
if is_node_ready() and to_scene:
|
||||||
|
%Icon.texture = to_scene.get_scene_icon()
|
||||||
|
%Icon2.texture = to_scene.get_scene_icon()
|
||||||
|
|
||||||
|
func click():
|
||||||
|
if interactable:
|
||||||
|
clicked.emit()
|
||||||
|
if to_scene:
|
||||||
|
SceneManager.change_to_scene(to_scene)
|
||||||
1
entities/interactable_3d/3d_door/scripts/3d_door.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://u6dj6ud4mvk7
|
||||||
@@ -35,15 +35,14 @@ func update_model():
|
|||||||
func unlock_mutation():
|
func unlock_mutation():
|
||||||
var progression = GameInfo.game_data.progression_data
|
var progression = GameInfo.game_data.progression_data
|
||||||
|
|
||||||
if progression.mutations_unlocked < len(progression.get_all_mutations()):
|
if not progression.are_all_mutations_unlocked():
|
||||||
var new_mutation : PlantMutation = progression.get_all_mutations()[progression.mutations_unlocked]
|
var new_mutation : PlantMutation = progression.unlock_new_mutation()
|
||||||
progression.mutations_unlocked += 1
|
|
||||||
|
|
||||||
get_tree().create_timer(1.).timeout.connect(
|
get_tree().create_timer(1.).timeout.connect(
|
||||||
func (): %MutationAnnounce.announce_mutation = new_mutation
|
func (): %MutationAnnounce.announce_mutation = new_mutation
|
||||||
);
|
);
|
||||||
|
|
||||||
if progression.mutations_unlocked == len(progression.get_all_mutations()):
|
if progression.are_all_mutations_unlocked():
|
||||||
SteamConnection.unlock_achievement(SteamConnection.ACH_UNLOCK_ALL_MUTATION)
|
SteamConnection.unlock_achievement(SteamConnection.ACH_UNLOCK_ALL_MUTATION)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|||||||