Et toujours du dev pour la béta
* Evolution de l'histoire avec de nouveaux dialogues, une plus grande durée de vie du jeu, des nouvelles zones d'histoire... * Suppression du mode infini * Ajout d'un écran des mutations découvertes * Ajout d'un nouveau mécanisme de respawn situé dans le vaissau * Ajout de 2 nouveaux modificateurs de région * Quatre nouveaux artefacts * Visuel de la décontamination de la planète 3D en cours de la partie * Ajout d'une annonce visuelle des scène du jeu * Fix sur la mutation Généreux pour être en accord avec sa description * Amélioration de l'effet de la mutation Purification * Fix de la mutation sociale aux niveau supérieurs * Ajout d'un effet visuel de réacteur sur le joueur 3D * Fix sur l'annonce de nouveaux objets qui se déclenchaient à une nouvelle run * Amélioration des animation et des informations données dans le vaisseau * Correction mineure des traductions
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -5,6 +5,7 @@
|
||||
[ext_resource type="Shader" uid="uid://bv2rghn44mrrf" path="res://stages/title_screen/resources/shaders/stars.gdshader" id="4_kdvug"]
|
||||
[ext_resource type="PackedScene" uid="uid://csx7d5khjd6y5" path="res://entities/interactable_3d/phone/phone.tscn" id="4_mwti2"]
|
||||
[ext_resource type="PackedScene" uid="uid://ch8m1rohg5d33" path="res://entities/interactable_3d/lift/lift.tscn" id="5_lhhy6"]
|
||||
[ext_resource type="Material" uid="uid://cr7bp4fhh1ipr" path="res://entities/player_3d/resources/materials/post_process_quad.tres" id="6_mwti2"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_mwti2"]
|
||||
length = 0.001
|
||||
@@ -73,8 +74,6 @@ shader_parameter/sky_color = Color(0.03, 0.05, 0.11, 1)
|
||||
shader_parameter/star_base_color = Color(0.8, 1, 0.3, 1)
|
||||
shader_parameter/star_hue_offset = 0.6
|
||||
shader_parameter/star_intensity = 0.08
|
||||
shader_parameter/star_twinkle_speed = 0.8
|
||||
shader_parameter/star_twinkle_intensity = 0.2
|
||||
shader_parameter/layer_scale = 20.0
|
||||
shader_parameter/layer_scale_step = 10.0
|
||||
shader_parameter/layers_count = 3
|
||||
@@ -151,6 +150,70 @@ _data = {
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_kdvug"]
|
||||
radius = 0.68145716
|
||||
|
||||
[sub_resource type="QuadMesh" id="QuadMesh_lhhy6"]
|
||||
size = Vector2(2, 2)
|
||||
|
||||
[sub_resource type="Animation" id="Animation_lkqnn"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath(".:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(69.029, 1.7, 0)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath(".:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 1.5707964, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_v4tdl"]
|
||||
resource_name = "trailer"
|
||||
length = 20.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath(".:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 16.931593, 20),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(69.029, 1.7, 0), Vector3(4.109844, 1.7, 0), Vector3(2.812063, 0.88852286, -0.3574915)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath(".:rotation")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 16.931593, 20),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 1.5707964, 0), Vector3(0, 1.5707964, 0), Vector3(0.2008525, 0.8556826, 8.899538e-09)]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_lkqnn"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_lkqnn"),
|
||||
&"trailer": SubResource("Animation_v4tdl")
|
||||
}
|
||||
|
||||
[node name="AstraBase" type="Node3D" unique_id=1360388667]
|
||||
script = ExtResource("1_kdvug")
|
||||
room_part_number = 6
|
||||
@@ -192,3 +255,18 @@ unique_name_in_owner = true
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Lift/LiftPlayerDetector" unique_id=1762811832]
|
||||
shape = SubResource("SphereShape3D_kdvug")
|
||||
|
||||
[node name="TrailerCamera" type="Camera3D" parent="." unique_id=1809922038]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-4.371139e-08, 0, 1, 0, 0.99999994, 0, -1, 0, -4.371139e-08, 69.029, 1.7, 0)
|
||||
visible = false
|
||||
near = 0.003
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="TrailerCamera" unique_id=1544880636]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.263265e-08, 0, -0.7177747)
|
||||
mesh = SubResource("QuadMesh_lhhy6")
|
||||
surface_material_override/0 = ExtResource("6_mwti2")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="TrailerCamera" unique_id=2053901299]
|
||||
libraries/ = SubResource("AnimationLibrary_lkqnn")
|
||||
autoplay = &"trailer"
|
||||
|
||||
@@ -11,6 +11,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.4381348, 0.49131417, 7.327
|
||||
light_color = Color(1, 0.64, 0.45999998, 1)
|
||||
light_energy = 16.81
|
||||
shadow_enabled = true
|
||||
shadow_blur = 6.38
|
||||
omni_range = 14.26521
|
||||
|
||||
[node name="OmniLight3D2" type="OmniLight3D" parent="." unique_id=1660135249]
|
||||
@@ -18,4 +19,5 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.4381348, 0.49131417, -6.88
|
||||
light_color = Color(1, 0.64, 0.45999998, 1)
|
||||
light_energy = 16.81
|
||||
shadow_enabled = true
|
||||
shadow_blur = 6.38
|
||||
omni_range = 14.26521
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
@tool
|
||||
extends Node3D
|
||||
|
||||
const INTRO_DIALOG = "res://dialogs/timelines/story/demeter_intro.dtl"
|
||||
const FAILED_DIALOG = "res://dialogs/timelines/gameplay_related/demeter_astra_failed.dtl"
|
||||
|
||||
const ROOM_PART_SCENE := preload("res://stages/3d_scenes/astra_base/room_part.tscn")
|
||||
const ROOM_END_SCENE := preload("res://stages/3d_scenes/astra_base/assets/3d/astra_base_room_end.blend")
|
||||
const INCUBATOR_SCENE := preload("res://stages/3d_scenes/astra_base/incubator.tscn")
|
||||
@@ -26,7 +23,6 @@ func _input(_e):
|
||||
and Input.is_action_pressed("move_left")
|
||||
and Input.is_action_just_pressed("action")
|
||||
):
|
||||
GameInfo.game_data.dialogs_done.append(INTRO_DIALOG)
|
||||
finish_scene()
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
@@ -53,21 +49,22 @@ func _ready():
|
||||
|
||||
func story():
|
||||
AudioManager.play_sfx("Respawn")
|
||||
if not INTRO_DIALOG in GameInfo.game_data.dialogs_done and GameInfo.game_data.game_mode == GameData.GameMode.STORY:
|
||||
|
||||
if (
|
||||
GameInfo.game_data.progression_data.story_step is TutorialStoryStep
|
||||
and not TutorialStoryStep.INTRO_DIALOG in GameInfo.game_data.dialogs_done
|
||||
):
|
||||
await get_tree().create_timer(TIME_WITHOUT_PHONE).timeout
|
||||
%Phone.play_audio()
|
||||
await %Phone.clicked
|
||||
%Phone.stop_audio()
|
||||
%Phone.interactable = false
|
||||
|
||||
Dialogic.start(INTRO_DIALOG)
|
||||
Dialogic.start(TutorialStoryStep.INTRO_DIALOG)
|
||||
await Dialogic.timeline_ended
|
||||
else:
|
||||
%Phone.clicked.connect(
|
||||
func ():
|
||||
Dialogic.start(FAILED_DIALOG)
|
||||
%Phone.interactable = false
|
||||
)
|
||||
%Phone.visible = false
|
||||
%Phone.position.y += 1000
|
||||
|
||||
%LiftAnimationPlayer.play("arrive")
|
||||
AudioManager.play_sfx("Elevator")
|
||||
@@ -84,12 +81,11 @@ func story():
|
||||
|
||||
func finish_scene():
|
||||
GameInfo.game_data.start_run()
|
||||
if GameInfo.game_data.tutorial_done or GameInfo.game_data.game_mode == GameData.GameMode.INFINITE:
|
||||
GameInfo.game_data.ship_in_space = false
|
||||
SceneManager.change_to_scene_id('COCKPIT')
|
||||
if GameInfo.game_data.progression_data.story_step is TutorialStoryStep:
|
||||
GameInfo.game_data.current_run.choose_next_run_point()
|
||||
SceneManager.change_to_scene(RegionScene.new(GameInfo.game_data.current_region_data))
|
||||
else:
|
||||
GameInfo.game_data.start_tutorial()
|
||||
SceneManager.change_to_scene_id('REGION')
|
||||
SceneManager.change_to_scene(CockpitScene.new())
|
||||
|
||||
|
||||
func set_room_part_number(_room_part_number : int = room_part_number):
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
[ext_resource type="PackedScene" uid="uid://csx7d5khjd6y5" path="res://entities/interactable_3d/phone/phone.tscn" id="4_fevne"]
|
||||
[ext_resource type="PackedScene" uid="uid://bqo4uknlbm8r1" path="res://stages/3d_scenes/borea_base/assets/3d/borea_base.blend" id="4_s7tqr"]
|
||||
[ext_resource type="PackedScene" uid="uid://c5a32n6rjjlnt" path="res://gui/credits/credits.tscn" id="6_c8vcx"]
|
||||
[ext_resource type="Material" uid="uid://cr7bp4fhh1ipr" path="res://entities/player_3d/resources/materials/post_process_quad.tres" id="7_s7tqr"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_xd71i"]
|
||||
length = 0.001
|
||||
@@ -147,8 +148,6 @@ shader_parameter/sky_color = Color(0.03, 0.05, 0.11, 1)
|
||||
shader_parameter/star_base_color = Color(0.8, 1, 0.3, 1)
|
||||
shader_parameter/star_hue_offset = 0.6
|
||||
shader_parameter/star_intensity = 0.08
|
||||
shader_parameter/star_twinkle_speed = 0.8
|
||||
shader_parameter/star_twinkle_intensity = 0.2
|
||||
shader_parameter/layer_scale = 20.0
|
||||
shader_parameter/layer_scale_step = 10.0
|
||||
shader_parameter/layers_count = 3
|
||||
@@ -187,6 +186,46 @@ adjustment_saturation = 1.3
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_c8vcx"]
|
||||
size = Vector3(0.001, 7.6933594, 7.697876)
|
||||
|
||||
[sub_resource type="Animation" id="Animation_s7tqr"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("TrailerCamera:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 60.366375, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_2ei4e"]
|
||||
resource_name = "trailer"
|
||||
length = 10.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("TrailerCamera:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 9.933333),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 60.366375, 0), Vector3(0, 10, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_hlox4"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_s7tqr"),
|
||||
&"trailer": SubResource("Animation_2ei4e")
|
||||
}
|
||||
|
||||
[sub_resource type="QuadMesh" id="QuadMesh_2ei4e"]
|
||||
size = Vector2(2, 2)
|
||||
|
||||
[node name="BoreaBase" type="Node3D" unique_id=442220603]
|
||||
script = ExtResource("1_fevne")
|
||||
|
||||
@@ -933,6 +972,20 @@ transform = Transform3D(-0.93482566, 0, 0.35510686, 0, 1, 0, -0.35510686, 0, -0.
|
||||
|
||||
[node name="Credits" parent="." unique_id=180964898 instance=ExtResource("6_c8vcx")]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
|
||||
[node name="TrailerCamera" type="Camera3D" parent="." unique_id=649852434]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, -4.3711392e-08, 1, 0, -1, -4.3711392e-08, 0, 60.366375, 0)
|
||||
near = 0.003
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="TrailerCamera" unique_id=1238675722]
|
||||
root_node = NodePath("../..")
|
||||
libraries/ = SubResource("AnimationLibrary_hlox4")
|
||||
autoplay = &"trailer"
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="TrailerCamera" unique_id=1018268636]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.263265e-08, 0, -0.7177747)
|
||||
mesh = SubResource("QuadMesh_2ei4e")
|
||||
surface_material_override/0 = ExtResource("7_s7tqr")
|
||||
|
||||
[connection signal="body_entered" from="AmbianceChangeDetector" to="." method="_on_ambiance_change_detector_body_entered"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
extends Node3D
|
||||
|
||||
const OUTRO_TIMELINE_PATH = "res://dialogs/timelines/story/demeter_outro.dtl"
|
||||
const OUTRO_TIMELINE_PATH = "res://dialogs/timelines/tutorial/demeter_outro.dtl"
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
|
||||
@@ -12,6 +12,10 @@
|
||||
[ext_resource type="PackedScene" uid="uid://dd6k80rhux1do" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/plant_info_screen.tscn" id="12_pxmsf"]
|
||||
[ext_resource type="PackedScene" uid="uid://da7a74dg30q1l" path="res://entities/player_3d/player_3D.tscn" id="13_a2cx2"]
|
||||
[ext_resource type="PackedScene" uid="uid://cd8j7v7qtybi8" path="res://stages/3d_scenes/cockpit_scene/ship_tutorial.tscn" id="13_u7lr8"]
|
||||
[ext_resource type="Material" uid="uid://cr7bp4fhh1ipr" path="res://entities/player_3d/resources/materials/post_process_quad.tres" id="14_d1blr"]
|
||||
[ext_resource type="PackedScene" uid="uid://ci4x1q326lvyy" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/mutation_discovered_screen/mutation_discovery_screen.tscn" id="15_q4ojn"]
|
||||
[ext_resource type="PackedScene" uid="uid://u3o5g8lmck74" path="res://entities/interactable_3d/orchid_saver/orchid_saver.tscn" id="16_nfjul"]
|
||||
[ext_resource type="Texture2D" uid="uid://d3k7rl7nbp7yx" path="res://common/icons/device-floppy.svg" id="17_ggekp"]
|
||||
[ext_resource type="PackedScene" uid="uid://blvetnnib2ks0" path="res://stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend" id="17_omtjc"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_pxmsf"]
|
||||
@@ -54,6 +58,46 @@ _data = {
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_ctvhk"]
|
||||
size = Vector3(2.6689148, 0.79260254, 2.7016602)
|
||||
|
||||
[sub_resource type="QuadMesh" id="QuadMesh_q4ojn"]
|
||||
size = Vector2(2, 2)
|
||||
|
||||
[sub_resource type="Animation" id="Animation_nfjul"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath(".:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0.1437025, 0.048336506)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_ggekp"]
|
||||
resource_name = "trailer"
|
||||
length = 5.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath(".:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 5),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0.1437025, 0.048336506), Vector3(0, 0.1437025, 4.861152)]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_wrlf0"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_nfjul"),
|
||||
&"trailer": SubResource("Animation_ggekp")
|
||||
}
|
||||
|
||||
[node name="Ship" type="Node3D" unique_id=1963368148]
|
||||
script = ExtResource("1_koamw")
|
||||
|
||||
@@ -80,20 +124,21 @@ unique_name_in_owner = true
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 0, 0, 3.2830403)
|
||||
|
||||
[node name="CockpitModel" parent="." unique_id=825141342 instance=ExtResource("17_omtjc")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.04904175e-05, 0.0026242882, 4.4822693e-05)
|
||||
|
||||
[node name="Phone" parent="." unique_id=429299908 instance=ExtResource("3_3b5pk")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -0.0237993, -0.38395548, -4.662711)
|
||||
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 1.4133042, -0.68386626, 1.709522)
|
||||
interactable = false
|
||||
|
||||
[node name="Gauge3D" parent="." unique_id=232507348 instance=ExtResource("4_ers7b")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-4.371139e-09, 0, 0.1, -0.06187238, 0.07856086, -2.7045277e-09, -0.07856086, -0.06187238, -3.4340044e-09, -0.034603596, 1.1559428, 5.314687)
|
||||
progress = 1.78
|
||||
transform = Transform3D(-0.070710674, 0.07071066, -4.864633e-09, 8.7422745e-09, 2.199196e-30, -0.09999998, -0.070710674, -0.07071066, -7.4988105e-09, 0.9122916, -0.51005816, 5.5039926)
|
||||
progress = 1.085
|
||||
|
||||
[node name="EnergyInfo3d" parent="." unique_id=1798644168 instance=ExtResource("6_ogqwl")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(0.23, 0, 0, 0, 0.23, 0, 0, 0, 0.23, -1.2966455, -0.8972735, 4.2738743)
|
||||
transform = Transform3D(0.23, 0, 0, 0, 0.23, 0, 0, 0, 0.23, -1.2449384, -0.8972735, 5.2538967)
|
||||
max_energy = 3
|
||||
|
||||
[node name="Furnitures" type="Node3D" parent="." unique_id=1095424400]
|
||||
@@ -112,7 +157,33 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.035136223, -0.7094687, 6.45
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.1218804, -1.0799314, 2.6211417)
|
||||
|
||||
[node name="PlantInfoScreen" parent="." unique_id=1881622243 instance=ExtResource("12_pxmsf")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.2386853, -0.047743827, 4.020312)
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.239, 0, 4.02)
|
||||
|
||||
[node name="MutationDiscoveryScreen" parent="." unique_id=1948337200 instance=ExtResource("15_q4ojn")]
|
||||
transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 1.1896521, 0.015508115, 3.982)
|
||||
|
||||
[node name="ShipTutorial" parent="." unique_id=868547496 instance=ExtResource("13_u7lr8")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="TrailerCamera" type="Camera3D" parent="." unique_id=297848285]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-1, -2.2626683e-08, -8.444392e-08, 0, 0.9659259, -0.25881907, 8.742278e-08, -0.25881907, -0.9659258, 0, 0.1437025, 0.048336506)
|
||||
near = 0.003
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="TrailerCamera" unique_id=2142282697]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.263265e-08, 0, -0.7177747)
|
||||
mesh = SubResource("QuadMesh_q4ojn")
|
||||
surface_material_override/0 = ExtResource("14_d1blr")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="TrailerCamera" unique_id=675835561]
|
||||
libraries/ = SubResource("AnimationLibrary_wrlf0")
|
||||
autoplay = &"trailer"
|
||||
|
||||
[node name="OrchidSaver" parent="." unique_id=381308711 instance=ExtResource("16_nfjul")]
|
||||
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 0.024999544, -1.3700237, -3.9526832)
|
||||
screen_icon = ExtResource("17_ggekp")
|
||||
screen_text = "SAVE_ORCHID_MEMORY_AND_RESPAWN"
|
||||
|
||||
[connection signal="clicked" from="Phone" to="." method="_on_phone_clicked"]
|
||||
[connection signal="clicked" from="OrchidSaver" to="." method="_on_orchid_saver_clicked"]
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
[gd_scene format=3 uid="uid://cv0ehgy3d1kmj"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://fet6urfgiiwr" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/dashboard.gd" id="1_vks67"]
|
||||
[ext_resource type="Texture2D" uid="uid://cgmxjom200bej" path="res://common/icons/chevrons-up.svg" id="2_eij3d"]
|
||||
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="3_g7q16"]
|
||||
[ext_resource type="PackedScene" uid="uid://cs5gir1u8jbrg" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/holo_content.tscn" id="3_go2gd"]
|
||||
[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="4_7u0n5"]
|
||||
[ext_resource type="Script" uid="uid://bj4d1x8n8ina" path="res://entities/interactable_3d/interactable_3d.gd" id="5_g7q16"]
|
||||
[ext_resource type="Script" uid="uid://biqgucg78cx44" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/dashboard_main_screen.gd" id="4_vks67"]
|
||||
[ext_resource type="Script" uid="uid://ccb06rayqowp3" path="res://stages/terrain/region/scripts/modifiers/region_modifier.gd" id="5_7u0n5"]
|
||||
[ext_resource type="Texture2D" uid="uid://l2xplg72hs6j" path="res://common/icons/map-pin.svg" id="5_vks67"]
|
||||
[ext_resource type="PackedScene" uid="uid://bnvqwsxgrd14y" path="res://stages/3d_scenes/cockpit_scene/assets/3d/dashboard.blend" id="6_emtfq"]
|
||||
[ext_resource type="Script" uid="uid://ddk7j5b8p51dk" path="res://stages/terrain/region/scripts/region_parameter.gd" id="6_g7q16"]
|
||||
[ext_resource type="Script" uid="uid://b4eimt3v08jhc" path="res://common/game_data/scripts/run/run_point.gd" id="7_emtfq"]
|
||||
[ext_resource type="Script" uid="uid://vf8nm8ch1p8s" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/dashboard_run_point_screen.gd" id="7_lskho"]
|
||||
[ext_resource type="PackedScene" uid="uid://cdvegfgvp7053" path="res://stages/3d_scenes/cockpit_scene/assets/3d/furnitures/screen_1.blend" id="8_psxhb"]
|
||||
[ext_resource type="Texture2D" uid="uid://bsgmxvuphn73c" path="res://common/icons/arrow-narrow-down.svg" id="9_v1m0r"]
|
||||
@@ -19,6 +23,21 @@ viewport_path = NodePath("Holo/SubViewport")
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_5d7hc"]
|
||||
viewport_path = NodePath("StatusScreen/SubViewport")
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_emtfq"]
|
||||
font = ExtResource("3_g7q16")
|
||||
font_size = 24
|
||||
|
||||
[sub_resource type="Resource" id="Resource_lskho"]
|
||||
script = ExtResource("6_g7q16")
|
||||
region_name = "Ynynidqdzqdqdqz"
|
||||
region_seed = 4016897874
|
||||
|
||||
[sub_resource type="Resource" id="Resource_psxhb"]
|
||||
script = ExtResource("7_emtfq")
|
||||
region_parameter = SubResource("Resource_lskho")
|
||||
position = 0.7809387750389029
|
||||
metadata/_custom_type_script = "uid://b4eimt3v08jhc"
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_vlkbw"]
|
||||
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_qbi61"]
|
||||
@@ -64,6 +83,10 @@ _data = {
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_2ofl5"]
|
||||
viewport_path = NodePath("RightScreen/RightScreenAction/SubViewport")
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_lskho"]
|
||||
font = ExtResource("3_g7q16")
|
||||
font_size = 24
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_2q8cl"]
|
||||
radius = 0.34611636
|
||||
|
||||
@@ -107,6 +130,10 @@ _data = {
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_vks67"]
|
||||
viewport_path = NodePath("LeftScreen/LeftScreenAction/SubViewport")
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_g7q16"]
|
||||
font = ExtResource("3_g7q16")
|
||||
font_size = 24
|
||||
|
||||
[sub_resource type="Animation" id="Animation_2kujw"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
@@ -152,12 +179,11 @@ metadata/_custom_type_script = "uid://fnu2d6wna4yc"
|
||||
|
||||
[node name="Dashboard" type="Node3D" unique_id=1374334508]
|
||||
script = ExtResource("1_vks67")
|
||||
main_screen_icon = ExtResource("2_eij3d")
|
||||
destination_title = "TO_BOREA_BASE"
|
||||
|
||||
[node name="Holo" type="Sprite3D" parent="." unique_id=1067303692]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1.0000002, 0, 8.742278e-08, 0, -1, 0, 0.83082896, 0.33655214)
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1.0000002, 0, 8.742278e-08, 0, -1, 0, 0.91157264, 0.33655214)
|
||||
pixel_size = 0.004
|
||||
texture = SubResource("ViewportTexture_cvt2p")
|
||||
|
||||
@@ -183,7 +209,7 @@ stop_name = ""
|
||||
|
||||
[node name="StatusScreen" type="Sprite3D" parent="." unique_id=1257606535]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1.0000002, 0, 8.742278e-08, 0, -1, 0, 1.0703605, 0.35432142)
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1.0000002, 0, 8.742278e-08, 0, -1, 0, 1.1344478, 0.35432142)
|
||||
modulate = Color(1, 0, 0.43137255, 1)
|
||||
pixel_size = 0.003
|
||||
texture = SubResource("ViewportTexture_5d7hc")
|
||||
@@ -191,7 +217,7 @@ texture = SubResource("ViewportTexture_5d7hc")
|
||||
[node name="SubViewport" type="SubViewport" parent="StatusScreen" unique_id=1357189828]
|
||||
disable_3d = true
|
||||
transparent_bg = true
|
||||
size = Vector2i(435, 98)
|
||||
size = Vector2i(599, 48)
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="StatusScreen/SubViewport" unique_id=2076282975]
|
||||
anchors_preset = 15
|
||||
@@ -208,16 +234,19 @@ alignment = 1
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla "
|
||||
label_settings = ExtResource("4_7u0n5")
|
||||
label_settings = SubResource("LabelSettings_emtfq")
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
autowrap_mode = 3
|
||||
|
||||
[node name="MainScreen" type="Area3D" parent="." unique_id=874806978 node_paths=PackedStringArray("hover_animation_player")]
|
||||
[node name="MainScreen" type="Area3D" parent="." unique_id=874806978 node_paths=PackedStringArray("icon", "label", "hover_animation_player")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.42284742, 0.4816055)
|
||||
script = ExtResource("5_g7q16")
|
||||
script = ExtResource("4_vks67")
|
||||
icon = NodePath("MainScreenSprite/SubViewport/VBoxContainer/MainScreenIcon")
|
||||
label = NodePath("MainScreenSprite/SubViewport/VBoxContainer/MainScreenLabel")
|
||||
run_point = SubResource("Resource_psxhb")
|
||||
interactable = false
|
||||
inspectable = true
|
||||
hover_animation_player = NodePath("HoverAnimationPlayer")
|
||||
metadata/_custom_type_script = "uid://bj4d1x8n8ina"
|
||||
|
||||
@@ -225,15 +254,13 @@ metadata/_custom_type_script = "uid://bj4d1x8n8ina"
|
||||
shape = SubResource("SphereShape3D_vlkbw")
|
||||
|
||||
[node name="MainScreenSprite" type="Sprite3D" parent="MainScreen" unique_id=1081515212]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-1, 8.0014914e-08, 5.4146472e-08, 7.923836e-08, 0.35859588, 0.9334929, 5.5276644e-08, 0.9334929, -0.35859588, 0, 0, 0)
|
||||
visible = false
|
||||
pixel_size = 0.003
|
||||
texture = SubResource("ViewportTexture_qbi61")
|
||||
|
||||
[node name="SubViewport" type="SubViewport" parent="MainScreen/MainScreenSprite" unique_id=1101534363]
|
||||
transparent_bg = true
|
||||
size = Vector2i(150, 150)
|
||||
size = Vector2i(217, 178)
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="MainScreen/MainScreenSprite/SubViewport" unique_id=758261583]
|
||||
anchors_preset = 15
|
||||
@@ -250,17 +277,18 @@ alignment = 1
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(100, 100)
|
||||
layout_mode = 2
|
||||
texture = ExtResource("2_eij3d")
|
||||
texture = ExtResource("5_vks67")
|
||||
expand_mode = 3
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="MainScreenLabel" type="Label" parent="MainScreen/MainScreenSprite/SubViewport/VBoxContainer" unique_id=2102392578]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Take Off"
|
||||
text = "Ynynizdq qd qdq qzdqdzq"
|
||||
label_settings = ExtResource("4_7u0n5")
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
autowrap_mode = 3
|
||||
|
||||
[node name="HoverAnimationPlayer" type="AnimationPlayer" parent="MainScreen" unique_id=74243401]
|
||||
libraries/ = SubResource("AnimationLibrary_2ofl5")
|
||||
@@ -313,7 +341,7 @@ stretch_mode = 5
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Uwoqos Uwoqos "
|
||||
label_settings = ExtResource("4_7u0n5")
|
||||
label_settings = SubResource("LabelSettings_lskho")
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
autowrap_mode = 3
|
||||
@@ -368,7 +396,7 @@ stretch_mode = 5
|
||||
[node name="LeftScreenActionLabel" type="Label" parent="LeftScreen/LeftScreenAction/SubViewport/VBoxContainer" unique_id=448288889]
|
||||
layout_mode = 2
|
||||
text = "Uwoqos Uwoqos "
|
||||
label_settings = ExtResource("4_7u0n5")
|
||||
label_settings = SubResource("LabelSettings_g7q16")
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
autowrap_mode = 3
|
||||
|
||||
@@ -45,7 +45,13 @@ size_flags_horizontal = 4
|
||||
text = "0"
|
||||
label_settings = SubResource("LabelSettings_30o21")
|
||||
|
||||
[node name="DistanceTitleLabel" type="Label" parent="VBoxContainer" unique_id=216163419]
|
||||
[node name="DestinationTitleLabel" type="Label" parent="VBoxContainer" unique_id=1137452930]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
text = "DESTINATION"
|
||||
label_settings = SubResource("LabelSettings_xsjq0")
|
||||
|
||||
[node name="DestinationLabel" type="Label" parent="VBoxContainer" unique_id=216163419]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
@@ -53,11 +59,13 @@ text = "Jusqu'à la Base Boréa"
|
||||
label_settings = SubResource("LabelSettings_xsjq0")
|
||||
|
||||
[node name="VSeparator" type="VSeparator" parent="." unique_id=124655802]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme = ExtResource("1_bw0fn")
|
||||
theme_override_styles/separator = SubResource("StyleBoxLine_f7ho8")
|
||||
|
||||
[node name="DetailsContainer" type="VBoxContainer" parent="." unique_id=597548757]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
[gd_scene format=3 uid="uid://lctyea2v3hrg"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://cxkmn71f8d2hy" path="res://common/icons/hourglass-empty.svg" id="1_d34h0"]
|
||||
[ext_resource type="Script" uid="uid://dsjd6wkrtjwsa" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/mutation_discovered_screen/scripts/mutation_discovery_element.gd" id="1_udmux"]
|
||||
[ext_resource type="Texture2D" uid="uid://cgt4n1xwn4dc2" path="res://common/icons/hexagon.svg" id="1_wfsg0"]
|
||||
[ext_resource type="Texture2D" uid="uid://cul11ab04vf8i" path="res://common/icons/hexagon-lock.svg" id="3_udmux"]
|
||||
[ext_resource type="Texture2D" uid="uid://cwewx7cdy085h" path="res://common/icons/help-hexagon.svg" id="4_0ou8m"]
|
||||
|
||||
[node name="MutationDiscoveryElement" type="Control" unique_id=701137276]
|
||||
custom_minimum_size = Vector2(30, 30)
|
||||
layout_mode = 3
|
||||
anchors_preset = 0
|
||||
offset_right = 30.0
|
||||
offset_bottom = 30.0
|
||||
script = ExtResource("1_udmux")
|
||||
state = 0
|
||||
|
||||
[node name="BackgroundHexagon" type="TextureRect" parent="." unique_id=1761030872]
|
||||
unique_name_in_owner = true
|
||||
modulate = Color(1, 0.6509804, 0.09019608, 1)
|
||||
custom_minimum_size = Vector2(30, 30)
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -15.0
|
||||
offset_top = -15.0
|
||||
offset_right = 15.0
|
||||
offset_bottom = 15.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("1_wfsg0")
|
||||
expand_mode = 1
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="BackgroundHexagonQuestion" type="TextureRect" parent="." unique_id=1955995284]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
custom_minimum_size = Vector2(30, 30)
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -15.0
|
||||
offset_top = -15.0
|
||||
offset_right = 15.0
|
||||
offset_bottom = 15.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("4_0ou8m")
|
||||
expand_mode = 1
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="BackgroundHexagonLocked" type="TextureRect" parent="." unique_id=786605518]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
custom_minimum_size = Vector2(30, 30)
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -15.0
|
||||
offset_top = -15.0
|
||||
offset_right = 15.0
|
||||
offset_bottom = 15.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("3_udmux")
|
||||
expand_mode = 1
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="MutationTexture" type="TextureRect" parent="." unique_id=585232428]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(20, 20)
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -10.0
|
||||
offset_top = -10.0
|
||||
offset_right = 10.0
|
||||
offset_bottom = 10.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("1_d34h0")
|
||||
expand_mode = 1
|
||||
stretch_mode = 5
|
||||
@@ -0,0 +1,79 @@
|
||||
[gd_scene format=3 uid="uid://ci4x1q326lvyy"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://wwehvx7ui4yw" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/mutation_discovered_screen/scripts/mutation_discovery_screen.gd" id="1_cfhhl"]
|
||||
[ext_resource type="Script" uid="uid://c1lsjc2cwjupa" path="res://entities/plants/scripts/plant_mutation.gd" id="2_dv1aj"]
|
||||
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="2_kjjrb"]
|
||||
[ext_resource type="Script" uid="uid://c7po0bstyg80u" path="res://entities/plants/scripts/plant_mutation/ancient_mutation.gd" id="3_3q2hk"]
|
||||
[ext_resource type="PackedScene" uid="uid://i28ngc4hgq85" path="res://stages/3d_scenes/cockpit_scene/assets/3d/furnitures/screen.blend" id="3_5fpja"]
|
||||
[ext_resource type="Script" uid="uid://eslsw42a0ylv" path="res://entities/plants/scripts/plant_mutation/fertile_mutation.gd" id="4_psve5"]
|
||||
[ext_resource type="Script" uid="uid://7bfgsrkp6gaq" path="res://entities/plants/scripts/plant_mutation/generous_mutation.gd" id="5_74fqo"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_dv1aj"]
|
||||
script = ExtResource("3_3q2hk")
|
||||
metadata/_custom_type_script = "uid://c7po0bstyg80u"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_3q2hk"]
|
||||
script = ExtResource("4_psve5")
|
||||
metadata/_custom_type_script = "uid://eslsw42a0ylv"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_psve5"]
|
||||
script = ExtResource("5_74fqo")
|
||||
metadata/_custom_type_script = "uid://7bfgsrkp6gaq"
|
||||
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_c5x8t"]
|
||||
viewport_path = NodePath("Sprite3D/SubViewport")
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_5jpjd"]
|
||||
font = ExtResource("2_kjjrb")
|
||||
font_size = 15
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_dv1aj"]
|
||||
font = ExtResource("2_kjjrb")
|
||||
font_size = 8
|
||||
|
||||
[node name="MutationDiscoveryScreen" type="Node3D" unique_id=1881622243]
|
||||
script = ExtResource("1_cfhhl")
|
||||
all_mutations = Array[ExtResource("2_dv1aj")]([SubResource("Resource_dv1aj"), SubResource("Resource_3q2hk"), SubResource("Resource_psve5"), null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null])
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="." unique_id=1624784968]
|
||||
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -0.011004657, 0, 0)
|
||||
pixel_size = 0.003
|
||||
texture = SubResource("ViewportTexture_c5x8t")
|
||||
|
||||
[node name="SubViewport" type="SubViewport" parent="Sprite3D" unique_id=1689184715]
|
||||
disable_3d = true
|
||||
transparent_bg = true
|
||||
size = Vector2i(277, 190)
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Sprite3D/SubViewport" unique_id=1462242714]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_constants/separation = 8
|
||||
alignment = 1
|
||||
|
||||
[node name="Label" type="Label" parent="Sprite3D/SubViewport/VBoxContainer" unique_id=1148366912]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 1
|
||||
text = "DISCOVERED_MUTATIONS"
|
||||
label_settings = SubResource("LabelSettings_5jpjd")
|
||||
horizontal_alignment = 1
|
||||
autowrap_mode = 3
|
||||
|
||||
[node name="Label2" type="Label" parent="Sprite3D/SubViewport/VBoxContainer" unique_id=1245847739]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 1
|
||||
text = "PLANT_SEEDS_TO_DISCOVER_MUTATIONS"
|
||||
label_settings = SubResource("LabelSettings_dv1aj")
|
||||
horizontal_alignment = 1
|
||||
autowrap_mode = 3
|
||||
|
||||
[node name="MutationContainer" type="HFlowContainer" parent="Sprite3D/SubViewport/VBoxContainer" unique_id=1585516203]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
alignment = 1
|
||||
last_wrap_alignment = 2
|
||||
|
||||
[node name="ScreenModel" parent="." unique_id=1871285491 instance=ExtResource("3_5fpja")]
|
||||
@@ -0,0 +1,26 @@
|
||||
@tool
|
||||
extends Control
|
||||
class_name MutationDiscoveryElement
|
||||
|
||||
enum State {DISCOVERED,UNDISCOVERED,LOCKED}
|
||||
|
||||
@export var state : State = State.UNDISCOVERED :
|
||||
set(v):
|
||||
state = v
|
||||
update()
|
||||
@export var mutation : PlantMutation :
|
||||
set(v):
|
||||
mutation = v
|
||||
update()
|
||||
|
||||
func _ready():
|
||||
update()
|
||||
|
||||
func update():
|
||||
if is_node_ready():
|
||||
%MutationTexture.visible = state == State.DISCOVERED
|
||||
%BackgroundHexagon.visible = state == State.DISCOVERED
|
||||
%BackgroundHexagonQuestion.visible = state == State.UNDISCOVERED
|
||||
%BackgroundHexagonLocked.visible = state == State.LOCKED
|
||||
if mutation:
|
||||
%MutationTexture.texture = mutation.get_icon()
|
||||
@@ -0,0 +1 @@
|
||||
uid://dsjd6wkrtjwsa
|
||||
@@ -0,0 +1,34 @@
|
||||
@tool
|
||||
extends Node3D
|
||||
|
||||
const MUTATION_DISCOVERY_ELEMENT_SCENE = preload("res://stages/3d_scenes/cockpit_scene/cockpit_elements/mutation_discovered_screen/mutation_discovery_element.tscn")
|
||||
|
||||
@export var all_mutations : Array[PlantMutation]
|
||||
@export var available_mutations : Array[PlantMutation]
|
||||
@export var planted_mutation_ids : Array[String]
|
||||
|
||||
@export_tool_button("Update", "Callable") var update_action = update
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
if not Engine.is_editor_hint():
|
||||
all_mutations = GameInfo.game_data.progression_data.all_mutations
|
||||
available_mutations = GameInfo.game_data.progression_data.available_mutations
|
||||
planted_mutation_ids = GameInfo.game_data.progression_data.planted_mutation_ids
|
||||
update()
|
||||
|
||||
func update():
|
||||
if is_node_ready():
|
||||
for c in %MutationContainer.get_children():
|
||||
c.queue_free()
|
||||
for i in range(len(all_mutations)):
|
||||
var el : MutationDiscoveryElement = MUTATION_DISCOVERY_ELEMENT_SCENE.instantiate() as MutationDiscoveryElement
|
||||
if i < len(available_mutations):
|
||||
el.mutation = available_mutations[i]
|
||||
if el.mutation.get_mutation_id() in planted_mutation_ids:
|
||||
el.state = MutationDiscoveryElement.State.DISCOVERED
|
||||
else :
|
||||
el.state = MutationDiscoveryElement.State.UNDISCOVERED
|
||||
else:
|
||||
el.state = MutationDiscoveryElement.State.LOCKED
|
||||
%MutationContainer.add_child(el)
|
||||
@@ -0,0 +1 @@
|
||||
uid://wwehvx7ui4yw
|
||||
@@ -7,30 +7,32 @@
|
||||
[ext_resource type="Texture2D" uid="uid://dhy4ewvqvlxyi" path="res://common/icons/clock.svg" id="2_xwbvs"]
|
||||
[ext_resource type="Texture2D" uid="uid://cgmxjom200bej" path="res://common/icons/chevrons-up.svg" id="4_a7tuo"]
|
||||
[ext_resource type="Texture2D" uid="uid://c2qg7ikkylfv4" path="res://common/icons/seeds.svg" id="4_ihffg"]
|
||||
[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="7_o0x5p"]
|
||||
[ext_resource type="Theme" uid="uid://5au2k3vf2po3" path="res://gui/ressources/menu.tres" id="8_ilibg"]
|
||||
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_c5x8t"]
|
||||
viewport_path = NodePath("Sprite3D/SubViewport")
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_5jpjd"]
|
||||
font = ExtResource("1_82utc")
|
||||
font_size = 15
|
||||
font_size = 24
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_xwbvs"]
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_d4qoj"]
|
||||
font = ExtResource("1_82utc")
|
||||
font_size = 20
|
||||
font_size = 24
|
||||
|
||||
[node name="PlantInfoScreen" type="Node3D" unique_id=1881622243]
|
||||
script = ExtResource("1_d4qoj")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="." unique_id=1624784968]
|
||||
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -0.00714764, 0, 0)
|
||||
pixel_size = 0.004
|
||||
pixel_size = 0.002
|
||||
texture = SubResource("ViewportTexture_c5x8t")
|
||||
|
||||
[node name="SubViewport" type="SubViewport" parent="Sprite3D" unique_id=1689184715]
|
||||
disable_3d = true
|
||||
transparent_bg = true
|
||||
size = Vector2i(207, 145)
|
||||
size = Vector2i(450, 350)
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Sprite3D/SubViewport" unique_id=1462242714]
|
||||
anchors_preset = 15
|
||||
@@ -57,12 +59,13 @@ alignment = 1
|
||||
last_wrap_alignment = 2
|
||||
|
||||
[node name="ScoreStat" type="HBoxContainer" parent="Sprite3D/SubViewport/VBoxContainer/StatsContainer" unique_id=2037793125]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 0
|
||||
alignment = 1
|
||||
|
||||
[node name="ScoreIcon" type="TextureRect" parent="Sprite3D/SubViewport/VBoxContainer/StatsContainer/ScoreStat" unique_id=1399775561]
|
||||
custom_minimum_size = Vector2(30, 30)
|
||||
custom_minimum_size = Vector2(40, 40)
|
||||
layout_mode = 2
|
||||
texture = ExtResource("2_5jpjd")
|
||||
expand_mode = 3
|
||||
@@ -72,17 +75,18 @@ unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
text = "3"
|
||||
label_settings = SubResource("LabelSettings_xwbvs")
|
||||
label_settings = SubResource("LabelSettings_d4qoj")
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="LifetimeStat" type="HBoxContainer" parent="Sprite3D/SubViewport/VBoxContainer/StatsContainer" unique_id=1750151233]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 0
|
||||
alignment = 1
|
||||
|
||||
[node name="LifetimeIcon" type="TextureRect" parent="Sprite3D/SubViewport/VBoxContainer/StatsContainer/LifetimeStat" unique_id=855540661]
|
||||
custom_minimum_size = Vector2(30, 30)
|
||||
custom_minimum_size = Vector2(40, 40)
|
||||
layout_mode = 2
|
||||
texture = ExtResource("2_xwbvs")
|
||||
expand_mode = 3
|
||||
@@ -92,17 +96,18 @@ unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
text = "3"
|
||||
label_settings = SubResource("LabelSettings_xwbvs")
|
||||
label_settings = SubResource("LabelSettings_d4qoj")
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="GrowingStat" type="HBoxContainer" parent="Sprite3D/SubViewport/VBoxContainer/StatsContainer" unique_id=1246515659]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 0
|
||||
alignment = 1
|
||||
|
||||
[node name="GrowingIcon" type="TextureRect" parent="Sprite3D/SubViewport/VBoxContainer/StatsContainer/GrowingStat" unique_id=613724045]
|
||||
custom_minimum_size = Vector2(30, 30)
|
||||
custom_minimum_size = Vector2(40, 40)
|
||||
layout_mode = 2
|
||||
texture = ExtResource("4_a7tuo")
|
||||
expand_mode = 3
|
||||
@@ -112,17 +117,18 @@ unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
text = "3"
|
||||
label_settings = SubResource("LabelSettings_xwbvs")
|
||||
label_settings = SubResource("LabelSettings_d4qoj")
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="SeedStat" type="HBoxContainer" parent="Sprite3D/SubViewport/VBoxContainer/StatsContainer" unique_id=2140421429]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 0
|
||||
alignment = 1
|
||||
|
||||
[node name="SeedIcon" type="TextureRect" parent="Sprite3D/SubViewport/VBoxContainer/StatsContainer/SeedStat" unique_id=313311026]
|
||||
custom_minimum_size = Vector2(30, 30)
|
||||
custom_minimum_size = Vector2(40, 40)
|
||||
layout_mode = 2
|
||||
texture = ExtResource("4_ihffg")
|
||||
expand_mode = 3
|
||||
@@ -132,8 +138,32 @@ unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
text = "1-2"
|
||||
label_settings = SubResource("LabelSettings_xwbvs")
|
||||
label_settings = SubResource("LabelSettings_d4qoj")
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="PlantMaxMutationLabel" type="RichTextLabel" parent="Sprite3D/SubViewport/VBoxContainer" unique_id=1330541838]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme = ExtResource("7_o0x5p")
|
||||
theme_override_fonts/bold_font = ExtResource("1_82utc")
|
||||
theme_override_font_sizes/normal_font_size = 16
|
||||
theme_override_font_sizes/bold_font_size = 20
|
||||
bbcode_enabled = true
|
||||
text = "PLANTS_CAN_HAVE_UP_TO_X_MUTATION"
|
||||
fit_content = true
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="PlantMutationProbability" type="RichTextLabel" parent="Sprite3D/SubViewport/VBoxContainer" unique_id=254393092]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme = ExtResource("8_ilibg")
|
||||
theme_override_fonts/bold_font = ExtResource("1_82utc")
|
||||
theme_override_font_sizes/normal_font_size = 16
|
||||
theme_override_font_sizes/bold_font_size = 20
|
||||
bbcode_enabled = true
|
||||
text = "PLANTS_MUTATION_CHANCE_IS_X_PERCENT"
|
||||
fit_content = true
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="ScreenModel" parent="." unique_id=1871285491 instance=ExtResource("1_c5x8t")]
|
||||
|
||||
@@ -12,9 +12,9 @@ signal main_screen_activated
|
||||
signal right_screen_activated
|
||||
signal left_screen_activated
|
||||
|
||||
@export var main_screen_icon : Texture : set = set_main_screen_icon
|
||||
@export var main_screen_text : String : set = set_main_screen_label
|
||||
@export var main_screen_interactable : bool : set = set_main_screen_interactable
|
||||
@export var main_screen_state : DashboardMainScreen.State : set = set_main_screen_state
|
||||
@export var main_screen_run_point : RunPoint : set = set_main_screen_run_point
|
||||
|
||||
|
||||
@export var stop_name : String : set = set_stop_label
|
||||
@export var stop_title : String : set = set_stop_title_label
|
||||
@@ -31,9 +31,9 @@ func _ready():
|
||||
%RightScreen.clicked.connect(func(): right_screen_activated.emit())
|
||||
%LeftScreen.clicked.connect(func(): left_screen_activated.emit())
|
||||
|
||||
set_main_screen_icon()
|
||||
set_main_screen_label()
|
||||
set_main_screen_interactable()
|
||||
|
||||
set_main_screen_state()
|
||||
set_main_screen_run_point()
|
||||
set_stop_label()
|
||||
set_stop_title_label()
|
||||
set_destination_title()
|
||||
@@ -51,21 +51,16 @@ func _process(_d):
|
||||
else:
|
||||
%HoloContent.distance = floori(lerp(float(%HoloContent.distance), float(destination_distance), 0.05))
|
||||
|
||||
func set_main_screen_icon(v : Texture = main_screen_icon):
|
||||
main_screen_icon = v
|
||||
func set_main_screen_state(s := main_screen_state):
|
||||
main_screen_state = s
|
||||
if is_node_ready():
|
||||
%MainScreenIcon.texture = v
|
||||
%MainScreen.state = s
|
||||
|
||||
func set_main_screen_label(v : String = main_screen_text):
|
||||
main_screen_text = v
|
||||
func set_main_screen_run_point(rp := main_screen_run_point):
|
||||
main_screen_run_point = rp
|
||||
if is_node_ready():
|
||||
%MainScreenLabel.text = v
|
||||
%MainScreen.run_point = rp
|
||||
|
||||
func set_main_screen_interactable(v : bool = main_screen_interactable):
|
||||
main_screen_interactable = v
|
||||
if is_node_ready():
|
||||
%MainScreenSprite.visible = v
|
||||
%MainScreen.interactable = v
|
||||
|
||||
func set_stop_label(v := stop_name):
|
||||
stop_name = v
|
||||
@@ -80,7 +75,7 @@ func set_stop_title_label(v := stop_title):
|
||||
func set_destination_title(v := destination_title):
|
||||
destination_title = v
|
||||
if is_node_ready():
|
||||
%HoloContent.distance_title = v
|
||||
%HoloContent.destination = v
|
||||
|
||||
func set_status_text(v := status_text):
|
||||
status_text = v
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
@tool
|
||||
extends Interactable3D
|
||||
class_name DashboardMainScreen
|
||||
|
||||
enum State {READY_TO_TAKE_OFF,READY_TO_LAND,WAITING_CHOICE,LANDED}
|
||||
|
||||
const TAKE_OFF_ICON = preload("res://common/icons/chevrons-up.svg")
|
||||
const LAND_ICON = preload("res://common/icons/arrow-narrow-down.svg")
|
||||
const RUN_POINT_ICON = preload("res://common/icons/map-pin.svg")
|
||||
const WAITING_ICON = preload("res://common/icons/help-hexagon.svg")
|
||||
|
||||
func _ready():
|
||||
set_state()
|
||||
|
||||
@export var icon : TextureRect
|
||||
@export var label : Label
|
||||
@export var state : State = State.LANDED : set = set_state
|
||||
|
||||
@export var run_point : RunPoint
|
||||
|
||||
func set_state(s := state):
|
||||
state = s
|
||||
if is_node_ready():
|
||||
interactable = false
|
||||
inspectable = false
|
||||
match state:
|
||||
State.READY_TO_TAKE_OFF:
|
||||
icon.texture = TAKE_OFF_ICON
|
||||
label.text = tr("TAKE_OFF")
|
||||
interactable = true
|
||||
State.READY_TO_LAND:
|
||||
icon.texture = LAND_ICON
|
||||
label.text = tr("LAND_SHIP")
|
||||
interactable = true
|
||||
State.WAITING_CHOICE:
|
||||
icon.texture = WAITING_ICON
|
||||
label.text = ""
|
||||
State.LANDED:
|
||||
icon.texture = RUN_POINT_ICON
|
||||
label.text = "" if not run_point else run_point.region_parameter.get_region_name()
|
||||
inspectable = true
|
||||
|
||||
func card_info() -> CardInfo:
|
||||
if run_point and state == State.LANDED:
|
||||
var info = run_point.card_info()
|
||||
info.subtitle = tr("LOCATION")
|
||||
return info
|
||||
return null
|
||||
@@ -0,0 +1 @@
|
||||
uid://biqgucg78cx44
|
||||
@@ -18,7 +18,6 @@ func set_run_point(rp := run_point):
|
||||
interactable = rp != null
|
||||
if rp:
|
||||
action_icon.texture = LAND_ICON
|
||||
print(rp.region_parameter.get_region_name())
|
||||
action_label.text = rp.region_parameter.get_region_name()
|
||||
|
||||
func card_info() -> CardInfo:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
extends HBoxContainer
|
||||
|
||||
@export var distance : int = 20000 : set = set_distance
|
||||
@export var distance_title : String = "TO_BOREA_BASE" : set = set_distance_title
|
||||
@export var destination : String = "BOREA_BASE" : set = set_destination
|
||||
@export var stop_name : String = "" : set = set_stop_name
|
||||
@export var stop_title : String = "NEXT_STOP" : set = set_stop_title
|
||||
|
||||
@@ -32,8 +32,10 @@ func set_stop_title(v : String = stop_title):
|
||||
stop_title = v
|
||||
if is_node_ready():
|
||||
%NextStopTitleLabel.text = tr(str(v))
|
||||
%VSeparator.visible = v != ""
|
||||
%DetailsContainer.visible = v != ""
|
||||
|
||||
func set_distance_title(v : String = distance_title):
|
||||
distance_title = v
|
||||
func set_destination(v : String = destination):
|
||||
destination = v
|
||||
if is_node_ready():
|
||||
%DistanceTitleLabel.text = tr(str(v))
|
||||
%DestinationLabel.text = tr(str(v))
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
extends Node3D
|
||||
class_name PlantInfoScreen
|
||||
|
||||
const CHANGED_COLOR = Color('#FFA617')
|
||||
|
||||
func _ready():
|
||||
update_plant_info()
|
||||
|
||||
@@ -8,9 +10,27 @@ func update_plant_info():
|
||||
var plant_info : RunDataPlantInfo = GameInfo.game_data.current_run.plant_info
|
||||
|
||||
%ScoreLabel.text = "%d" % plant_info.get_base_score()
|
||||
%ScoreStat.modulate = Color.WHITE if plant_info.get_base_score() == plant_info.DEFAULT_BASE_SCORE else CHANGED_COLOR
|
||||
|
||||
%LifetimeLabel.text = "%d" % plant_info.get_lifetime()
|
||||
%LifetimeStat.modulate = Color.WHITE if plant_info.get_lifetime() == plant_info.DEFAULT_LIFETIME else CHANGED_COLOR
|
||||
|
||||
%GrowingLabel.text = "%d" % plant_info.get_growing_time()
|
||||
%GrowingStat.modulate = Color.WHITE if plant_info.get_growing_time() == plant_info.DEFAULT_GROWING_TIME else CHANGED_COLOR
|
||||
|
||||
%SeedLabel.text = "%d-%d" % [
|
||||
plant_info.get_seed_number() - plant_info.get_seed_random_loose(),
|
||||
plant_info.get_seed_number()
|
||||
]
|
||||
%SeedStat.modulate = Color.WHITE if (
|
||||
plant_info.get_seed_number() == plant_info.DEFAULT_SEED_NUMBER
|
||||
and plant_info.get_seed_random_loose() == plant_info.DEFAULT_SEED_RANDOM_LOOSE
|
||||
) else CHANGED_COLOR
|
||||
|
||||
%PlantMaxMutationLabel.text = tr("PLANTS_CAN_HAVE_UP_TO_X_MUTATION") % plant_info.get_mutation_max_number()
|
||||
%PlantMaxMutationLabel.modulate = Color.WHITE if plant_info.get_mutation_max_number() == plant_info.DEFAULT_MUTATION_MAX_NUMBER else CHANGED_COLOR
|
||||
|
||||
%PlantMutationProbability.text = tr("PLANTS_MUTATION_CHANCE_IS_X_PERCENT").format({
|
||||
"mutation_chance": roundi(plant_info.get_mutation_probability() * 100)
|
||||
})
|
||||
%PlantMutationProbability.modulate = Color.WHITE if plant_info.get_mutation_probability() == plant_info.DEFAULT_MUTATION_PROBABILITY else CHANGED_COLOR
|
||||
@@ -90,6 +90,55 @@ _data = {
|
||||
&"turn": SubResource("Animation_22o3l")
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_ix5ew"]
|
||||
resource_name = "Land"
|
||||
length = 5.1666665
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("DaySky:transparency")
|
||||
tracks/0/interp = 2
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 5.1666665),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [1.0, 0.0]
|
||||
}
|
||||
tracks/1/type = "bezier"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Planet3d:position:y")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"handle_modes": PackedInt32Array(2, 2),
|
||||
"points": PackedFloat32Array(0, 0, 0, 5.6320395, -305.57382, 0, -2.034453, -6.684912, 0, 0),
|
||||
"times": PackedFloat32Array(0, 5.1666665)
|
||||
}
|
||||
tracks/2/type = "bezier"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Planet3d:position:z")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"handle_modes": PackedInt32Array(0, 2),
|
||||
"points": PackedFloat32Array(400, -3.1666665, -1.9195862, 0, 0, 0, -2.5635402, -100.9367, 0, 0),
|
||||
"times": PackedFloat32Array(0, 5.1666665)
|
||||
}
|
||||
tracks/3/type = "bezier"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Planet3d:rotation:x")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"handle_modes": PackedInt32Array(2, 0),
|
||||
"points": PackedFloat32Array(-3.142, 0, 0, 1.5, -0.021812677, -6.283, -2.9999998, -0.021812439, 0.25, 0),
|
||||
"times": PackedFloat32Array(0, 5.1666665)
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_h4nnn"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
@@ -104,17 +153,38 @@ tracks/0/keys = {
|
||||
"update": 0,
|
||||
"values": [0.0]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/type = "bezier"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Ship:position")
|
||||
tracks/1/path = NodePath("Planet3d:position:y")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 193.97134, 0)]
|
||||
"handle_modes": PackedInt32Array(0),
|
||||
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
|
||||
"times": PackedFloat32Array(0)
|
||||
}
|
||||
tracks/2/type = "bezier"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Planet3d:position:z")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"handle_modes": PackedInt32Array(0),
|
||||
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
|
||||
"times": PackedFloat32Array(0)
|
||||
}
|
||||
tracks/3/type = "bezier"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Planet3d:rotation:x")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"handle_modes": PackedInt32Array(0),
|
||||
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
|
||||
"times": PackedFloat32Array(0)
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_aqm27"]
|
||||
@@ -127,27 +197,48 @@ tracks/0/path = NodePath("DaySky:transparency")
|
||||
tracks/0/interp = 2
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 5),
|
||||
"times": PackedFloat32Array(0, 5.1666665),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 1.0]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/type = "bezier"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Ship:position")
|
||||
tracks/1/interp = 2
|
||||
tracks/1/path = NodePath("Planet3d:position:y")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 1.7, 5),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 193.97134, 0), Vector3(0, 250, -0.649), Vector3(1.5258789e-05, 207.79611, -191.42767)]
|
||||
"handle_modes": PackedInt32Array(0, 0),
|
||||
"points": PackedFloat32Array(0, 0, 0, 1.2666667, -75.835144, 0, -1.8666666, 48.631874, 0, 0),
|
||||
"times": PackedFloat32Array(0, 5.1666665)
|
||||
}
|
||||
tracks/2/type = "bezier"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Planet3d:position:z")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"handle_modes": PackedInt32Array(2, 0),
|
||||
"points": PackedFloat32Array(0, 0, 0, 1.7666667, 0.11311293, 400, -3.1666665, -1.9195862, 0, 0),
|
||||
"times": PackedFloat32Array(0, 5.1666665)
|
||||
}
|
||||
tracks/3/type = "bezier"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Planet3d:rotation:x")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"handle_modes": PackedInt32Array(2, 0),
|
||||
"points": PackedFloat32Array(0, 0, 0, 1.7222222, 0, -3.142, -2.4666665, 0.05208826, 0, 0),
|
||||
"times": PackedFloat32Array(0, 5.1666665)
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_s2qnm"]
|
||||
[sub_resource type="Animation" id="Animation_4i0sb"]
|
||||
resource_name = "TookOff"
|
||||
length = 0.01
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
@@ -160,24 +251,46 @@ tracks/0/keys = {
|
||||
"update": 0,
|
||||
"values": [1.0]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/type = "bezier"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Ship:position")
|
||||
tracks/1/interp = 2
|
||||
tracks/1/path = NodePath("Planet3d:position:y")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(1.5258789e-05, 207.79611, -191.42767)]
|
||||
"handle_modes": PackedInt32Array(2),
|
||||
"points": PackedFloat32Array(0, 0, 0, 1.5, 140.60794),
|
||||
"times": PackedFloat32Array(0)
|
||||
}
|
||||
tracks/2/type = "bezier"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Planet3d:position:z")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"handle_modes": PackedInt32Array(0),
|
||||
"points": PackedFloat32Array(400, -3.1666665, -1.9195862, 0, 0),
|
||||
"times": PackedFloat32Array(0)
|
||||
}
|
||||
tracks/3/type = "bezier"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Planet3d:rotation:x")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"handle_modes": PackedInt32Array(0),
|
||||
"points": PackedFloat32Array(-3.142, -0.84444445, 0, 0, 0),
|
||||
"times": PackedFloat32Array(0)
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_s2qnm"]
|
||||
_data = {
|
||||
&"Land": SubResource("Animation_ix5ew"),
|
||||
&"RESET": SubResource("Animation_h4nnn"),
|
||||
&"TakeOff": SubResource("Animation_aqm27"),
|
||||
&"TookOff": SubResource("Animation_s2qnm")
|
||||
&"TookOff": SubResource("Animation_4i0sb")
|
||||
}
|
||||
|
||||
[node name="CockpitScene" type="Node3D" unique_id=550478796]
|
||||
@@ -193,17 +306,10 @@ surface_material_override/0 = SubResource("StandardMaterial3D_frapn")
|
||||
|
||||
[node name="Ship" parent="." unique_id=1963368148 instance=ExtResource("4_3h3cv")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 193.97134, 0)
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=1973506100]
|
||||
transform = Transform3D(0.88172376, -0.122102074, 0.45569107, -0.47176614, -0.22820692, 0.8516797, 0, -0.9659259, -0.25881907, 0.03206873, 20.67343, -1.7533616)
|
||||
light_color = Color(0.6287269, 0.4718002, 0.27988377, 1)
|
||||
light_energy = 1.815
|
||||
shadow_enabled = true
|
||||
directional_shadow_mode = 1
|
||||
directional_shadow_split_1 = 0.039
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 198.103, 0)
|
||||
|
||||
[node name="Planet3d" parent="." unique_id=1178444123 instance=ExtResource("9_agxn2")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(0.9999998, 0, 0, 0, 0.9999999, 0, 0, 0, 1, 0, 0, 0)
|
||||
radius = 150.0
|
||||
details = 100
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
extends Node3D
|
||||
|
||||
const POST_TUTORIAL_DIALOG_PATH = "res://dialogs/timelines/story/demeter_post_tutorial.dtl"
|
||||
const FAILED_DIALOG = "res://dialogs/timelines/tutorial/demeter_ship_failed.dtl"
|
||||
|
||||
const TAKE_OFF_ICON = preload("res://common/icons/chevrons-up.svg")
|
||||
const LAND_ICON = preload("res://common/icons/arrow-narrow-down.svg")
|
||||
@@ -12,6 +12,7 @@ signal land
|
||||
@onready var dashboard : Dashboard = %Dashboard
|
||||
var choosen_run_point : RunPoint = null
|
||||
var exiting = false
|
||||
var phone_dialogs : Array[String]
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
@@ -33,46 +34,72 @@ func _ready():
|
||||
%Exit.clicked.connect(_on_exit_clicked)
|
||||
%Exit.interactable = can_exit()
|
||||
|
||||
if not GameInfo.game_data.ship_tutorial_done:
|
||||
if not GameInfo.game_data.progression_data.ship_tutorial_done:
|
||||
await get_tree().create_timer(1).timeout
|
||||
await show_tutorial()
|
||||
|
||||
if GameInfo.game_data.game_mode == GameData.GameMode.STORY:
|
||||
handle_dialogs()
|
||||
update_dialogs()
|
||||
|
||||
func show_tutorial():
|
||||
AudioManager.play_sfx("Ship_reveal")
|
||||
AudioManager.play_sfx("Reveal")
|
||||
%ShipTutorial.appear()
|
||||
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
||||
%Player3D.controlling_player=false
|
||||
await %ShipTutorial.disappeared
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
%Player3D.controlling_player=true
|
||||
GameInfo.game_data.ship_tutorial_done = true
|
||||
GameInfo.game_data.progression_data.ship_tutorial_done = true
|
||||
|
||||
func handle_dialogs():
|
||||
if not POST_TUTORIAL_DIALOG_PATH in GameInfo.game_data.dialogs_done:
|
||||
await get_tree().create_timer(5).timeout
|
||||
await ring_phone(POST_TUTORIAL_DIALOG_PATH)
|
||||
func update_dialogs():
|
||||
if GameInfo.game_data and GameInfo.game_data.current_run:
|
||||
var run_data = GameInfo.game_data.current_run
|
||||
var region_data = GameInfo.game_data.current_region_data
|
||||
|
||||
func ring_phone(dialog_path : String):
|
||||
if (
|
||||
region_data
|
||||
and region_data.state != RegionData.State.SUCCEEDED
|
||||
and region_data.charges == 0
|
||||
and not FAILED_DIALOG in GameInfo.game_data.dialogs_done
|
||||
and not FAILED_DIALOG in phone_dialogs
|
||||
):
|
||||
phone_dialogs.append(FAILED_DIALOG)
|
||||
|
||||
var story_dialog = run_data.story_step.get_ship_dialog_path(run_data.level, GameInfo.game_data.ship_in_space)
|
||||
if (
|
||||
story_dialog
|
||||
and not story_dialog in GameInfo.game_data.dialogs_done
|
||||
and not story_dialog in phone_dialogs
|
||||
):
|
||||
phone_dialogs.append(story_dialog)
|
||||
|
||||
|
||||
if len(phone_dialogs):
|
||||
ring_phone()
|
||||
|
||||
|
||||
func ring_phone():
|
||||
%Phone.interactable = true
|
||||
%Phone.play_audio()
|
||||
await %Phone.clicked
|
||||
|
||||
func _on_phone_clicked():
|
||||
%Phone.stop_audio()
|
||||
%Phone.interactable = false
|
||||
Dialogic.start(dialog_path)
|
||||
await Dialogic.timeline_ended
|
||||
if len(phone_dialogs):
|
||||
Dialogic.start(phone_dialogs.pop_front())
|
||||
await Dialogic.timeline_ended
|
||||
if (len(phone_dialogs)):
|
||||
await get_tree().create_timer(2.).timeout
|
||||
ring_phone()
|
||||
|
||||
func move_to_choosen_run_point():
|
||||
GameInfo.game_data.current_run.choose_next_run_point(choosen_run_point)
|
||||
%Gauge3D.progress = 0.
|
||||
|
||||
func can_exit() -> bool:
|
||||
return (
|
||||
not GameInfo.game_data.ship_in_space
|
||||
and GameInfo.game_data.current_region_data != null
|
||||
and not "tutorial" in GameInfo.game_data.current_region_data.flags
|
||||
and not GameInfo.game_data.current_run.story_step is TutorialStoryStep
|
||||
)
|
||||
|
||||
func _on_main_screen_activated():
|
||||
@@ -81,12 +108,22 @@ func _on_main_screen_activated():
|
||||
move_to_choosen_run_point()
|
||||
land.emit()
|
||||
GameInfo.game_data.ship_in_space = false
|
||||
%PlantInfoScreen.update_plant_info()
|
||||
get_tree().create_timer(randf_range(0,3)).timeout.connect(
|
||||
func(): update_dialogs()
|
||||
)
|
||||
else :
|
||||
take_off.emit()
|
||||
GameInfo.game_data.ship_in_space = true
|
||||
if GameInfo.game_data.current_run == null:
|
||||
GameInfo.game_data.start_run()
|
||||
GameInfo.game_data.player_data.energy = GameInfo.game_data.player_data.max_energy
|
||||
|
||||
var gauge_tween = get_tree().create_tween()
|
||||
gauge_tween.tween_property(%Gauge3D,"progress",0,3.)
|
||||
get_tree().create_timer(randf_range(0,3)).timeout.connect(
|
||||
func(): update_dialogs()
|
||||
)
|
||||
%Exit.interactable = can_exit()
|
||||
update_dashboard()
|
||||
|
||||
@@ -106,26 +143,24 @@ func _on_exit_clicked():
|
||||
if (can_exit() and not exiting):
|
||||
AudioManager.play_sfx("Ship_exit")
|
||||
exiting = true
|
||||
SceneManager.change_to_scene_id('REGION')
|
||||
SceneManager.change_to_scene(RegionScene.new(GameInfo.game_data.current_region_data))
|
||||
|
||||
func update_dashboard():
|
||||
|
||||
var current_region_data = GameInfo.game_data.current_region_data
|
||||
|
||||
if GameInfo.game_data.game_mode == GameData.GameMode.STORY:
|
||||
if current_region_data and not "tutorial" in current_region_data.flags:
|
||||
dashboard.destination_distance = RunData.RUN_POINT_MAX_LEVEL * 1000 - current_region_data.region_level * 1000
|
||||
else :
|
||||
dashboard.destination_distance = (RunData.RUN_POINT_MAX_LEVEL + 1) * 1000
|
||||
dashboard.destination_title = "TO_BOREA_BASE"
|
||||
elif GameInfo.game_data.game_mode == GameData.GameMode.INFINITE:
|
||||
dashboard.destination_distance = 0 if current_region_data == null else current_region_data.region_level * 1000
|
||||
dashboard.destination_title = "TRAVELED_DISTANCE"
|
||||
|
||||
var current_run = GameInfo.game_data.current_run
|
||||
|
||||
if current_run.is_finished():
|
||||
dashboard.destination_distance = 0
|
||||
else:
|
||||
dashboard.destination_distance = (
|
||||
current_run.get_progress() * 1000
|
||||
)
|
||||
dashboard.destination_title = current_run.story_step.get_destination_text()
|
||||
|
||||
var can_take_off : bool = (
|
||||
current_region_data != null
|
||||
not current_run.is_finished()
|
||||
and current_region_data
|
||||
and current_region_data.state == RegionData.State.SUCCEEDED
|
||||
and current_run
|
||||
and len(current_run.next_run_points) != 0
|
||||
@@ -133,16 +168,14 @@ func update_dashboard():
|
||||
)
|
||||
|
||||
if GameInfo.game_data.ship_in_space:
|
||||
dashboard.main_screen_icon = LAND_ICON
|
||||
dashboard.main_screen_text = tr("LAND_SHIP")
|
||||
dashboard.main_screen_interactable = choosen_run_point != null
|
||||
|
||||
if choosen_run_point:
|
||||
dashboard.main_screen_state = DashboardMainScreen.State.READY_TO_LAND
|
||||
dashboard.stop_title = tr("NEXT_STOP")
|
||||
dashboard.stop_name = choosen_run_point.region_parameter.region_name
|
||||
dashboard.status_text = ""
|
||||
else:
|
||||
dashboard.stop_title = tr("LOCATION")
|
||||
dashboard.main_screen_state = DashboardMainScreen.State.WAITING_CHOICE
|
||||
dashboard.stop_title = ""
|
||||
dashboard.stop_name = tr("ORBIT")
|
||||
dashboard.status_text = tr("CHOOSE_NEXT_STOP")
|
||||
dashboard.stop_name = ""
|
||||
@@ -159,9 +192,13 @@ func update_dashboard():
|
||||
else:
|
||||
dashboard.right_stop = null
|
||||
else :
|
||||
dashboard.main_screen_icon = TAKE_OFF_ICON
|
||||
dashboard.main_screen_text = tr("TAKE_OFF")
|
||||
dashboard.main_screen_interactable = can_take_off
|
||||
if can_take_off:
|
||||
dashboard.main_screen_state = DashboardMainScreen.State.READY_TO_TAKE_OFF
|
||||
else:
|
||||
dashboard.main_screen_run_point = current_run.current_run_point
|
||||
dashboard.main_screen_state = DashboardMainScreen.State.LANDED
|
||||
dashboard.status_text = "DESTINATION_REACHED" if current_run.is_finished() else tr("NO_MORE_ENERGY")
|
||||
|
||||
|
||||
dashboard.left_stop = null
|
||||
dashboard.right_stop = null
|
||||
@@ -170,4 +207,8 @@ func update_dashboard():
|
||||
dashboard.stop_title = tr("LOCATION")
|
||||
dashboard.stop_name = current_region_data.region_name
|
||||
|
||||
dashboard.status_text = "" if can_take_off else tr("NO_MORE_ENERGY")
|
||||
|
||||
|
||||
func _on_orchid_saver_clicked():
|
||||
GameInfo.game_data.give_up()
|
||||
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
extends Node3D
|
||||
class_name CockpitScene
|
||||
|
||||
func _ready():
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
if GameInfo.game_data.ship_in_space:
|
||||
%TakeOffAnimationPlayer.play("TookOff")
|
||||
|
||||
if GameInfo.game_data:
|
||||
%Planet3d.fertility_factor = (
|
||||
max(0,float(GameInfo.game_data.progression_data.story_step_i - 1))
|
||||
/ len(
|
||||
GameInfo.game_data.progression_data.get_all_story_steps()
|
||||
) - 1
|
||||
)
|
||||
|
||||
%Ship.take_off.connect(_on_ship_take_off)
|
||||
%Ship.land.connect(_on_ship_land)
|
||||
|
||||
@@ -32,9 +40,9 @@ func _on_ship_take_off():
|
||||
AudioManager.play_sfx("Decollage")
|
||||
|
||||
func _on_ship_land():
|
||||
%TakeOffAnimationPlayer.play_backwards("TakeOff")
|
||||
%TakeOffAnimationPlayer.play("Land")
|
||||
AudioManager.play_sfx("Atterrissage")
|
||||
|
||||
func _on_exit_action_clicked():
|
||||
if GameInfo.game_data.current_region_data != null:
|
||||
SceneManager.change_to_scene_id("REGION")
|
||||
SceneManager.change_to_scene(RegionScene.new(GameInfo.game_data.current_region_data))
|
||||
|
||||
@@ -17,6 +17,7 @@ func _ready():
|
||||
|
||||
func appear():
|
||||
%AnimationPlayer.play("appear")
|
||||
Pointer.action_disabled = true
|
||||
|
||||
func _process(delta):
|
||||
update_rotation(delta)
|
||||
@@ -52,3 +53,7 @@ func update_rotation(delta):
|
||||
func _on_ok_button_button_down():
|
||||
%AnimationPlayer.play_backwards("appear")
|
||||
disappeared.emit()
|
||||
get_tree().create_timer(0.2).timeout.connect( # Put a delay to not interfere with the ok button click
|
||||
func():
|
||||
Pointer.action_disabled = false
|
||||
)
|
||||
|
||||
BIN
stages/3d_scenes/relay_base/assets/3d/3dOrchid.blend1
Normal file
BIN
stages/3d_scenes/relay_base/assets/3d/3dOrchid.blend1
Normal file
Binary file not shown.
BIN
stages/3d_scenes/relay_base/assets/3d/3d_orchid.blend1
Normal file
BIN
stages/3d_scenes/relay_base/assets/3d/3d_orchid.blend1
Normal file
Binary file not shown.
BIN
stages/3d_scenes/relay_base/assets/3d/relay_base.blend
Normal file
BIN
stages/3d_scenes/relay_base/assets/3d/relay_base.blend
Normal file
Binary file not shown.
@@ -0,0 +1,68 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://c7pw57hcv6jvr"
|
||||
path="res://.godot/imported/relay_base.blend-305cbcaada458d114f393793b5a362db.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://stages/3d_scenes/relay_base/assets/3d/relay_base.blend"
|
||||
dest_files=["res://.godot/imported/relay_base.blend-305cbcaada458d114f393793b5a362db.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/root_script=null
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_name_suffixes=true
|
||||
nodes/use_node_type_suffixes=true
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
meshes/force_disable_compression=false
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={
|
||||
"materials": {
|
||||
"Material": {
|
||||
"use_external/enabled": true,
|
||||
"use_external/fallback_path": "res://common/assets/materials/default_3d.tres",
|
||||
"use_external/path": "uid://dvvi1k5c5iowc"
|
||||
}
|
||||
}
|
||||
}
|
||||
blender/nodes/visible=0
|
||||
blender/nodes/active_collection_only=false
|
||||
blender/nodes/punctual_lights=true
|
||||
blender/nodes/cameras=true
|
||||
blender/nodes/custom_properties=true
|
||||
blender/nodes/modifiers=1
|
||||
blender/meshes/colors=false
|
||||
blender/meshes/uvs=true
|
||||
blender/meshes/normals=true
|
||||
blender/meshes/export_geometry_nodes_instances=false
|
||||
blender/meshes/gpu_instances=false
|
||||
blender/meshes/tangents=true
|
||||
blender/meshes/skins=2
|
||||
blender/meshes/export_bones_deforming_mesh_only=false
|
||||
blender/materials/unpack_enabled=true
|
||||
blender/materials/export_materials=1
|
||||
blender/animation/limit_playback=true
|
||||
blender/animation/always_sample=true
|
||||
blender/animation/group_tracks=true
|
||||
gltf/naming_version=2
|
||||
BIN
stages/3d_scenes/relay_base/assets/3d/relay_base.blend1
Normal file
BIN
stages/3d_scenes/relay_base/assets/3d/relay_base.blend1
Normal file
Binary file not shown.
263
stages/3d_scenes/relay_base/relay_base.tscn
Normal file
263
stages/3d_scenes/relay_base/relay_base.tscn
Normal file
@@ -0,0 +1,263 @@
|
||||
[gd_scene format=3 uid="uid://4bp7ushk8ic1"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dkeuwqo7xdlab" path="res://stages/3d_scenes/relay_base/scripts/relay_base.gd" id="1_6cyeg"]
|
||||
[ext_resource type="Texture2D" uid="uid://cww35xu1yqivp" path="res://stages/3d_scenes/cockpit_scene/assets/textures/sky.png" id="1_ckj7g"]
|
||||
[ext_resource type="PackedScene" uid="uid://c7pw57hcv6jvr" path="res://stages/3d_scenes/relay_base/assets/3d/relay_base.blend" id="1_dm7op"]
|
||||
[ext_resource type="PackedScene" uid="uid://da7a74dg30q1l" path="res://entities/player_3d/player_3D.tscn" id="2_6cyeg"]
|
||||
[ext_resource type="Script" uid="uid://bj4d1x8n8ina" path="res://entities/interactable_3d/interactable_3d.gd" id="3_xuy43"]
|
||||
[ext_resource type="Texture2D" uid="uid://dex283rx00fjb" path="res://common/icons/logout.svg" id="4_140ad"]
|
||||
[ext_resource type="PackedScene" uid="uid://c2bk3n1xo1fto" path="res://stages/3d_scenes/astra_base/incubator.tscn" id="5_uxagy"]
|
||||
[ext_resource type="PackedScene" uid="uid://u3o5g8lmck74" path="res://entities/interactable_3d/orchid_saver/orchid_saver.tscn" id="6_2vcx4"]
|
||||
[ext_resource type="Texture2D" uid="uid://d3k7rl7nbp7yx" path="res://common/icons/device-floppy.svg" id="7_erosk"]
|
||||
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="8_erosk"]
|
||||
|
||||
[sub_resource type="Environment" id="Environment_uxagy"]
|
||||
sky_custom_fov = 61.7
|
||||
reflected_light_source = 2
|
||||
tonemap_mode = 2
|
||||
tonemap_exposure = 0.7
|
||||
tonemap_white = 1.84
|
||||
glow_enabled = true
|
||||
glow_intensity = 0.22
|
||||
glow_bloom = 0.22
|
||||
glow_hdr_threshold = 0.79
|
||||
glow_hdr_scale = 0.0
|
||||
glow_hdr_luminance_cap = 5.63
|
||||
fog_mode = 1
|
||||
fog_light_color = Color(0.13725491, 0.39215687, 0.6666667, 1)
|
||||
fog_density = 0.1831
|
||||
fog_sky_affect = 0.0
|
||||
volumetric_fog_sky_affect = 0.0
|
||||
adjustment_enabled = true
|
||||
adjustment_saturation = 1.3
|
||||
|
||||
[sub_resource type="SphereMesh" id="SphereMesh_ypkjt"]
|
||||
flip_faces = true
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2vcx4"]
|
||||
shading_mode = 0
|
||||
albedo_color = Color(0.5882353, 0.7019608, 0.85882354, 1)
|
||||
albedo_texture = ExtResource("1_ckj7g")
|
||||
|
||||
[sub_resource type="Animation" id="Animation_pxmsf"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Sprite3D:scale")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0.99999994, 1, 0.99999994)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_u7lr8"]
|
||||
resource_name = "hover"
|
||||
loop_mode = 1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Sprite3D:scale")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.46666667, 1),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0.99999994, 1, 0.99999994), Vector3(1.2, 1.2, 1.2), Vector3(0.99999994, 1, 0.99999994)]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_1hq1b"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_pxmsf"),
|
||||
&"hover": SubResource("Animation_u7lr8")
|
||||
}
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_clhvw"]
|
||||
size = Vector3(2.2807465, 0.83758545, 2.7016602)
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_vk5gh"]
|
||||
font = ExtResource("8_erosk")
|
||||
font_size = 36
|
||||
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_vk5gh"]
|
||||
viewport_path = NodePath("BaseNameSubViewport")
|
||||
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_erosk"]
|
||||
viewport_path = NodePath("BaseNumberSubViewport")
|
||||
|
||||
[node name="RelayBase" type="Node3D" unique_id=992183226]
|
||||
script = ExtResource("1_6cyeg")
|
||||
base_name = "Mercury"
|
||||
base_number = "001"
|
||||
|
||||
[node name="Sun" type="DirectionalLight3D" parent="." unique_id=817205050]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(0.47539747, 0.8797709, -0.0008190346, 0.081792034, -0.043270595, 0.99570966, 0.8759608, -0.4734249, -0.09252897, 14.5135975, 59.967155, 0.5521965)
|
||||
light_energy = 16.0
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=261530481]
|
||||
environment = SubResource("Environment_uxagy")
|
||||
|
||||
[node name="DaySky" type="MeshInstance3D" parent="WorldEnvironment" unique_id=1197428301]
|
||||
transform = Transform3D(1000, 0, 0, 0, 1000, 0, 0, 0, 1000, 0.00041627884, 0.019779027, -0.019804716)
|
||||
mesh = SubResource("SphereMesh_ypkjt")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_2vcx4")
|
||||
|
||||
[node name="Exit" type="Area3D" parent="." unique_id=553593986 node_paths=PackedStringArray("hover_animation_player")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(4.366728e-08, -0.99899095, 0.044909704, -1, -4.371139e-08, 0, 1.963069e-09, -0.044909704, -0.99899095, -0.15007031, 1.2682863, 0.032186985)
|
||||
script = ExtResource("3_xuy43")
|
||||
hover_animation_player = NodePath("HoverAnimationPlayer")
|
||||
metadata/_custom_type_script = "uid://bj4d1x8n8ina"
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="Exit" unique_id=736012003]
|
||||
transform = Transform3D(-4.3711385e-08, -1, -4.3711385e-08, 0, -4.371139e-08, 0.99999994, -0.99999994, 4.371139e-08, 1.9106853e-15, 0.1646713, -0.017980576, 0)
|
||||
pixel_size = 0.005
|
||||
texture = ExtResource("4_140ad")
|
||||
|
||||
[node name="HoverAnimationPlayer" type="AnimationPlayer" parent="Exit" unique_id=131585105]
|
||||
libraries/ = SubResource("AnimationLibrary_1hq1b")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Exit" unique_id=1652331659]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.14810944, -0.081207275, 0.35961914)
|
||||
shape = SubResource("BoxShape3D_clhvw")
|
||||
|
||||
[node name="Player3D" parent="." unique_id=549819967 instance=ExtResource("2_6cyeg")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-0.044909663, 0, -0.99899095, 0, 1, 0, 0.99899095, 0, -0.044909663, 0.78073347, 1.1698408, 0)
|
||||
speed = 5.0
|
||||
|
||||
[node name="Model" parent="." unique_id=865699676 instance=ExtResource("1_dm7op")]
|
||||
|
||||
[node name="OmniLight3D" type="OmniLight3D" parent="." unique_id=505969815]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.941148, 0.43394446, 0.16130233)
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 7.245
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.08
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="OmniLight3D2" type="OmniLight3D" parent="." unique_id=329038032]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.346289, 0.43394446, 0.16130233)
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 7.245
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.08
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="Incubators" type="Node3D" parent="." unique_id=1990164318]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.532284, 0, 0)
|
||||
|
||||
[node name="Incubator" parent="Incubators" unique_id=1488068427 instance=ExtResource("5_uxagy")]
|
||||
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 5, 0, 0)
|
||||
|
||||
[node name="Incubator2" parent="Incubators" unique_id=1350320582 instance=ExtResource("5_uxagy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 5)
|
||||
|
||||
[node name="Incubator4" parent="Incubators" unique_id=1245176074 instance=ExtResource("5_uxagy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 0, 0, -5)
|
||||
|
||||
[node name="Incubator5" parent="Incubators" unique_id=902267532 instance=ExtResource("5_uxagy")]
|
||||
transform = Transform3D(0.49999997, 0, 0.8660254, 0, 1, 0, -0.8660254, 0, 0.49999997, 4.3301277, 0, 2.5)
|
||||
|
||||
[node name="Incubator6" parent="Incubators" unique_id=1124375246 instance=ExtResource("5_uxagy")]
|
||||
transform = Transform3D(0.8660254, 0, -0.5, 0, 1, 0, 0.5, 0, 0.8660254, -2.5, 0, 4.330127)
|
||||
|
||||
[node name="Incubator7" parent="Incubators" unique_id=1684945958 instance=ExtResource("5_uxagy")]
|
||||
transform = Transform3D(-0.50000006, 0, -0.8660254, 0, 1, 0, 0.8660254, 0, -0.50000006, -4.330127, 0, -2.5)
|
||||
|
||||
[node name="Incubator8" parent="Incubators" unique_id=1614069614 instance=ExtResource("5_uxagy")]
|
||||
transform = Transform3D(-0.86602545, 0, 0.4999999, 0, 1, 0, -0.4999999, 0, -0.86602545, 2.5, 0, -4.330127)
|
||||
|
||||
[node name="Incubator9" parent="Incubators" unique_id=63224815 instance=ExtResource("5_uxagy")]
|
||||
transform = Transform3D(0.8660254, 0, 0.50000006, 0, 1, 0, -0.50000006, 0, 0.8660254, 2.5, 0, 4.330127)
|
||||
|
||||
[node name="Incubator10" parent="Incubators" unique_id=1415684558 instance=ExtResource("5_uxagy")]
|
||||
transform = Transform3D(0.5, 0, -0.8660254, 0, 1, 0, 0.8660254, 0, 0.5, -4.330127, 0, 2.5)
|
||||
|
||||
[node name="Incubator11" parent="Incubators" unique_id=229064256 instance=ExtResource("5_uxagy")]
|
||||
transform = Transform3D(-0.8660254, 0, -0.49999997, 0, 1, 0, 0.49999997, 0, -0.8660254, -2.5, 0, -4.330127)
|
||||
|
||||
[node name="Incubator12" parent="Incubators" unique_id=1303445453 instance=ExtResource("5_uxagy")]
|
||||
transform = Transform3D(-0.50000006, 0, 0.8660253, 0, 1, 0, -0.8660253, 0, -0.50000006, 4.3301277, 0, -2.5)
|
||||
|
||||
[node name="OrchidSaver" parent="." unique_id=381308711 instance=ExtResource("6_2vcx4")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 4.9759607, 0.131, 0.05400467)
|
||||
screen_icon = ExtResource("7_erosk")
|
||||
screen_text = "DOWNLOAD_ORCHID_DATA_TO_LOCAL_SERVERS"
|
||||
|
||||
[node name="BaseNumberSubViewport" type="SubViewport" parent="." unique_id=1612608943]
|
||||
disable_3d = true
|
||||
transparent_bg = true
|
||||
size = Vector2i(150, 50)
|
||||
|
||||
[node name="BaseNumberLabel" type="Label" parent="BaseNumberSubViewport" unique_id=1551857685]
|
||||
unique_name_in_owner = true
|
||||
modulate = Color(1, 0.6509804, 0.09019608, 1)
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
text = "001"
|
||||
label_settings = SubResource("LabelSettings_vk5gh")
|
||||
horizontal_alignment = 2
|
||||
vertical_alignment = 1
|
||||
autowrap_mode = 3
|
||||
|
||||
[node name="BaseNameSubViewport" type="SubViewport" parent="." unique_id=194154638]
|
||||
disable_3d = true
|
||||
transparent_bg = true
|
||||
size = Vector2i(350, 50)
|
||||
|
||||
[node name="BaseNameLabel" type="Label" parent="BaseNameSubViewport" unique_id=27065726]
|
||||
unique_name_in_owner = true
|
||||
modulate = Color(1, 0.6509804, 0.09019608, 1)
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
text = "Mercury"
|
||||
label_settings = SubResource("LabelSettings_vk5gh")
|
||||
vertical_alignment = 1
|
||||
autowrap_mode = 3
|
||||
|
||||
[node name="BaseNameFront" type="Sprite3D" parent="." unique_id=1771645294]
|
||||
transform = Transform3D(-0.570427, 0, -0.82134837, 0, 1, 0, 0.82134837, 0, -0.570427, 7.496, 1.9, 2.181)
|
||||
pixel_size = 0.005
|
||||
shaded = true
|
||||
double_sided = false
|
||||
texture = SubResource("ViewportTexture_vk5gh")
|
||||
|
||||
[node name="BaseNumberFront" type="Sprite3D" parent="." unique_id=1308171461]
|
||||
transform = Transform3D(0.6104354, 0, -0.79206604, 0, 1, 0, 0.79206604, 0, 0.6104354, 7.81909, 1.9, -1.6990184)
|
||||
pixel_size = 0.005
|
||||
shaded = true
|
||||
double_sided = false
|
||||
texture = SubResource("ViewportTexture_erosk")
|
||||
|
||||
[node name="BaseNameBack" type="Sprite3D" parent="." unique_id=1023260980]
|
||||
transform = Transform3D(0.36741042, 0, 0.9300589, 0, 1, 0, -0.9300589, 0, 0.36741042, 10.193348, 1.9, -2.1791058)
|
||||
pixel_size = 0.005
|
||||
shaded = true
|
||||
double_sided = false
|
||||
texture = SubResource("ViewportTexture_vk5gh")
|
||||
|
||||
[node name="BaseNumberBack" type="Sprite3D" parent="." unique_id=1854456199]
|
||||
transform = Transform3D(-0.31677487, 0, 0.9485008, 0, 1, 0, -0.9485008, 0, -0.31677487, 9.994016, 1.9, 1.7119241)
|
||||
pixel_size = 0.005
|
||||
shaded = true
|
||||
double_sided = false
|
||||
texture = SubResource("ViewportTexture_erosk")
|
||||
|
||||
[connection signal="clicked" from="Exit" to="." method="_on_exit_clicked"]
|
||||
[connection signal="clicked" from="OrchidSaver" to="." method="_on_orchid_saver_clicked"]
|
||||
51
stages/3d_scenes/relay_base/scripts/relay_base.gd
Normal file
51
stages/3d_scenes/relay_base/scripts/relay_base.gd
Normal file
@@ -0,0 +1,51 @@
|
||||
@tool
|
||||
extends Node3D
|
||||
class_name RelayBase
|
||||
|
||||
signal orchid_saved
|
||||
|
||||
@export var base_name : String = "" : set = set_base_name
|
||||
@export var base_number : String = "" : set = set_base_number
|
||||
@onready var orchid_saver : OrchidSaver = %OrchidSaver
|
||||
@onready var player : Player3D = %Player3D
|
||||
var exit_scene : Scene = null
|
||||
var dead_orchid : Node3D
|
||||
|
||||
|
||||
func _ready():
|
||||
if not Engine.is_editor_hint():
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
|
||||
set_base_name()
|
||||
set_base_number()
|
||||
|
||||
func set_base_name(bn := base_name):
|
||||
base_name = bn
|
||||
if is_node_ready():
|
||||
%BaseNameLabel.text = base_name
|
||||
|
||||
func set_base_number(bn := base_number):
|
||||
base_number = bn
|
||||
if is_node_ready():
|
||||
%BaseNumberLabel.text = base_number
|
||||
%Sun.rotation.y = hash(base_number) % 360
|
||||
|
||||
func get_incubators() -> Array[Incubator]:
|
||||
var incubators = [] as Array[Incubator]
|
||||
|
||||
for c in %Incubators.get_children():
|
||||
if c is Incubator:
|
||||
incubators.append(c)
|
||||
|
||||
return incubators
|
||||
|
||||
func _on_exit_clicked():
|
||||
if dead_orchid:
|
||||
GameInfo.game_data.dead_orchid_position = dead_orchid.position
|
||||
GameInfo.game_data.dead_orchid_rotation = dead_orchid.rotation
|
||||
|
||||
if exit_scene:
|
||||
SceneManager.change_to_scene(exit_scene)
|
||||
|
||||
func _on_orchid_saver_clicked():
|
||||
orchid_saved.emit()
|
||||
1
stages/3d_scenes/relay_base/scripts/relay_base.gd.uid
Normal file
1
stages/3d_scenes/relay_base/scripts/relay_base.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dkeuwqo7xdlab
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,6 +1,6 @@
|
||||
extends Node3D
|
||||
|
||||
const DIALOG_PATH = "res://dialogs/timelines/story/demeter_ship_presentation.dtl"
|
||||
const DIALOG_PATH = "res://dialogs/timelines/tutorial/demeter_ship_presentation.dtl"
|
||||
|
||||
var jingle_played := false
|
||||
|
||||
@@ -13,7 +13,7 @@ func _input(_e):
|
||||
and Input.is_action_just_pressed("action")
|
||||
):
|
||||
GameInfo.game_data.dialogs_done.append(DIALOG_PATH)
|
||||
SceneManager.change_to_scene_id("COCKPIT")
|
||||
finish_scene()
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
@@ -24,8 +24,12 @@ func _ready():
|
||||
%Phone.stop_audio()
|
||||
Dialogic.start(DIALOG_PATH)
|
||||
await Dialogic.timeline_ended
|
||||
SceneManager.change_to_scene_id("COCKPIT")
|
||||
finish_scene()
|
||||
|
||||
func finish_scene():
|
||||
GameInfo.game_data.finish_story_step()
|
||||
GameInfo.game_data.start_run()
|
||||
SceneManager.change_to_scene(CockpitScene.new())
|
||||
|
||||
func _on_jingle_area_body_entered(body: Node3D):
|
||||
if body is Player3D and not jingle_played:
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
[ext_resource type="PackedScene" uid="uid://bmkmhycmvtjfl" path="res://stages/3d_scenes/ship_garage/assets/3d/ship_garage.blend" id="4_g14ji"]
|
||||
[ext_resource type="PackedScene" uid="uid://blvetnnib2ks0" path="res://stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend" id="5_43lym"]
|
||||
[ext_resource type="PackedScene" uid="uid://csx7d5khjd6y5" path="res://entities/interactable_3d/phone/phone.tscn" id="7_dkh4e"]
|
||||
[ext_resource type="Material" uid="uid://cr7bp4fhh1ipr" path="res://entities/player_3d/resources/materials/post_process_quad.tres" id="7_ovhgo"]
|
||||
|
||||
[sub_resource type="Environment" id="Environment_ovhgo"]
|
||||
background_mode = 2
|
||||
@@ -44,6 +45,46 @@ albedo_texture = ExtResource("2_yl6nj")
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_dkh4e"]
|
||||
size = Vector3(20.170532, 9.8758545, 1)
|
||||
|
||||
[sub_resource type="QuadMesh" id="QuadMesh_jwd5g"]
|
||||
size = Vector2(2, 2)
|
||||
|
||||
[sub_resource type="Animation" id="Animation_lkqnn"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("%TrailerCamera/..:rotation")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_v4tdl"]
|
||||
resource_name = "trailer"
|
||||
length = 20.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("%TrailerCamera/..:rotation")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 19.933332),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector3(0, 0, 0), Vector3(0, 3.1415927, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_vwv06"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_lkqnn"),
|
||||
&"trailer": SubResource("Animation_v4tdl")
|
||||
}
|
||||
|
||||
[node name="ShipGarage" type="Node3D" unique_id=707746738]
|
||||
script = ExtResource("1_43lym")
|
||||
|
||||
@@ -51,6 +92,8 @@ script = ExtResource("1_43lym")
|
||||
transform = Transform3D(1, 0, 0, 0, 0.25881907, 0.9659258, 0, -0.9659258, 0.25881907, 30.708645, 59.967155, 32.405155)
|
||||
light_energy = 16.0
|
||||
shadow_enabled = true
|
||||
shadow_bias = 0.025
|
||||
shadow_blur = 8.0
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1067763548]
|
||||
environment = SubResource("Environment_ovhgo")
|
||||
@@ -65,7 +108,7 @@ unique_name_in_owner = true
|
||||
transform = Transform3D(0.70710677, 0, 0.70710677, 0, 1, 0, -0.70710677, 0, 0.70710677, 31.365097, -1.8906436, 31.188667)
|
||||
speed = 5.0
|
||||
|
||||
[node name="ship_garage" parent="." unique_id=1531736402 instance=ExtResource("4_g14ji")]
|
||||
[node name="ship_garage" parent="." unique_id=616114798 instance=ExtResource("4_g14ji")]
|
||||
|
||||
[node name="ContourLight" type="Node3D" parent="ship_garage" unique_id=550025035]
|
||||
|
||||
@@ -74,6 +117,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.591785, 0.35355997, 8.740
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 7.245
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="OmniLight3D11" type="OmniLight3D" parent="ship_garage/ContourLight" unique_id=2048991137]
|
||||
@@ -81,6 +125,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.7106285, 0.35355997, 16.91
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 7.245
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="OmniLight3D12" type="OmniLight3D" parent="ship_garage/ContourLight" unique_id=65773175]
|
||||
@@ -88,6 +133,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.056013, 0.35355997, 13.63
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 7.245
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="ContourLight2" type="Node3D" parent="ship_garage" unique_id=1796913469]
|
||||
@@ -98,6 +144,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.591785, 0.35355997, 8.740
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 7.245
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="OmniLight3D11" type="OmniLight3D" parent="ship_garage/ContourLight2" unique_id=670102541]
|
||||
@@ -105,6 +152,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.7106285, 0.35355997, 16.91
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 7.245
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="OmniLight3D12" type="OmniLight3D" parent="ship_garage/ContourLight2" unique_id=1890812582]
|
||||
@@ -112,6 +160,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.056013, 0.35355997, 13.63
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 7.245
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="ContourLight3" type="Node3D" parent="ship_garage" unique_id=1350477936]
|
||||
@@ -122,6 +171,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.591785, 0.35355997, 8.740
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 7.245
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="OmniLight3D11" type="OmniLight3D" parent="ship_garage/ContourLight3" unique_id=1267181375]
|
||||
@@ -129,6 +179,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.7106285, 0.35355997, 16.91
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 7.245
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="OmniLight3D12" type="OmniLight3D" parent="ship_garage/ContourLight3" unique_id=1105689331]
|
||||
@@ -136,6 +187,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.056013, 0.35355997, 13.63
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 7.245
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="ContourLight4" type="Node3D" parent="ship_garage" unique_id=1659332102]
|
||||
@@ -146,6 +198,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.591785, 0.35355997, 8.740
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 7.245
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="OmniLight3D11" type="OmniLight3D" parent="ship_garage/ContourLight4" unique_id=683595114]
|
||||
@@ -153,6 +206,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.7106285, 0.35355997, 16.91
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 7.245
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="OmniLight3D12" type="OmniLight3D" parent="ship_garage/ContourLight4" unique_id=919630929]
|
||||
@@ -160,6 +214,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.056013, 0.35355997, 13.63
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 7.245
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="OmniLight3D" type="OmniLight3D" parent="ship_garage" unique_id=1914600869]
|
||||
@@ -167,6 +222,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.37195766, 0.5465579, -0.44
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 7.245
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="OmniLight3D2" type="OmniLight3D" parent="ship_garage" unique_id=1994007446]
|
||||
@@ -174,6 +230,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 18.143, 40)
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 12.857
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="OmniLight3D3" type="OmniLight3D" parent="ship_garage" unique_id=97805521]
|
||||
@@ -181,6 +238,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 18.143, -40)
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 12.857
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="OmniLight3D4" type="OmniLight3D" parent="ship_garage" unique_id=1702169236]
|
||||
@@ -188,6 +246,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 40, 18.143, 0)
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 12.857
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="OmniLight3D5" type="OmniLight3D" parent="ship_garage" unique_id=1091097365]
|
||||
@@ -195,6 +254,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -40, 18.143, 0)
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 12.857
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="OmniLight3D6" type="OmniLight3D" parent="ship_garage" unique_id=1135571571]
|
||||
@@ -202,6 +262,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 18.143, 20)
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 12.857
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="OmniLight3D7" type="OmniLight3D" parent="ship_garage" unique_id=433280269]
|
||||
@@ -209,6 +270,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 18.143, -20)
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 12.857
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="OmniLight3D8" type="OmniLight3D" parent="ship_garage" unique_id=1957453089]
|
||||
@@ -216,6 +278,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20, 18.143, 20)
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 12.857
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="OmniLight3D9" type="OmniLight3D" parent="ship_garage" unique_id=1673023896]
|
||||
@@ -223,10 +286,30 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20, 18.143, -20)
|
||||
light_color = Color(0.8780363, 0.49553913, 0.4937222, 1)
|
||||
light_energy = 12.857
|
||||
shadow_enabled = true
|
||||
shadow_blur = 8.0
|
||||
omni_range = 21.258795
|
||||
|
||||
[node name="cockpit2" parent="." unique_id=825141342 instance=ExtResource("5_43lym")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.37195766, 2.8968668, -0.44411802)
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.37195766, 5.651189, -0.44411802)
|
||||
|
||||
[node name="Skeleton3D" parent="cockpit2/Armature" parent_id_path=PackedInt32Array(825141342, 368440226) index="0" unique_id=1318180746]
|
||||
bones/0/rotation = Quaternion(-0.40661332, 0.5616425, 0.6145974, 0.37615627)
|
||||
bones/1/rotation = Quaternion(0.07885064, -0.1681597, -0.7000427, 0.6895253)
|
||||
bones/2/rotation = Quaternion(0.4066133, 0.56164247, 0.61459726, -0.37615627)
|
||||
bones/3/rotation = Quaternion(0.078850605, 0.16815974, 0.7000427, 0.6895253)
|
||||
|
||||
[node name="WinkEnd_R" parent="cockpit2/Armature/Skeleton3D" index="0" unique_id=1435098475]
|
||||
transform = Transform3D(0.91645914, -0.396169, -0.0561504, 0.20627528, 0.34753403, 0.914697, -0.34286055, -0.8498649, 0.40022057, -11.399944, -1.0682703, 4.7686367)
|
||||
|
||||
[node name="Wing_R" parent="cockpit2/Armature/Skeleton3D" index="1" unique_id=891044283]
|
||||
transform = Transform3D(-0.3863442, -0.9191118, -0.07727623, 0.0056266785, -0.08612847, 0.99626815, -0.9223375, 0.3844677, 0.038446784, 0, 0, 0)
|
||||
|
||||
[node name="WinkEnd_L" parent="cockpit2/Armature/Skeleton3D" index="2" unique_id=908817672]
|
||||
transform = Transform3D(0.9164591, 0.39616904, 0.056150444, -0.20627525, 0.34753394, 0.914697, 0.34286034, -0.8498648, 0.40022054, 11.399945, -1.0682689, 4.768635)
|
||||
|
||||
[node name="Wing_L" parent="cockpit2/Armature/Skeleton3D" index="3" unique_id=74621525]
|
||||
transform = Transform3D(-0.3863442, 0.91911185, 0.07727614, -0.0056266487, -0.086128354, 0.9962681, 0.92233753, 0.38446754, 0.038446724, 0, 0, 0)
|
||||
|
||||
[node name="Phone" parent="." unique_id=429299908 instance=ExtResource("7_dkh4e")]
|
||||
unique_name_in_owner = true
|
||||
@@ -239,4 +322,22 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22.818235, 0, 22.5019)
|
||||
transform = Transform3D(0.70710677, 0, 0.70710677, 0, 1, 0, -0.70710677, 0, 0.70710677, 0.009346008, 4.4379272, 0.18450356)
|
||||
shape = SubResource("BoxShape3D_dkh4e")
|
||||
|
||||
[node name="Node3D" type="Node3D" parent="." unique_id=7625722]
|
||||
|
||||
[node name="TrailerCamera" type="Camera3D" parent="Node3D" unique_id=1952510574]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 0.9659259, -0.25881907, 0, 0.25881907, 0.9659258, 0, 3, 17)
|
||||
near = 0.003
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D/TrailerCamera" unique_id=1691754690]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.263265e-08, 0, -0.7177747)
|
||||
mesh = SubResource("QuadMesh_jwd5g")
|
||||
surface_material_override/0 = ExtResource("7_ovhgo")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="Node3D/TrailerCamera" unique_id=1852528578]
|
||||
libraries/ = SubResource("AnimationLibrary_vwv06")
|
||||
autoplay = &"trailer"
|
||||
|
||||
[connection signal="body_entered" from="JingleArea" to="." method="_on_jingle_area_body_entered"]
|
||||
|
||||
[editable path="cockpit2"]
|
||||
|
||||
@@ -39,6 +39,11 @@ materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={
|
||||
"materials": {
|
||||
"Glass": {
|
||||
"use_external/enabled": true,
|
||||
"use_external/fallback_path": "res://common/assets/materials/glass_3d.tres",
|
||||
"use_external/path": "uid://b5vlcdry8vtgi"
|
||||
},
|
||||
"Material": {
|
||||
"use_external/enabled": true,
|
||||
"use_external/fallback_path": "res://common/assets/materials/default_3d.tres",
|
||||
|
||||
@@ -9,6 +9,8 @@ const FALLING_OBJECT_LINE_SHIFT = Vector3.FORWARD * 0.3
|
||||
enum State {CHOOSE,PAY,FETCH,DONE, OFF}
|
||||
enum ChooseState {NONE,FIRST,SECOND}
|
||||
|
||||
signal used
|
||||
|
||||
@export_tool_button("Update", "Callable") var update_action = update
|
||||
|
||||
@export_tool_button("Fall Object 1", "Callable") var fall_object_1_action = fall_object_1
|
||||
@@ -196,11 +198,12 @@ func _on_fetch_interactable_clicked():
|
||||
AudioManager.play_sfx("PickUp")
|
||||
clear_falling_objects()
|
||||
if GameInfo.game_data and GameInfo.game_data.current_region_data and GameInfo.game_data.current_run:
|
||||
GameInfo.game_data.current_region_data.completed_doors.append(GameInfo.game_data.current_region_data.entered_door)
|
||||
GameInfo.game_data.current_run.add_artefacts(get_choosen_artefact().duplicate())
|
||||
|
||||
state = State.DONE
|
||||
|
||||
used.emit()
|
||||
|
||||
get_tree().create_timer(3.).timeout.connect(
|
||||
func ():
|
||||
state = State.OFF
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
extends Node3D
|
||||
class_name VendingMachineRoom
|
||||
|
||||
func _ready():
|
||||
func setup_room(door_id : int):
|
||||
var rng := RandomNumberGenerator.new()
|
||||
rng.seed = GameInfo.game_data.current_region_data.entered_door.hash()
|
||||
rng.seed = door_id
|
||||
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
|
||||
@@ -23,6 +24,10 @@ func _ready():
|
||||
vending_machine.artefact_2 = artefacts[1]
|
||||
vending_machine.price = VendingMachineEnergyPrice.new(2)
|
||||
vending_machine.state = VendingMachine3d.State.CHOOSE
|
||||
vending_machine.used.connect(
|
||||
func ():
|
||||
GameInfo.game_data.current_region_data.completed_doors.append(door_id)
|
||||
)
|
||||
|
||||
func _on_exit_clicked():
|
||||
SceneManager.change_to_scene_id('REGION')
|
||||
SceneManager.change_to_scene(RegionScene.new(GameInfo.game_data.current_region_data))
|
||||
|
||||
@@ -100,7 +100,7 @@ height = 0.8841553
|
||||
script = ExtResource("1_awnyh")
|
||||
price = SubResource("Resource_vrdoi")
|
||||
|
||||
[node name="Model" parent="." unique_id=1993368617 instance=ExtResource("1_28vvr")]
|
||||
[node name="Model" parent="." unique_id=1183033196 instance=ExtResource("1_28vvr")]
|
||||
|
||||
[node name="Line1" type="Node3D" parent="." unique_id=1631780989]
|
||||
unique_name_in_owner = true
|
||||
@@ -314,7 +314,6 @@ libraries/ = SubResource("AnimationLibrary_40f8c")
|
||||
[node name="Light" type="OmniLight3D" parent="." unique_id=23464893]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.089285016, 0.9888365, -0.40412843)
|
||||
light_energy = 2.313
|
||||
shadow_enabled = true
|
||||
omni_range = 2.5571291
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ unique_name_in_owner = true
|
||||
transform = Transform3D(0, 0, -0.99999994, 0, 1, 0, 0.99999994, 0, 0, 4.944984, 1.2635367, 24.252193)
|
||||
speed = 5.0
|
||||
|
||||
[node name="vending_machine_room" parent="." unique_id=1777370304 instance=ExtResource("5_1x1k5")]
|
||||
[node name="Model" parent="." unique_id=1777370304 instance=ExtResource("5_1x1k5")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.009907, 0, 24.24866)
|
||||
|
||||
[node name="OmniLight3D" type="OmniLight3D" parent="." unique_id=1122387138]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
extends Node
|
||||
class_name Intro
|
||||
|
||||
const WAKE_UP_DIALOG = preload("res://dialogs/timelines/story/wake_up.dtl")
|
||||
const WAKE_UP_DIALOG = "res://dialogs/timelines/tutorial/wake_up.dtl"
|
||||
|
||||
var steps : Array[IntroStep]
|
||||
@export_file var game_scene_path : String
|
||||
@@ -27,4 +27,6 @@ func _ready():
|
||||
|
||||
func pass_intro():
|
||||
Dialogic.end_timeline()
|
||||
SceneManager.change_to_scene_id('ASTRA')
|
||||
SceneManager.change_to_scene(
|
||||
GameInfo.game_data.progression_data.get_story_step().get_respawn_scene()
|
||||
)
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
[gd_scene format=3 uid="uid://gxbqe5rtqi58"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://j8cd0qbk4bma" path="res://stages/region_selection/region_point/scripts/region_point.gd" id="1_65ijn"]
|
||||
[ext_resource type="Script" uid="uid://b4eimt3v08jhc" path="res://common/game_data/scripts/run/run_point.gd" id="2_34ylp"]
|
||||
[ext_resource type="Script" uid="uid://ccb06rayqowp3" path="res://stages/terrain/region/scripts/modifiers/region_modifier.gd" id="2_lr77n"]
|
||||
[ext_resource type="Script" uid="uid://ddk7j5b8p51dk" path="res://stages/terrain/region/scripts/region_parameter.gd" id="3_dm7jk"]
|
||||
[ext_resource type="Texture2D" uid="uid://dqsx56wc73wry" path="res://common/icons/map-pin-check.svg" id="4_ndccb"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_8kf6p"]
|
||||
script = ExtResource("3_dm7jk")
|
||||
region_name = "Obaj"
|
||||
region_seed = 3836569679
|
||||
|
||||
[sub_resource type="Resource" id="Resource_txxa3"]
|
||||
script = ExtResource("2_34ylp")
|
||||
level = 1
|
||||
region_parameter = SubResource("Resource_8kf6p")
|
||||
position = 61.0
|
||||
metadata/_custom_type_script = "uid://b4eimt3v08jhc"
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_ys0ma"]
|
||||
radius = 1.0629065
|
||||
|
||||
[node name="RegionPoint" type="Area3D" unique_id=1680498278]
|
||||
script = ExtResource("1_65ijn")
|
||||
run_point = SubResource("Resource_txxa3")
|
||||
state = 0
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=791907494]
|
||||
shape = SubResource("SphereShape3D_ys0ma")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="." unique_id=567852602]
|
||||
unique_name_in_owner = true
|
||||
modulate = Color(1, 1, 1, 0.5)
|
||||
pixel_size = 0.04
|
||||
billboard = 1
|
||||
texture = ExtResource("4_ndccb")
|
||||
@@ -1,56 +0,0 @@
|
||||
@tool
|
||||
extends Area3D
|
||||
class_name RegionPoint
|
||||
|
||||
enum State {VISITED, CURRENT, TO_VISIT}
|
||||
|
||||
const SPRITE_HOVER_SCALE_MULTIPLIER = 1.5
|
||||
const VISITED_OPACITY = 0.5
|
||||
const YELLOW_COLOR = Color("FFA617")
|
||||
|
||||
const VISITED_SPRITE = preload("res://common/icons/map-pin-check.svg")
|
||||
const CURRENT_SPRITE = preload("res://common/icons/map-pin.svg")
|
||||
const TO_VISIT_SPRITE = preload("res://common/icons/map-pin-empty.svg")
|
||||
|
||||
@export var run_point : RunPoint
|
||||
@export var state : State = State.CURRENT :
|
||||
set(v):
|
||||
state = v
|
||||
if is_node_ready():
|
||||
update_state()
|
||||
|
||||
var hovered := false
|
||||
|
||||
func _ready():
|
||||
update_state()
|
||||
|
||||
func _process(_delta):
|
||||
var scale_multiplier = SPRITE_HOVER_SCALE_MULTIPLIER if hovered else 1.
|
||||
%Sprite3D.scale = lerp(%Sprite3D.scale, Vector3.ONE * scale_multiplier, 0.1)
|
||||
|
||||
func _on_mouse_entered():
|
||||
hovered = true
|
||||
Pointer.inspect(self)
|
||||
|
||||
func _on_mouse_exited():
|
||||
hovered = false
|
||||
Pointer.stop_inspect(self)
|
||||
|
||||
func card_info() -> CardInfo:
|
||||
return run_point.card_info()
|
||||
|
||||
func update_state():
|
||||
var texture = VISITED_SPRITE
|
||||
var color = Color(1.,1.,1.,VISITED_OPACITY)
|
||||
|
||||
if state == State.CURRENT:
|
||||
texture = CURRENT_SPRITE
|
||||
color = Color.WHITE
|
||||
|
||||
elif state == State.TO_VISIT:
|
||||
texture = TO_VISIT_SPRITE
|
||||
color = YELLOW_COLOR
|
||||
|
||||
%Sprite3D.texture = texture
|
||||
%Sprite3D.modulate = color
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
uid://j8cd0qbk4bma
|
||||
@@ -1,146 +0,0 @@
|
||||
[gd_scene format=3 uid="uid://bjs67nvh61otf"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://cm5b7w7j6527f" path="res://stages/title_screen/planet_3d.tscn" id="5_bi8m0"]
|
||||
[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="5_twywe"]
|
||||
[ext_resource type="Script" uid="uid://dqj1qh7xcmnhc" path="res://stages/region_selection/scripts/region_selection_camera.gd" id="6_gcxbq"]
|
||||
[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="6_gqvix"]
|
||||
[ext_resource type="Shader" uid="uid://bv2rghn44mrrf" path="res://stages/title_screen/resources/shaders/stars.gdshader" id="7_2ywd4"]
|
||||
[ext_resource type="PackedScene" uid="uid://rxao2rluuwqq" path="res://gui/game/screen/screen.tscn" id="7_gqvix"]
|
||||
[ext_resource type="Script" uid="uid://bmb4beevw5r40" path="res://stages/region_selection/scripts/region_selection.gd" id="8_jxqjc"]
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_gqvix"]
|
||||
frequency = 1.0
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ee13y"]
|
||||
shader = ExtResource("7_2ywd4")
|
||||
shader_parameter/sky_color = Color(0.03, 0.05, 0.11, 1)
|
||||
shader_parameter/star_base_color = Color(0.8, 1, 0.3, 1)
|
||||
shader_parameter/star_hue_offset = 0.6
|
||||
shader_parameter/star_intensity = 0.08
|
||||
shader_parameter/star_twinkle_speed = 0.8
|
||||
shader_parameter/star_twinkle_intensity = 0.2
|
||||
shader_parameter/layer_scale = 20.0
|
||||
shader_parameter/layer_scale_step = 10.0
|
||||
shader_parameter/layers_count = 3
|
||||
|
||||
[sub_resource type="Sky" id="Sky_65b6a"]
|
||||
sky_material = SubResource("ShaderMaterial_ee13y")
|
||||
|
||||
[sub_resource type="Environment" id="Environment_187ay"]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_65b6a")
|
||||
sky_custom_fov = 61.7
|
||||
reflected_light_source = 1
|
||||
tonemap_exposure = 1.54
|
||||
glow_enabled = true
|
||||
glow_intensity = 1.22
|
||||
glow_bloom = 0.39
|
||||
glow_hdr_threshold = 0.81
|
||||
glow_hdr_scale = 0.0
|
||||
glow_hdr_luminance_cap = 0.3
|
||||
fog_density = 0.0
|
||||
fog_sky_affect = 0.0
|
||||
adjustment_enabled = true
|
||||
adjustment_brightness = 1.04
|
||||
adjustment_contrast = 1.2
|
||||
adjustment_saturation = 0.88
|
||||
|
||||
[node name="RegionSelectionScreen" type="Node3D" unique_id=1689785704]
|
||||
script = ExtResource("8_jxqjc")
|
||||
|
||||
[node name="Planet3d" parent="." unique_id=1061481452 instance=ExtResource("5_bi8m0")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(0.17364822, 0, -0.9848077, 0, 1, 0, 0.9848077, 0, 0.17364822, 0.0020446777, 0, 0)
|
||||
noise = SubResource("FastNoiseLite_gqvix")
|
||||
|
||||
[node name="RegionPointContainer" type="Node3D" parent="Planet3d" unique_id=235517820]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="." unique_id=778670888]
|
||||
transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 0, 0, -79.21178)
|
||||
current = true
|
||||
fov = 34.0
|
||||
script = ExtResource("6_gcxbq")
|
||||
_sprite_layer = 1
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=421604487]
|
||||
environment = SubResource("Environment_187ay")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=1857207701]
|
||||
transform = Transform3D(0.8423772, -0.34588623, 0.4132353, -0.5388884, -0.5406809, 0.6459594, 0, -0.76682913, -0.6418513, 0, 14.918039, 0)
|
||||
|
||||
[node name="Hud" type="CanvasLayer" parent="." unique_id=1116972494]
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="Hud" unique_id=1379729006]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme = ExtResource("5_twywe")
|
||||
|
||||
[node name="Label" type="Label" parent="Hud/MarginContainer" unique_id=57986359]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
size_flags_vertical = 0
|
||||
text = "CHOOSE_A_REGION"
|
||||
label_settings = ExtResource("6_gqvix")
|
||||
|
||||
[node name="ReturnButton" type="Button" parent="Hud/MarginContainer" unique_id=475983266]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
theme = ExtResource("5_twywe")
|
||||
text = "RETURN"
|
||||
|
||||
[node name="TravelValidation" parent="Hud" unique_id=205669320 instance=ExtResource("7_gqvix")]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -359.0
|
||||
offset_top = -137.0
|
||||
offset_right = 359.0
|
||||
offset_bottom = 96.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
|
||||
[node name="TravelValidationContainer" type="VBoxContainer" parent="Hud/TravelValidation/ScreenContainer" index="0" unique_id=1135507235]
|
||||
layout_mode = 2
|
||||
theme = ExtResource("5_twywe")
|
||||
alignment = 1
|
||||
|
||||
[node name="TravelValidationLabel" type="Label" parent="Hud/TravelValidation/ScreenContainer/TravelValidationContainer" unique_id=1203605320]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "TRAVEL_TO_REGION_%s"
|
||||
label_settings = ExtResource("6_gqvix")
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="TravelValidationButtons" type="HBoxContainer" parent="Hud/TravelValidation/ScreenContainer/TravelValidationContainer" unique_id=560440640]
|
||||
layout_mode = 2
|
||||
theme = ExtResource("5_twywe")
|
||||
alignment = 1
|
||||
|
||||
[node name="TravelValidationGoButton" type="Button" parent="Hud/TravelValidation/ScreenContainer/TravelValidationContainer/TravelValidationButtons" unique_id=338629922]
|
||||
layout_mode = 2
|
||||
theme = ExtResource("5_twywe")
|
||||
text = "GO"
|
||||
|
||||
[node name="TravelValidationNoNowButton" type="Button" parent="Hud/TravelValidation/ScreenContainer/TravelValidationContainer/TravelValidationButtons" unique_id=61219289]
|
||||
layout_mode = 2
|
||||
theme = ExtResource("5_twywe")
|
||||
text = "NOT_NOW"
|
||||
|
||||
[connection signal="region_point_clicked" from="Camera3D" to="." method="_on_camera_3d_region_point_clicked"]
|
||||
[connection signal="button_down" from="Hud/MarginContainer/ReturnButton" to="." method="_on_return_button_button_down"]
|
||||
[connection signal="button_down" from="Hud/TravelValidation/ScreenContainer/TravelValidationContainer/TravelValidationButtons/TravelValidationGoButton" to="." method="_on_travel_validation_go_button_button_down"]
|
||||
[connection signal="button_down" from="Hud/TravelValidation/ScreenContainer/TravelValidationContainer/TravelValidationButtons/TravelValidationNoNowButton" to="." method="_on_travel_validation_no_now_button_button_down"]
|
||||
|
||||
[editable path="Hud/TravelValidation"]
|
||||
@@ -1,123 +0,0 @@
|
||||
@tool
|
||||
extends Node3D
|
||||
class_name RegionSelection
|
||||
|
||||
const REGION_POINT_SCENE := preload("res://stages/region_selection/region_point/region_point.tscn")
|
||||
const PLANET_REGION_POINT_MARGIN = 0
|
||||
|
||||
var target_planet_rotation = Vector2(0,0)
|
||||
var planet_acceleration := Vector2(0,0)
|
||||
var rotating := false
|
||||
var prev_mouse_pos : Vector2
|
||||
var next_mouse_pos : Vector2
|
||||
|
||||
var selected_run_point : RunPoint
|
||||
|
||||
@export_tool_button("Update Region Points", "Callable") var update_action = update_region_points
|
||||
|
||||
var run_data : RunData
|
||||
|
||||
@onready var planet_radius = %Planet3d.radius + %Planet3d.height
|
||||
|
||||
func _ready():
|
||||
var region_data = GameInfo.game_data.current_region_data
|
||||
if (
|
||||
not GameInfo.game_data.current_run
|
||||
or (region_data and region_data.get_state() == RegionData.State.FAILED)
|
||||
or GameInfo.game_data.current_run.get_state() == RunData.State.FINISHED
|
||||
):
|
||||
GameInfo.game_data.start_run()
|
||||
|
||||
run_data = GameInfo.game_data.current_run
|
||||
|
||||
%TravelValidation.hide()
|
||||
update_region_points()
|
||||
if not GameInfo.game_data.current_region_data:
|
||||
%ReturnButton.hide()
|
||||
|
||||
func _process(delta):
|
||||
if not Engine.is_editor_hint():
|
||||
rotate_planet(delta)
|
||||
|
||||
func rotate_planet(delta):
|
||||
next_mouse_pos = get_viewport().get_mouse_position()
|
||||
if Input.is_action_just_pressed("action"):
|
||||
rotating = true
|
||||
prev_mouse_pos = get_viewport().get_mouse_position()
|
||||
if Input.is_action_just_released("action"):
|
||||
rotating = false
|
||||
var mouse_acceleration = Vector2(
|
||||
float(next_mouse_pos.x - prev_mouse_pos.x),
|
||||
float(next_mouse_pos.y - prev_mouse_pos.y)
|
||||
)
|
||||
planet_acceleration = Vector2(mouse_acceleration.y, - mouse_acceleration.x)
|
||||
|
||||
var planet_rotation = planet_acceleration
|
||||
|
||||
if rotating:
|
||||
var mouse_rotation = Vector2(
|
||||
float(next_mouse_pos.x - prev_mouse_pos.x),
|
||||
float(next_mouse_pos.y - prev_mouse_pos.y)
|
||||
)
|
||||
planet_rotation = Vector2(mouse_rotation.y, - mouse_rotation.x)
|
||||
prev_mouse_pos = next_mouse_pos
|
||||
else :
|
||||
# var default_planet_rotation = Vector2(%Planet3d.rotation.x, %Planet3d.rotation.y) - target_planet_rotation
|
||||
planet_acceleration = planet_acceleration.lerp(Vector2.ZERO, 0.1)
|
||||
# %Planet3d.rotation.z = lerp(%Planet3d.rotation.z, 0., 0.05)
|
||||
|
||||
%Planet3d.rotate(Vector3.LEFT, planet_rotation.x * delta)
|
||||
%Planet3d.rotate(Vector3.DOWN, planet_rotation.y * delta)
|
||||
|
||||
func generate_region_point(run_point : RunPoint, state : RegionPoint.State = RegionPoint.State.VISITED) -> RegionPoint:
|
||||
var region_point := REGION_POINT_SCENE.instantiate() as RegionPoint
|
||||
region_point.run_point = run_point
|
||||
region_point.state = state
|
||||
|
||||
%RegionPointContainer.add_child(region_point)
|
||||
|
||||
|
||||
var sphere_radius = planet_radius + PLANET_REGION_POINT_MARGIN
|
||||
var default_pos = Vector3(0, sphere_radius, 0)
|
||||
var vertical_pos = default_pos.rotated(Vector3.LEFT, run_point.level/float(RunData.RUN_POINT_MAX_LEVEL) * PI)
|
||||
var final_pos = vertical_pos.rotated(Vector3.UP, (run_point.position % 360)/float(360) * 2 * PI)
|
||||
region_point.position = final_pos
|
||||
|
||||
return region_point
|
||||
|
||||
func update_region_points():
|
||||
for c in %RegionPointContainer.get_children():
|
||||
c.queue_free()
|
||||
|
||||
if run_data.current_run_point:
|
||||
generate_region_point(run_data.current_run_point, RegionPoint.State.CURRENT)
|
||||
|
||||
target_planet_rotation = Vector2(
|
||||
0.,
|
||||
- run_data.current_run_point.position/float(360) * 2 * PI,
|
||||
)
|
||||
|
||||
%Planet3d.rotation = Vector3(target_planet_rotation.x, target_planet_rotation.y, 0.)
|
||||
|
||||
for visited_rp in run_data.visited_run_points:
|
||||
generate_region_point(visited_rp, RegionPoint.State.VISITED)
|
||||
|
||||
for to_visit_rp in run_data.next_run_points:
|
||||
generate_region_point(to_visit_rp, RegionPoint.State.TO_VISIT)
|
||||
|
||||
func _on_camera_3d_region_point_clicked(rp : RunPoint):
|
||||
selected_run_point = rp
|
||||
%TravelValidationLabel.text = tr("TRAVEL_TO_REGION_%s") % rp.region_parameter.region_name
|
||||
%TravelValidation.show()
|
||||
|
||||
func _on_travel_validation_go_button_button_down():
|
||||
if selected_run_point:
|
||||
GameInfo.game_data.current_run.choose_next_run_point(selected_run_point)
|
||||
SceneManager.change_to_scene_id("REGION")
|
||||
|
||||
func _on_travel_validation_no_now_button_button_down():
|
||||
%TravelValidation.hide()
|
||||
|
||||
func _on_return_button_button_down():
|
||||
if GameInfo.game_data.current_region_data:
|
||||
SceneManager.change_to_scene_id("COCKPIT")
|
||||
@@ -1 +0,0 @@
|
||||
uid://bmb4beevw5r40
|
||||
@@ -1,43 +0,0 @@
|
||||
extends Camera3D
|
||||
|
||||
signal region_point_clicked(rp : RunPoint)
|
||||
|
||||
const RAY_LENGTH = 1000.
|
||||
|
||||
@export_flags_3d_physics var _sprite_layer
|
||||
|
||||
var region_point_hovered : RegionPoint = null
|
||||
var _mouse_event : InputEventMouse
|
||||
var _query_mouse := false
|
||||
|
||||
func _unhandled_input(event):
|
||||
if event is InputEventMouse:
|
||||
_mouse_event = event
|
||||
_query_mouse = true
|
||||
if event.is_action_pressed("action") and region_point_hovered and region_point_hovered.state == RegionPoint.State.TO_VISIT:
|
||||
region_point_clicked.emit(region_point_hovered.run_point)
|
||||
|
||||
func _physics_process(_delta):
|
||||
if _query_mouse:
|
||||
update_mouse_hovered_region_points()
|
||||
_query_mouse = false
|
||||
|
||||
func update_mouse_hovered_region_points() -> void:
|
||||
|
||||
var space_state = get_world_3d().direct_space_state
|
||||
var from = project_ray_origin(_mouse_event.position)
|
||||
var to = from + project_ray_normal(_mouse_event.position) * RAY_LENGTH
|
||||
|
||||
var query = PhysicsRayQueryParameters3D.create(from, to, _sprite_layer)
|
||||
query.collide_with_areas = true
|
||||
var result = space_state.intersect_ray(query)
|
||||
|
||||
if result.is_empty():
|
||||
if region_point_hovered:
|
||||
region_point_hovered._on_mouse_exited()
|
||||
region_point_hovered = null
|
||||
elif result.collider is RegionPoint:
|
||||
if region_point_hovered and region_point_hovered != result.collider:
|
||||
region_point_hovered._on_mouse_exited()
|
||||
region_point_hovered = result.collider
|
||||
region_point_hovered._on_mouse_entered()
|
||||
@@ -1 +0,0 @@
|
||||
uid://dqj1qh7xcmnhc
|
||||
@@ -1,7 +1,6 @@
|
||||
[gd_scene format=3 uid="uid://tsi5j1uxppa4"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://d1mp5sguc0b6u" path="res://stages/terrain/region/scripts/region.gd" id="1_441sk"]
|
||||
[ext_resource type="PackedScene" uid="uid://dt6mptqg80dew" path="res://gui/game/tutorial/tutorial.tscn" id="2_2f6js"]
|
||||
[ext_resource type="Shader" uid="uid://cfj18vc04cgkg" path="res://common/vfx/materials/shaders/blur_vignette.gdshader" id="2_ktnx3"]
|
||||
[ext_resource type="PackedScene" uid="uid://yk78ubpu5ghq" path="res://gui/game/pass_day/pass_day.tscn" id="3_ktnx3"]
|
||||
[ext_resource type="Shader" uid="uid://btgk5l0a6ii44" path="res://common/vfx/materials/shaders/screen_fog.gdshader" id="3_qdnee"]
|
||||
@@ -9,14 +8,9 @@
|
||||
[ext_resource type="PackedScene" uid="uid://12nak7amd1uq" path="res://gui/game/game_gui.tscn" id="4_qdnee"]
|
||||
[ext_resource type="PackedScene" uid="uid://bgvbgeq46wee2" path="res://entities/player/player.tscn" id="5_ovqi1"]
|
||||
[ext_resource type="PackedScene" uid="uid://d324mlmgls4fs" path="res://entities/interactables/truck/recharge/truck_recharge.tscn" id="7_6d8m3"]
|
||||
[ext_resource type="PackedScene" uid="uid://b8m537op75gib" path="res://entities/interactables/door/door.tscn" id="8_2f6js"]
|
||||
[ext_resource type="PackedScene" uid="uid://dj7gp3crtg2yt" path="res://entities/camera/camera.tscn" id="8_fwgig"]
|
||||
[ext_resource type="PackedScene" uid="uid://fnv0qhkh40mv" path="res://gui/game/announce/announce.tscn" id="8_mlppq"]
|
||||
[ext_resource type="Texture2D" uid="uid://rdrhi3r11ey6" path="res://common/icons/square-rounded.svg" id="10_ktnx3"]
|
||||
[ext_resource type="Texture2D" uid="uid://b752eqq4cm7ve" path="res://common/icons/building-factory-2.svg" id="11_fwgig"]
|
||||
[ext_resource type="Texture2D" uid="uid://dg00xnpp6ixls" path="res://common/icons/server-2.svg" id="12_mlppq"]
|
||||
[ext_resource type="Texture2D" uid="uid://1ynlp05wj0hm" path="res://common/icons/rocket.svg" id="13_r4e5h"]
|
||||
[ext_resource type="Texture2D" uid="uid://bmersnaoira20" path="res://common/icons/building-store.svg" id="16_0e2h6"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_qdnee"]
|
||||
shader = ExtResource("2_ktnx3")
|
||||
@@ -117,17 +111,10 @@ camera = NodePath("../../Camera")
|
||||
|
||||
[node name="PassDay" parent="." unique_id=1144772570 instance=ExtResource("3_ktnx3")]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
|
||||
[node name="RegionGui" type="CanvasLayer" parent="." unique_id=2024485651]
|
||||
layer = 2
|
||||
|
||||
[node name="Tutorial" parent="RegionGui" unique_id=762436685 node_paths=PackedStringArray("player", "region", "game_gui") instance=ExtResource("2_2f6js")]
|
||||
unique_name_in_owner = true
|
||||
player = NodePath("../../Entities/Player")
|
||||
region = NodePath("../..")
|
||||
game_gui = NodePath("../../GameGui")
|
||||
|
||||
[node name="GameGui" parent="." unique_id=1970837239 instance=ExtResource("4_qdnee")]
|
||||
|
||||
[node name="Announce" parent="." unique_id=1659074958 instance=ExtResource("8_mlppq")]
|
||||
@@ -142,49 +129,6 @@ y_sort_enabled = true
|
||||
unique_name_in_owner = true
|
||||
position = Vector2(-405, -151)
|
||||
|
||||
[node name="AstraDoor" parent="Entities" unique_id=2053096538 instance=ExtResource("8_2f6js")]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
icon = ExtResource("11_fwgig")
|
||||
present = null
|
||||
default_info_title = "ASTRA_FACTORY"
|
||||
default_info_desc = "ASTRA_FACTORY_TEXT"
|
||||
|
||||
[node name="BoreaDoor" parent="Entities" unique_id=135926916 instance=ExtResource("8_2f6js")]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
position = Vector2(91, -177)
|
||||
to_scene_id = "BOREA"
|
||||
icon = ExtResource("12_mlppq")
|
||||
present = null
|
||||
default_interact_text = "ENTER"
|
||||
available = true
|
||||
default_info_title = "BOREA_BASE"
|
||||
default_info_desc = "BOREA_BASE_DESC_TEXT"
|
||||
|
||||
[node name="ShipGarageDoor" parent="Entities" unique_id=1073871193 instance=ExtResource("8_2f6js")]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
position = Vector2(91, -177)
|
||||
to_scene_id = "GARAGE"
|
||||
icon = ExtResource("13_r4e5h")
|
||||
present = null
|
||||
default_interact_text = "ENTER"
|
||||
default_info_title = "MYSTERIOUS_DOOR"
|
||||
default_info_desc = "MYSTERIOUS_DOOR_TEXT"
|
||||
|
||||
[node name="VendingMachineDoor" parent="Entities" unique_id=580707365 instance=ExtResource("8_2f6js")]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
position = Vector2(91, -177)
|
||||
to_scene_id = "VENDING_MACHINE_DOOR"
|
||||
icon = ExtResource("16_0e2h6")
|
||||
present = null
|
||||
default_interact_text = "ENTER"
|
||||
available = true
|
||||
default_info_title = "VENDING_MACHINES"
|
||||
default_info_desc = "MYSTERIOUS_DOOR_TEXT"
|
||||
|
||||
[node name="Camera" parent="." unique_id=1399042986 node_paths=PackedStringArray("following") instance=ExtResource("8_fwgig")]
|
||||
following = NodePath("../Entities/Player")
|
||||
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
extends RegionModifier
|
||||
class_name DestinationModifier
|
||||
|
||||
@export var destination_scene : Scene
|
||||
|
||||
func get_modifier_name() -> String:
|
||||
return tr("DESTINATION")
|
||||
|
||||
func get_description() -> String:
|
||||
return tr("INTERNODE_PROGRAMMED_DESTINATION")
|
||||
|
||||
func get_icon() -> Texture:
|
||||
return preload("res://common/icons/map-pin.svg")
|
||||
|
||||
func get_card_section_color() -> Color:
|
||||
return Color("25c147")
|
||||
|
||||
func disable_objective() -> bool:
|
||||
return true
|
||||
|
||||
func modify_region_name(_name : String) -> String:
|
||||
return destination_scene.get_scene_title()
|
||||
|
||||
func region_ready(region : Region) -> void:
|
||||
var door = generate_door(
|
||||
destination_scene.get_scene_title(),
|
||||
"",
|
||||
destination_scene
|
||||
)
|
||||
|
||||
door.available = true
|
||||
|
||||
region.add_entity(door)
|
||||
region.random_move_object(door,Region.DOORS_RANDOM_MOVEMENT)
|
||||
region.recharge_station.available = false
|
||||
region.recharge_station.visible = false
|
||||
@@ -0,0 +1 @@
|
||||
uid://dcdleyf4tgj27
|
||||
17
stages/terrain/region/scripts/modifiers/instable_modifier.gd
Normal file
17
stages/terrain/region/scripts/modifiers/instable_modifier.gd
Normal file
@@ -0,0 +1,17 @@
|
||||
extends RegionModifier
|
||||
class_name InstableModifier
|
||||
|
||||
func get_modifier_name() -> String:
|
||||
return tr("INSTABLE")
|
||||
|
||||
func get_description() -> String:
|
||||
return tr("INSTABLE_MODIFIER_DESC_TEXT")
|
||||
|
||||
func get_icon() -> Texture:
|
||||
return preload("res://common/icons/atom.svg")
|
||||
|
||||
func get_card_section_color() -> Color:
|
||||
return Color("25c147")
|
||||
|
||||
func modify_mutation_probability(plant_mutation_probability) -> float:
|
||||
return plant_mutation_probability * 1.5
|
||||
@@ -0,0 +1 @@
|
||||
uid://benwcbtijith7
|
||||
@@ -7,16 +7,13 @@ const DEFAULT_ICON = preload("res://common/icons/cloud.svg")
|
||||
|
||||
const DOOR_SCENE = preload("res://entities/interactables/door/door.tscn")
|
||||
|
||||
var level : int = 1
|
||||
var modifier_name : String : get = get_modifier_name
|
||||
var description : String : get = get_description
|
||||
var flags : Array[String] : get = get_flags
|
||||
@export var modifier_seed : int = 0
|
||||
|
||||
func _init(_level : int = 1):
|
||||
func _init():
|
||||
if modifier_seed == 0:
|
||||
modifier_seed = randi()
|
||||
level = _level
|
||||
|
||||
@abstract func get_modifier_name() -> String
|
||||
|
||||
@@ -28,14 +25,11 @@ func get_icon() -> Texture:
|
||||
func get_card_section_color() -> Color:
|
||||
return DEFAULT_MODIFIER_COLOR
|
||||
|
||||
func get_difficulty_score() -> float:
|
||||
return float(level)
|
||||
|
||||
func get_flags() -> Array[String]:
|
||||
return []
|
||||
|
||||
func region_ready(_region : Region) -> void:
|
||||
pass
|
||||
pass
|
||||
|
||||
func modify_region_name(name : String) -> String:
|
||||
return name
|
||||
|
||||
func modify_charge(charge : int) -> int:
|
||||
return charge
|
||||
@@ -76,6 +70,15 @@ func modify_plant_seed_random_loose(plant_seed_random_loose : int) -> int:
|
||||
func modify_plant_influence_radius(plant_influence_radius : float) -> float:
|
||||
return plant_influence_radius
|
||||
|
||||
func modify_mutation_probability(plant_mutation_probability) -> float:
|
||||
return plant_mutation_probability
|
||||
|
||||
func modify_mutation_max_number(plant_mutation_max_number) -> int:
|
||||
return plant_mutation_max_number
|
||||
|
||||
func disable_objective() -> bool:
|
||||
return false
|
||||
|
||||
func card_section() -> CardSectionInfo:
|
||||
var section := CardSectionInfo.new(
|
||||
get_modifier_name(),
|
||||
@@ -90,15 +93,14 @@ func card_section() -> CardSectionInfo:
|
||||
func generate_door(
|
||||
title : String,
|
||||
desc : String,
|
||||
scene_id : String,
|
||||
icon : Texture
|
||||
to_scene : Scene = null,
|
||||
) -> Door:
|
||||
var new_door = DOOR_SCENE.instantiate() as Door
|
||||
new_door.name = "Door%d" % modifier_seed
|
||||
new_door.to_scene_id = scene_id
|
||||
new_door.door_id = modifier_seed
|
||||
new_door.to_scene = to_scene
|
||||
new_door.default_info_title = title
|
||||
new_door.default_info_desc = desc
|
||||
new_door.icon = icon
|
||||
new_door.present = true
|
||||
|
||||
return new_door
|
||||
@@ -14,6 +14,7 @@ func get_card_section_color() -> Color:
|
||||
return Color("25c147")
|
||||
|
||||
func modify_seed_rarity_pool(seed_rarity_pool : Array[int]) -> Array[int]:
|
||||
for i in range(len(seed_rarity_pool)):
|
||||
seed_rarity_pool[i] += 1
|
||||
return seed_rarity_pool
|
||||
var rarity = seed_rarity_pool.duplicate_deep()
|
||||
for i in range(len(rarity)):
|
||||
rarity[i] += 1
|
||||
return rarity
|
||||
|
||||
14
stages/terrain/region/scripts/modifiers/storm_modifier.gd
Normal file
14
stages/terrain/region/scripts/modifiers/storm_modifier.gd
Normal file
@@ -0,0 +1,14 @@
|
||||
extends RegionModifier
|
||||
class_name StormModifier
|
||||
|
||||
func get_modifier_name() -> String:
|
||||
return tr("STORM")
|
||||
|
||||
func get_description() -> String:
|
||||
return tr("STORM_MODIFIER_DESC_TEXT")
|
||||
|
||||
func get_icon() -> Texture:
|
||||
return preload("res://common/icons/tornado.svg")
|
||||
|
||||
func modify_objective(objective : int) -> int:
|
||||
return roundi(objective * 2)
|
||||
@@ -0,0 +1 @@
|
||||
uid://cf4ljloq40v0p
|
||||
66
stages/terrain/region/scripts/modifiers/tutorial_modifier.gd
Normal file
66
stages/terrain/region/scripts/modifiers/tutorial_modifier.gd
Normal file
@@ -0,0 +1,66 @@
|
||||
extends RegionModifier
|
||||
class_name TutorialModifier
|
||||
|
||||
const TUTORIAL_SCENE_PATH = ("res://gui/game/tutorial/tutorial.tscn")
|
||||
|
||||
func get_modifier_name() -> String:
|
||||
return tr("TUTORIAL")
|
||||
|
||||
func get_description() -> String:
|
||||
return tr("")
|
||||
|
||||
func get_icon() -> Texture:
|
||||
return preload("res://common/icons/help-hexagon.svg")
|
||||
|
||||
func modify_charge(charge : int) -> int:
|
||||
return charge+10
|
||||
|
||||
func get_card_section_color() -> Color:
|
||||
return Color("25c147")
|
||||
|
||||
func modify_region_name(_name : String) -> String:
|
||||
return "ASTRA_BASE"
|
||||
|
||||
func region_ready(region : Region) -> void:
|
||||
generate_astra_door(region)
|
||||
var garage_door := generate_garage_door(region)
|
||||
var tutorial := generate_tutorial(region)
|
||||
tutorial.succeded.connect(
|
||||
func ():
|
||||
garage_door.available = true
|
||||
)
|
||||
|
||||
func generate_astra_door(region : Region) -> Door:
|
||||
var astra_door = generate_door(
|
||||
tr("ASTRA_FACTORY"),
|
||||
tr("ASTRA_FACTORY_TEXT"),
|
||||
AstraScene.new()
|
||||
)
|
||||
astra_door.available = false
|
||||
astra_door.name = "AstraDoor"
|
||||
|
||||
region.add_entity(astra_door)
|
||||
astra_door.global_position = region.data.player_spawn + Vector2.UP * 100
|
||||
return astra_door
|
||||
|
||||
func generate_garage_door(region : Region) -> Door:
|
||||
var garage_door = generate_door(
|
||||
tr("MYSTERIOUS_DOOR"),
|
||||
tr("MYSTERIOUS_DOOR_TEXT"),
|
||||
GarageScene.new()
|
||||
)
|
||||
garage_door.available = region.data.state == RegionData.State.SUCCEEDED
|
||||
garage_door.name = "GarageDoor"
|
||||
|
||||
region.add_entity(garage_door)
|
||||
region.random_move_object(garage_door,Region.SPAWN_OBJECT_RANDOM_MOVEMENT + 100)
|
||||
return garage_door
|
||||
|
||||
func generate_tutorial(region : Region) -> Tutorial:
|
||||
var tutorial := load(TUTORIAL_SCENE_PATH).instantiate() as Tutorial
|
||||
region.add_child(tutorial)
|
||||
tutorial.region = region
|
||||
tutorial.game_gui = region.find_child("GameGui")
|
||||
tutorial.player = region.entity_container.find_child("Player")
|
||||
return tutorial
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
uid://dbqf4v74j1le
|
||||
@@ -18,14 +18,10 @@ func get_card_section_color() -> Color:
|
||||
func region_ready(region) -> void:
|
||||
var new_vending_machine_door = generate_door(
|
||||
tr("VENDING_MACHINES"),
|
||||
tr("VENDING_MACHINES_DOOR_DESC_TEXT"),
|
||||
"VENDING_MACHINE_ROOM",
|
||||
VENDING_MACHINES_ICON
|
||||
tr("VENDING_MACHINES_DOOR_DESC_TEXT")
|
||||
)
|
||||
new_vending_machine_door.available = region.data.completed_doors.find(new_vending_machine_door.name) == -1
|
||||
new_vending_machine_door.to_scene = VendingMachineScene.new(new_vending_machine_door.door_id)
|
||||
new_vending_machine_door.available = region.data.completed_doors.find(new_vending_machine_door.door_id) == -1
|
||||
|
||||
region.add_entity(new_vending_machine_door)
|
||||
region.random_move_object(new_vending_machine_door,Region.DOORS_RANDOM_MOVEMENT)
|
||||
|
||||
func get_difficulty_score() -> float:
|
||||
return 0
|
||||
|
||||
@@ -34,6 +34,8 @@ var score_by_plant : Dictionary[PlantData, int] = {}
|
||||
var generated_chunks : Array[Chunk] = []
|
||||
var generation_semaphore : Semaphore
|
||||
|
||||
@onready var recharge_station : TruckRecharge = %RechargeStation
|
||||
|
||||
# Cheat Code
|
||||
func _input(_e):
|
||||
if (
|
||||
@@ -42,7 +44,6 @@ func _input(_e):
|
||||
and Input.is_action_pressed("move_left")
|
||||
and Input.is_action_just_pressed("action")
|
||||
):
|
||||
%Tutorial.finish_tutorial()
|
||||
data.succeded.emit()
|
||||
data.state = RegionData.State.SUCCEEDED
|
||||
data.update()
|
||||
@@ -70,20 +71,17 @@ func _ready():
|
||||
if e is Plant:
|
||||
data.add_plant_data(e.data, false)
|
||||
|
||||
%AstraDoor.global_position = data.player_spawn + Vector2.UP * 100
|
||||
player.global_position = data.player_position
|
||||
|
||||
setup_flagged_properties()
|
||||
|
||||
generate_near_chunks(player)
|
||||
|
||||
random_move_object(%RechargeStation, SPAWN_OBJECT_RANDOM_MOVEMENT)
|
||||
%RechargeStation.update()
|
||||
random_move_object(recharge_station, SPAWN_OBJECT_RANDOM_MOVEMENT)
|
||||
recharge_station.update()
|
||||
|
||||
for m in data.modifiers:
|
||||
m.region_ready(self)
|
||||
|
||||
if not "tutorial" in data.flags:
|
||||
if not GameInfo.game_data.current_run.story_step is TutorialStoryStep:
|
||||
GameInfo.game_data.player_data.inventory.add_item(Detector.new())
|
||||
GameInfo.game_data.player_data.inventory.add_item(Pickaxe.new())
|
||||
GameInfo.game_data.player_data.inventory.add_item(Fork.new())
|
||||
@@ -171,36 +169,21 @@ func random_move_object(
|
||||
rng.randf_range(-random_movement,random_movement)
|
||||
) + offset
|
||||
|
||||
dig_hole(object.position, 3)
|
||||
|
||||
func setup_flagged_properties():
|
||||
for i in range(len(data.flags)):
|
||||
var f = data.flags[i]
|
||||
match f:
|
||||
"tutorial":
|
||||
%AstraDoor.present = true
|
||||
%ShipGarageDoor.present = true
|
||||
random_move_object(%ShipGarageDoor,SPAWN_OBJECT_RANDOM_MOVEMENT)
|
||||
|
||||
%AstraDoor.available = false
|
||||
%ShipGarageDoor.available = data.state == RegionData.State.SUCCEEDED
|
||||
|
||||
%Tutorial.succeded.connect(
|
||||
func ():
|
||||
await get_tree().create_timer(1.).timeout
|
||||
%ShipGarageDoor.available = true
|
||||
)
|
||||
"borea":
|
||||
%BoreaDoor.present = true
|
||||
random_move_object(%BoreaDoor,SPAWN_OBJECT_RANDOM_MOVEMENT)
|
||||
|
||||
%RechargeStation.visible = false
|
||||
%RechargeStation.process_mode = Node.PROCESS_MODE_DISABLED
|
||||
dig_hole(object.position, 5)
|
||||
|
||||
func is_chunk_generated(coord : Vector2i):
|
||||
return generated_chunks.find_custom(
|
||||
func (c: Chunk) : return get_chunk_key(c.chunk_coord) == get_chunk_key(coord)
|
||||
) != -1
|
||||
|
||||
func finish_generation():
|
||||
var fall_anim = (
|
||||
not GameInfo.game_data.current_run.story_step is TutorialStoryStep
|
||||
and data.entered_door == ""
|
||||
)
|
||||
player.appear(fall_anim)
|
||||
data.entered_door = ""
|
||||
|
||||
#endregion
|
||||
|
||||
#region ------------------ Usage ------------------
|
||||
@@ -213,6 +196,11 @@ func plant(
|
||||
data.add_plant_data(new_plant_data)
|
||||
var new_plant = Plant.new(new_plant_data)
|
||||
add_entity(new_plant, plant_position)
|
||||
|
||||
for m in new_plant_data.mutations:
|
||||
if not m.get_mutation_id() in GameInfo.game_data.progression_data.planted_mutation_ids:
|
||||
GameInfo.game_data.progression_data.planted_mutation_ids.append(m.get_mutation_id())
|
||||
|
||||
return true
|
||||
|
||||
func pass_day():
|
||||
@@ -302,4 +290,7 @@ func decontaminate(tiles_coords : Array[Vector2i], save_tiles_diff := true):
|
||||
|
||||
chunk.decontamination_layer.place_decontamination(local_coord)
|
||||
|
||||
func finishing_region_animation():
|
||||
pass #TODO
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -19,7 +19,6 @@ const PLAYER_ROCK_HOLE_RADIUS = 5
|
||||
|
||||
@export var region_seed : int
|
||||
@export var region_name : String
|
||||
@export var region_level : int = 0
|
||||
|
||||
@export var rock_threshold : float
|
||||
@export var decontamination_threshold : float
|
||||
@@ -29,7 +28,6 @@ const PLAYER_ROCK_HOLE_RADIUS = 5
|
||||
|
||||
@export var day : int = 1
|
||||
@export var entities_saved_data : Array[EntityData] = []
|
||||
@export var flags : Array[String] = []
|
||||
@export var plants : Array[PlantData]
|
||||
|
||||
@export var state : State = State.IN_PROGRESS
|
||||
@@ -39,7 +37,7 @@ const PLAYER_ROCK_HOLE_RADIUS = 5
|
||||
@export var player_spawn : Vector2
|
||||
|
||||
@export var entered_door = ""
|
||||
@export var completed_doors : Array[String] = [] # List of completed doors
|
||||
@export var completed_doors : Array[int] = [] # List of completed doors
|
||||
@export var modifiers : Array[RegionModifier]
|
||||
|
||||
|
||||
@@ -53,6 +51,7 @@ const PLAYER_ROCK_HOLE_RADIUS = 5
|
||||
objective = v
|
||||
if GameInfo:
|
||||
update()
|
||||
@export var objective_disabled : bool
|
||||
|
||||
@export var rock_tiles_data : TilesDiffData
|
||||
@export var decontamination_tiles_data : TilesDiffData
|
||||
@@ -65,33 +64,35 @@ func _init(
|
||||
charges = parameter.get_charge()
|
||||
objective = parameter.get_objective()
|
||||
region_name = parameter.get_region_name()
|
||||
region_level = parameter.get_region_level()
|
||||
region_seed = parameter.get_region_seed()
|
||||
rock_threshold = parameter.get_rock_threshold()
|
||||
decontamination_threshold = parameter.get_decontamination_threshold()
|
||||
cristal_threshold = parameter.get_cristal_threshold()
|
||||
start_decontamination_hole_radius = parameter.get_start_decontamination_zone_radius()
|
||||
flags = parameter.get_region_flags()
|
||||
seed_rarity_pool = parameter.get_seed_rarity_pool()
|
||||
modifiers = parameter.modifiers
|
||||
|
||||
player_spawn = get_random_spawn_position()
|
||||
player_position = player_spawn
|
||||
|
||||
objective_disabled = parameter.is_objective_disabled()
|
||||
|
||||
rock_tiles_data = TilesDiffData.new()
|
||||
decontamination_tiles_data = TilesDiffData.new()
|
||||
|
||||
edit_map_origin()
|
||||
|
||||
func update():
|
||||
if objective > 0 and get_score() >= objective and not "tutorial" in flags:
|
||||
if state != State.SUCCEEDED:
|
||||
succeded.emit()
|
||||
state = State.SUCCEEDED
|
||||
if state != State.SUCCEEDED and charges == 0:
|
||||
if state != State.FAILED:
|
||||
failed.emit()
|
||||
state = State.FAILED
|
||||
updated.emit(self)
|
||||
if not in_passing_day_animation and not objective_disabled:
|
||||
if objective > 0 and get_score() >= objective and not GameInfo.game_data.current_run.story_step is TutorialStoryStep:
|
||||
if state != State.SUCCEEDED:
|
||||
succeded.emit()
|
||||
state = State.SUCCEEDED
|
||||
if state != State.SUCCEEDED and charges == 0:
|
||||
if state != State.FAILED:
|
||||
failed.emit()
|
||||
state = State.FAILED
|
||||
updated.emit(self)
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -122,6 +123,7 @@ func proceed_pass_day():
|
||||
func end_pass_day():
|
||||
pass_day_ended.emit(self)
|
||||
in_passing_day_animation = false
|
||||
update()
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -9,67 +9,49 @@ const DEFAULT_START_DECONTAMINATION_ZONE_RADIUS = 3
|
||||
const DEFAULT_SEED_RARITY_POOL: Array[int] = [0,0,0,0,0,0,0,1,1,1]
|
||||
|
||||
@export var region_name : String
|
||||
@export var region_flags : Array[String]
|
||||
@export var level : int
|
||||
@export var objective : int
|
||||
@export var region_seed : int
|
||||
@export var modifiers : Array[RegionModifier]
|
||||
|
||||
static func get_objective_by_level(l : int) -> int:
|
||||
if GameInfo and GameInfo.game_data.game_mode == GameData.GameMode.STORY:
|
||||
match l:
|
||||
0: return 5
|
||||
1: return 8
|
||||
2: return 10
|
||||
3: return 15
|
||||
4: return 20
|
||||
5: return 30
|
||||
_: return get_objective_by_level(l-1) + (l-3) * 5
|
||||
else :
|
||||
match l:
|
||||
0: return 8
|
||||
1: return 15
|
||||
_: return get_objective_by_level(l-1) + l * 5
|
||||
|
||||
func _init(
|
||||
_level = 0,
|
||||
_name = Random.generate_random_word(),
|
||||
_flags : Array[String] = [],
|
||||
_modifiers : Array[RegionModifier] = [],
|
||||
_region_seed = randi(),
|
||||
):
|
||||
region_name = _name
|
||||
region_flags = _flags
|
||||
level = _level
|
||||
modifiers = _modifiers
|
||||
region_seed = _region_seed
|
||||
|
||||
func get_region_name() -> String:
|
||||
return region_name
|
||||
|
||||
func get_region_flags() -> Array[String]:
|
||||
var f := region_flags
|
||||
var n := region_name
|
||||
|
||||
for m in modifiers:
|
||||
f.append_array(m.get_flags())
|
||||
n = m.modify_region_name(n)
|
||||
|
||||
return f
|
||||
|
||||
func get_region_level() -> int:
|
||||
return level
|
||||
return n
|
||||
|
||||
func get_region_seed() -> int:
|
||||
return region_seed
|
||||
|
||||
func get_objective() -> int:
|
||||
if "tutorial" in region_flags:
|
||||
return 1
|
||||
var o = get_objective_by_level(get_region_level())
|
||||
var o = objective
|
||||
|
||||
for m in modifiers:
|
||||
o = m.modify_objective(o)
|
||||
|
||||
return o
|
||||
|
||||
func is_objective_disabled() -> bool:
|
||||
var d = false
|
||||
|
||||
for m in modifiers:
|
||||
print(m.modifier_name)
|
||||
print(m.disable_objective())
|
||||
if m.disable_objective():
|
||||
d = true
|
||||
|
||||
return d
|
||||
|
||||
func get_charge() -> int:
|
||||
var c = DEFAULT_CHARGE
|
||||
|
||||
@@ -110,10 +92,10 @@ func get_start_decontamination_zone_radius() -> int:
|
||||
|
||||
return zone_radius
|
||||
|
||||
func get_seed_rarity_pool() -> int:
|
||||
func get_seed_rarity_pool() -> Array[int]:
|
||||
var seed_rarity_pool = DEFAULT_SEED_RARITY_POOL
|
||||
|
||||
for m in modifiers:
|
||||
seed_rarity_pool = m.modify_seed_rarity_pool(seed_rarity_pool)
|
||||
|
||||
return seed_rarity_pool
|
||||
return seed_rarity_pool
|
||||
|
||||
@@ -11,7 +11,7 @@ func setup():
|
||||
func place_decontamination(coord : Vector2i, save = false):
|
||||
place_decontaminations([coord], save)
|
||||
|
||||
func place_decontaminations(coords : Array[Vector2i], save := false):
|
||||
func place_decontaminations(coords : Array[Vector2i], _save := false):
|
||||
place_terrain_cells(
|
||||
coords,
|
||||
DECONTAMINATION_TILE_TERRAIN_SET,
|
||||
|
||||
@@ -19,7 +19,7 @@ func place_rocks(coords : Array[Vector2i], type := TileType.ROCK):
|
||||
ROCK_TILE_TERRAIN if type == TileType.ROCK else CRISTAL_TILE_TERRAIN,
|
||||
)
|
||||
|
||||
func remove_rocks(coords : Array[Vector2i], save = false):
|
||||
func remove_rocks(coords : Array[Vector2i], _save = false):
|
||||
place_terrain_cells(
|
||||
coords,
|
||||
ROCK_TILE_TERRAIN_SET,
|
||||
|
||||
30
stages/title_screen/assets/materials/planet_3d_terrain.tres
Normal file
30
stages/title_screen/assets/materials/planet_3d_terrain.tres
Normal file
@@ -0,0 +1,30 @@
|
||||
[gd_resource type="ShaderMaterial" format=3 uid="uid://c1h3xs2xahhm7"]
|
||||
|
||||
[ext_resource type="Shader" uid="uid://ctt1ykb11oh22" path="res://stages/title_screen/resources/shaders/terrain.gdshader" id="1_2voo7"]
|
||||
[ext_resource type="Texture2D" uid="uid://c4usrfeevb4n1" path="res://stages/title_screen/resources/gradient_planet.tres" id="2_t1vtm"]
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_exbh2"]
|
||||
interpolation_mode = 1
|
||||
offsets = PackedFloat32Array(0, 0.44278607, 0.64179105, 0.7164179)
|
||||
colors = PackedColorArray(0.14509805, 0.75686276, 0.2784314, 1, 1, 0.6509804, 0.09019608, 1, 1, 0.31764707, 0.2627451, 1, 1, 1, 1, 1)
|
||||
|
||||
[sub_resource type="GradientTexture1D" id="GradientTexture1D_neuam"]
|
||||
gradient = SubResource("Gradient_exbh2")
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_hqt5a"]
|
||||
frequency = 0.0212
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_8o8xi"]
|
||||
noise = SubResource("FastNoiseLite_hqt5a")
|
||||
|
||||
[resource]
|
||||
render_priority = 0
|
||||
shader = ExtResource("1_2voo7")
|
||||
shader_parameter/specular = 0.0
|
||||
shader_parameter/roughness = 0.6
|
||||
shader_parameter/radius = 8.0
|
||||
shader_parameter/height = 3.81
|
||||
shader_parameter/gradient = ExtResource("2_t1vtm")
|
||||
shader_parameter/random_fertility_texture = SubResource("NoiseTexture2D_8o8xi")
|
||||
shader_parameter/fertility_gradient = SubResource("GradientTexture1D_neuam")
|
||||
shader_parameter/fertility_factor = 0.0
|
||||
File diff suppressed because one or more lines are too long
@@ -3,13 +3,19 @@
|
||||
shader_type spatial;
|
||||
render_mode world_vertex_coords;
|
||||
|
||||
|
||||
uniform float specular = 0.8;
|
||||
uniform float roughness = 0.6;
|
||||
uniform float radius = 8.0;
|
||||
uniform float height = 4;
|
||||
uniform sampler2D gradient: repeat_disable;
|
||||
|
||||
uniform sampler2D random_fertility_texture;
|
||||
uniform sampler2D fertility_gradient: repeat_disable;
|
||||
uniform float fertility_factor: hint_range(0, 1.) = 0.5;
|
||||
|
||||
varying vec4 world_vert;
|
||||
varying vec4 vert;
|
||||
|
||||
void vertex() {
|
||||
world_vert = inverse(MODEL_MATRIX) * vec4(VERTEX,1.0);
|
||||
@@ -19,9 +25,15 @@ void fragment() {
|
||||
METALLIC = 0.0;
|
||||
SPECULAR = specular;
|
||||
ROUGHNESS = roughness;
|
||||
|
||||
float fertility_score = texture(random_fertility_texture, UV).r;
|
||||
float color_uv = (length(world_vert.xyz) - radius) / (height);
|
||||
if (fertility_score < fertility_factor) {
|
||||
ALBEDO = texture(fertility_gradient, vec2(color_uv, 0.0)).rgb;
|
||||
} else {
|
||||
ALBEDO = texture(gradient, vec2(color_uv, 0.0)).rgb;
|
||||
}
|
||||
|
||||
float color_uv = (length(world_vert.xyz) - radius) / (height);
|
||||
ALBEDO = texture(gradient, vec2(color_uv, 0.0)).rgb;
|
||||
}
|
||||
|
||||
//void light() {
|
||||
|
||||
@@ -16,6 +16,12 @@ class_name Planet3D
|
||||
if is_node_ready():
|
||||
update_terrain()
|
||||
|
||||
@export var fertility_factor : float = 0:
|
||||
set(v):
|
||||
fertility_factor = min(1.,max(0.,v))
|
||||
if is_node_ready():
|
||||
update_terrain()
|
||||
|
||||
|
||||
@export_group("Terrain")
|
||||
@export var noise : Noise = FastNoiseLite.new():
|
||||
@@ -105,6 +111,7 @@ func update_terrain() -> void:
|
||||
if terrain_material and terrain_material is ShaderMaterial:
|
||||
terrain_material.set_shader_parameter("radius", radius)
|
||||
terrain_material.set_shader_parameter("height", height)
|
||||
terrain_material.set_shader_parameter("fertility_factor", fertility_factor)
|
||||
|
||||
func update_water() -> void:
|
||||
if !water or %Water == null:
|
||||
|
||||
@@ -12,15 +12,25 @@ var next_mouse_pos : Vector2
|
||||
|
||||
func _ready():
|
||||
%Version.text = ProjectSettings.get_setting("application/config/version")
|
||||
%Start.text = tr("CONTINUE") if GameInfo.game_loaded else tr("START")
|
||||
%Restart.visible = GameInfo.game_loaded
|
||||
%ModeChoose.hide()
|
||||
%Start.text = tr("CONTINUE") if GameInfo.game_data else tr("START")
|
||||
%Restart.visible = GameInfo.game_data != null
|
||||
if GameInfo.game_data:
|
||||
%Planet3d.fertility_factor = (
|
||||
max(0,float(GameInfo.game_data.progression_data.story_step_i - 1))
|
||||
/ len(
|
||||
GameInfo.game_data.progression_data.get_all_story_steps()
|
||||
) - 1
|
||||
)
|
||||
|
||||
func _on_start_pressed():
|
||||
if GameInfo.game_data and GameInfo.game_data.last_game_scene:
|
||||
SceneManager.change_to_scene(GameInfo.game_data.last_game_scene)
|
||||
if GameInfo.game_data :
|
||||
if GameInfo.game_data.last_game_scene:
|
||||
SceneManager.change_to_scene(GameInfo.game_data.last_game_scene)
|
||||
else :
|
||||
SceneManager.change_to_scene(CockpitScene.new())
|
||||
else:
|
||||
%ModeChoose.show()
|
||||
GameInfo.start_game_data()
|
||||
SceneManager.change_to_scene(IntroScene.new())
|
||||
|
||||
func _process(delta):
|
||||
next_mouse_pos = get_viewport().get_mouse_position()
|
||||
@@ -50,13 +60,6 @@ func _process(delta):
|
||||
|
||||
|
||||
func _on_restart_button_down():
|
||||
GameInfo.restart_game_data()
|
||||
%ModeChoose.show()
|
||||
GameInfo.start_game_data()
|
||||
SceneManager.change_to_scene(IntroScene.new())
|
||||
|
||||
|
||||
func _on_story_mode_start_button_down():
|
||||
SceneManager.change_to_scene_id("INTRO")
|
||||
|
||||
func _on_infinite_mode_start_button_down():
|
||||
GameInfo.game_data.game_mode = GameData.GameMode.INFINITE
|
||||
SceneManager.change_to_scene_id("COCKPIT")
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
[ext_resource type="PackedScene" uid="uid://cm5b7w7j6527f" path="res://stages/title_screen/planet_3d.tscn" id="5_7a1qq"]
|
||||
[ext_resource type="PackedScene" uid="uid://c8flevrkelpvy" path="res://gui/credits/socials/instagram.tscn" id="6_7a1qq"]
|
||||
[ext_resource type="PackedScene" uid="uid://bc3byq8e45ejj" path="res://gui/credits/socials/steam.tscn" id="7_nmsah"]
|
||||
[ext_resource type="Shader" uid="uid://bv2rghn44mrrf" path="res://stages/title_screen/resources/shaders/stars.gdshader" id="7_y6tw6"]
|
||||
[ext_resource type="Shader" uid="uid://cuni3ggtw2uuy" path="res://common/vfx/materials/shaders/blur.gdshader" id="8_pjo5j"]
|
||||
[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="9_5mxqx"]
|
||||
[ext_resource type="Theme" uid="uid://5au2k3vf2po3" path="res://gui/ressources/menu.tres" id="10_tsp1v"]
|
||||
@@ -23,41 +22,9 @@ shader = ExtResource("8_pjo5j")
|
||||
shader_parameter/strength = 5.00000023424012
|
||||
shader_parameter/mix_percentage = 0.3
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_pjo5j"]
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_60mme"]
|
||||
frequency = 1.0
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_7a1qq"]
|
||||
shader = ExtResource("7_y6tw6")
|
||||
shader_parameter/sky_color = Color(0.03, 0.05, 0.11, 1)
|
||||
shader_parameter/star_base_color = Color(0.8, 1, 0.3, 1)
|
||||
shader_parameter/star_hue_offset = 0.6
|
||||
shader_parameter/star_intensity = 0.08
|
||||
shader_parameter/star_twinkle_speed = 0.8
|
||||
shader_parameter/star_twinkle_intensity = 0.2
|
||||
shader_parameter/layer_scale = 20.0
|
||||
shader_parameter/layer_scale_step = 10.0
|
||||
shader_parameter/layers_count = 3
|
||||
|
||||
[sub_resource type="Sky" id="Sky_65b6a"]
|
||||
sky_material = SubResource("ShaderMaterial_7a1qq")
|
||||
|
||||
[sub_resource type="Environment" id="Environment_nmsah"]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_65b6a")
|
||||
sky_custom_fov = 61.7
|
||||
ambient_light_source = 3
|
||||
glow_intensity = 1.16
|
||||
glow_bloom = 0.49
|
||||
glow_hdr_threshold = 0.32
|
||||
glow_hdr_scale = 0.0
|
||||
glow_hdr_luminance_cap = 5.63
|
||||
fog_light_energy = 0.0
|
||||
fog_density = 0.0
|
||||
fog_sky_affect = 0.0
|
||||
fog_height = -1024.0
|
||||
fog_height_density = 0.4145
|
||||
adjustment_enabled = true
|
||||
|
||||
[node name="TitleScreen" type="CanvasLayer" unique_id=1166097103]
|
||||
script = ExtResource("1_6yuhi")
|
||||
|
||||
@@ -149,11 +116,12 @@ layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
|
||||
[node name="SteamButton" parent="MarginContainer/Socials" unique_id=1181450581 instance=ExtResource("7_nmsah")]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
link = "https://store.steampowered.com/app/4444510/Seeding_The_Wasteland/"
|
||||
|
||||
[node name="ModeChoose" type="Control" parent="." unique_id=1527342716]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
z_index = 2
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
@@ -208,24 +176,21 @@ size = Vector2i(1980, 1080)
|
||||
|
||||
[node name="Planet3d" parent="SubViewport" unique_id=926789923 instance=ExtResource("5_7a1qq")]
|
||||
unique_name_in_owner = true
|
||||
noise = SubResource("FastNoiseLite_pjo5j")
|
||||
noise = SubResource("FastNoiseLite_60mme")
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="SubViewport" unique_id=806252928]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.369979, 0, 64.323425)
|
||||
current = true
|
||||
fov = 34.0
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="SubViewport" unique_id=466718971]
|
||||
environment = SubResource("Environment_nmsah")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="SubViewport" unique_id=1446693225]
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="SubViewport" unique_id=1113690056]
|
||||
transform = Transform3D(0.044800885, 0.76661056, -0.6405476, -0.8325595, 0.38302267, 0.4001729, 0.55212104, 0.51536596, 0.65540874, -23.18848, 19.508549, 0)
|
||||
light_volumetric_fog_energy = 0.0
|
||||
light_specular = 0.0
|
||||
shadow_enabled = true
|
||||
shadow_normal_bias = 0.0
|
||||
shadow_opacity = 0.48
|
||||
shadow_blur = 3.055
|
||||
shadow_opacity = 0.92
|
||||
shadow_blur = 4.667
|
||||
|
||||
[connection signal="pressed" from="MarginContainer/GridContainer/VBoxContainer/VBoxContainer/Start" to="." method="_on_start_pressed"]
|
||||
[connection signal="button_down" from="MarginContainer/GridContainer/VBoxContainer/VBoxContainer/Restart" to="." method="_on_restart_button_down"]
|
||||
|
||||
Reference in New Issue
Block a user