Equilibrage, amélioration du tutoriel et de la clarté des éléments de gameplay
* Rajout d'une région supplémentaire pour finir le jeu, et renommage de la dernière map en "Base Borea" * Amélioration de la clarté du détecteur * Les objectifs du tutoriel et les indications de jeu apparaissent désormais en haut de l'écran * Changement des étapes du tutoriel * Amélioration de la lisibilité du voyage dans le vaisseau (avec un décompte de distance jusqu'à la fin du jeu) * Changement de la génération de map : la zone fertile est désormais uniquement au centre de la carte, les chunks sont également plus petits * Changement des objectifs à réaliser ainsi que des recharges, seule 8 par région désormais * Les modificateurs de région n'évoluent plus
This commit is contained in:
@@ -49,7 +49,7 @@ func start_tutorial():
|
|||||||
current_region_data = RegionData.new(
|
current_region_data = RegionData.new(
|
||||||
RegionParameter.new(
|
RegionParameter.new(
|
||||||
0,
|
0,
|
||||||
tr("TUTORIAL"),
|
tr("ASTRA_BASE"),
|
||||||
["tutorial"],
|
["tutorial"],
|
||||||
[],
|
[],
|
||||||
randi()
|
randi()
|
||||||
|
|||||||
@@ -3,10 +3,8 @@ class_name RunData
|
|||||||
|
|
||||||
enum State {STARTED, IN_PROGRESS, FINISHED}
|
enum State {STARTED, IN_PROGRESS, FINISHED}
|
||||||
|
|
||||||
const RUN_POINT_POSITION_DERIVATION = 100
|
|
||||||
const DIFFICULTY_INCREASE_BY_LEVEL = 3
|
|
||||||
const RUN_POINTS_NEXT_NUMBER : int = 2
|
const RUN_POINTS_NEXT_NUMBER : int = 2
|
||||||
const RUN_POINT_MAX_LEVEL = 4 # TODO
|
const RUN_POINT_MAX_LEVEL = 5 # TODO
|
||||||
|
|
||||||
signal current_run_point_changed
|
signal current_run_point_changed
|
||||||
|
|
||||||
@@ -26,6 +24,11 @@ func generate_next_run_points(level = 0) -> Array[RunPoint]:
|
|||||||
|
|
||||||
next_run_points = []
|
next_run_points = []
|
||||||
|
|
||||||
|
if level == RUN_POINT_MAX_LEVEL:
|
||||||
|
return [
|
||||||
|
generate_borea_base_run_point()
|
||||||
|
]
|
||||||
|
|
||||||
for i in range(RUN_POINTS_NEXT_NUMBER):
|
for i in range(RUN_POINTS_NEXT_NUMBER):
|
||||||
next_run_points.append(
|
next_run_points.append(
|
||||||
generate_next_run_point(level)
|
generate_next_run_point(level)
|
||||||
@@ -38,13 +41,24 @@ func generate_next_run_point(level = 0) -> RunPoint:
|
|||||||
var region_parameter = RegionParameter.new()
|
var region_parameter = RegionParameter.new()
|
||||||
region_parameter.level = level
|
region_parameter.level = level
|
||||||
region_parameter.region_flags = get_region_flags(region_parameter)
|
region_parameter.region_flags = get_region_flags(region_parameter)
|
||||||
region_parameter.modifiers = get_region_modifiers(level + 1)
|
region_parameter.modifiers = get_region_modifiers()
|
||||||
|
|
||||||
return RunPoint.new(
|
return RunPoint.new(
|
||||||
level,
|
level,
|
||||||
region_parameter
|
region_parameter
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func generate_borea_base_run_point() -> RunPoint:
|
||||||
|
var region_parameter = RegionParameter.new()
|
||||||
|
region_parameter.level = RUN_POINT_MAX_LEVEL
|
||||||
|
region_parameter.region_flags = get_region_flags(region_parameter)
|
||||||
|
region_parameter.region_name = tr("BOREA_BASE")
|
||||||
|
|
||||||
|
return RunPoint.new(
|
||||||
|
RUN_POINT_MAX_LEVEL,
|
||||||
|
region_parameter
|
||||||
|
)
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
func get_state() -> State:
|
func get_state() -> State:
|
||||||
@@ -78,12 +92,12 @@ func get_region_flags(region_parameter : RegionParameter) -> Array[String]:
|
|||||||
|
|
||||||
return flags
|
return flags
|
||||||
|
|
||||||
func get_region_modifiers(level : int) -> Array[RegionModifier]:
|
func get_region_modifiers() -> Array[RegionModifier]:
|
||||||
var possible_modifiers : Array[RegionModifier] = [
|
var possible_modifiers : Array[RegionModifier] = [
|
||||||
AridModifier.new(level),
|
AridModifier.new(),
|
||||||
HumidModifier.new(level),
|
HumidModifier.new(),
|
||||||
PoorModifier.new(level),
|
PoorModifier.new(),
|
||||||
HarshModifier.new(level)
|
HarshModifier.new()
|
||||||
]
|
]
|
||||||
|
|
||||||
possible_modifiers = possible_modifiers.filter(
|
possible_modifiers = possible_modifiers.filter(
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ const AVAILABLE_LANGUAGES_LABEL = [
|
|||||||
#region ------------------ Game ------------------
|
#region ------------------ Game ------------------
|
||||||
|
|
||||||
const MAX_ZOOM = 1.8
|
const MAX_ZOOM = 1.8
|
||||||
const MIN_ZOOM = 0.9
|
const MIN_ZOOM = 0.8
|
||||||
|
|
||||||
# Not in settings pannel
|
# Not in settings pannel
|
||||||
@export var zoom : float = 1. :
|
@export var zoom : float = 1. :
|
||||||
|
|||||||
@@ -38,6 +38,6 @@ process/hdr_as_srgb=false
|
|||||||
process/hdr_clamp_exposure=false
|
process/hdr_clamp_exposure=false
|
||||||
process/size_limit=0
|
process/size_limit=0
|
||||||
detect_3d/compress_to=1
|
detect_3d/compress_to=1
|
||||||
svg/scale=1.0
|
svg/scale=2.0
|
||||||
editor/scale_with_editor_scale=false
|
editor/scale_with_editor_scale=false
|
||||||
editor/convert_colors_with_editor_theme=false
|
editor/convert_colors_with_editor_theme=false
|
||||||
|
|||||||
@@ -2,8 +2,12 @@
|
|||||||
extends Node2D
|
extends Node2D
|
||||||
class_name DetectorSignal
|
class_name DetectorSignal
|
||||||
|
|
||||||
const SIGNAL_DURATION = 1
|
const SIGNAL_DURATION = 1.2
|
||||||
const PARTICLES_DISTANCE = 100
|
const PARTICLES_DISTANCE = 180
|
||||||
|
const ICON_SIZE = 40
|
||||||
|
const POINT_ICON_SIZE = 30
|
||||||
|
const POINT_ICON_SHIFT = 0.2
|
||||||
|
const POINT_ICON = preload("res://common/icons/caret-down.svg")
|
||||||
const DEFAULT_ICON = preload("res://common/icons/north-star.svg")
|
const DEFAULT_ICON = preload("res://common/icons/north-star.svg")
|
||||||
const ENERGY_ICON = preload("res://common/icons/bolt.svg")
|
const ENERGY_ICON = preload("res://common/icons/bolt.svg")
|
||||||
const DOOR_ICON = preload("res://common/icons/logout.svg")
|
const DOOR_ICON = preload("res://common/icons/logout.svg")
|
||||||
@@ -21,15 +25,17 @@ func _init(region : Region, pos : Vector2):
|
|||||||
signals.append(
|
signals.append(
|
||||||
DetectorSignalIndividual.new(
|
DetectorSignalIndividual.new(
|
||||||
(pos - e.global_position).normalized().angle(),
|
(pos - e.global_position).normalized().angle(),
|
||||||
ENERGY_ICON
|
ENERGY_ICON,
|
||||||
|
Color("ffa617ff")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
if e is Door and e.available:
|
if e is Door and e.available:
|
||||||
signals.append(
|
signals.append(
|
||||||
DetectorSignalIndividual.new(
|
DetectorSignalIndividual.new(
|
||||||
(pos - e.global_position).normalized().angle(),
|
(pos - e.global_position).normalized().angle(),
|
||||||
DOOR_ICON
|
DOOR_ICON,
|
||||||
)
|
Color("ffa617ff")
|
||||||
|
),
|
||||||
)
|
)
|
||||||
if e is Plant:
|
if e is Plant:
|
||||||
signals.append(
|
signals.append(
|
||||||
@@ -49,11 +55,26 @@ func _draw():
|
|||||||
5.
|
5.
|
||||||
)
|
)
|
||||||
for s in signals:
|
for s in signals:
|
||||||
draw_texture(
|
draw_texture_rect(
|
||||||
s.icon,
|
s.icon,
|
||||||
Vector2.ZERO - DEFAULT_ICON.get_size()/2 + Vector2.LEFT.rotated(s.angle) * started_time/SIGNAL_DURATION * PARTICLES_DISTANCE,
|
Rect2(
|
||||||
|
Vector2.ZERO - (Vector2.ONE * ICON_SIZE)/2 + Vector2.LEFT.rotated(s.angle) * started_time/SIGNAL_DURATION * PARTICLES_DISTANCE,
|
||||||
|
Vector2.ONE * ICON_SIZE
|
||||||
|
),
|
||||||
|
false,
|
||||||
|
Color(s.color.r,s.color.g,s.color.b,1-started_time/SIGNAL_DURATION)
|
||||||
|
)
|
||||||
|
draw_set_transform(Vector2.ZERO,s.angle + PI/2, Vector2.ONE)
|
||||||
|
draw_texture_rect(
|
||||||
|
POINT_ICON,
|
||||||
|
Rect2(
|
||||||
|
Vector2.ZERO - (Vector2.ONE * POINT_ICON_SIZE)/2 + Vector2.DOWN * (started_time/SIGNAL_DURATION + POINT_ICON_SHIFT) * PARTICLES_DISTANCE,
|
||||||
|
Vector2.ONE * POINT_ICON_SIZE
|
||||||
|
),
|
||||||
|
false,
|
||||||
Color(1.,1.,1.,1-started_time/SIGNAL_DURATION)
|
Color(1.,1.,1.,1-started_time/SIGNAL_DURATION)
|
||||||
)
|
)
|
||||||
|
draw_set_transform(Vector2.ZERO,0., Vector2.ONE)
|
||||||
|
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
if started_time < SIGNAL_DURATION:
|
if started_time < SIGNAL_DURATION:
|
||||||
@@ -65,11 +86,14 @@ func _process(delta):
|
|||||||
class DetectorSignalIndividual:
|
class DetectorSignalIndividual:
|
||||||
var angle : float
|
var angle : float
|
||||||
var icon : Texture
|
var icon : Texture
|
||||||
|
var color : Color
|
||||||
|
|
||||||
func _init(
|
func _init(
|
||||||
_angle : float = 0.,
|
_angle : float = 0.,
|
||||||
_icon : Texture = DEFAULT_ICON
|
_icon : Texture = DEFAULT_ICON,
|
||||||
|
_color : Color = Color.WHITE,
|
||||||
):
|
):
|
||||||
angle = _angle
|
angle = _angle
|
||||||
icon = _icon
|
icon = _icon
|
||||||
|
color = _color
|
||||||
|
|
||||||
|
|||||||
@@ -4,10 +4,8 @@
|
|||||||
[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="2_nq5i2"]
|
[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="2_nq5i2"]
|
||||||
[ext_resource type="PackedScene" uid="uid://edxmvtvtipwq" path="res://gui/game/alert/alert.tscn" id="2_ykapk"]
|
[ext_resource type="PackedScene" uid="uid://edxmvtvtipwq" path="res://gui/game/alert/alert.tscn" id="2_ykapk"]
|
||||||
[ext_resource type="PackedScene" uid="uid://brfsapvj2quxm" path="res://gui/game/energy_info/energy_info.tscn" id="4_2wykm"]
|
[ext_resource type="PackedScene" uid="uid://brfsapvj2quxm" path="res://gui/game/energy_info/energy_info.tscn" id="4_2wykm"]
|
||||||
[ext_resource type="PackedScene" uid="uid://fnv0qhkh40mv" path="res://gui/game/announce/announce.tscn" id="4_h6540"]
|
|
||||||
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="6_2wykm"]
|
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="6_2wykm"]
|
||||||
[ext_resource type="PackedScene" uid="uid://df0eop555wfj5" path="res://gui/game/objective_progress_bar/objective_progress_bar.tscn" id="6_dr1y2"]
|
[ext_resource type="PackedScene" uid="uid://df0eop555wfj5" path="res://gui/game/objective_progress_bar/objective_progress_bar.tscn" id="6_dr1y2"]
|
||||||
[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="6_h6540"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://bt3g5bmar0icf" path="res://common/icons/growth.svg" id="6_id0t5"]
|
[ext_resource type="Texture2D" uid="uid://bt3g5bmar0icf" path="res://common/icons/growth.svg" id="6_id0t5"]
|
||||||
[ext_resource type="Texture2D" uid="uid://b43thuq8piv18" path="res://common/icons/skull.svg" id="7_dr1y2"]
|
[ext_resource type="Texture2D" uid="uid://b43thuq8piv18" path="res://common/icons/skull.svg" id="7_dr1y2"]
|
||||||
[ext_resource type="PackedScene" uid="uid://clicjf8ts51h8" path="res://gui/game/inventory_gui/inventory_gui.tscn" id="9_id0t5"]
|
[ext_resource type="PackedScene" uid="uid://clicjf8ts51h8" path="res://gui/game/inventory_gui/inventory_gui.tscn" id="9_id0t5"]
|
||||||
@@ -36,6 +34,43 @@ fill_to = Vector2(1.5, 0.5)
|
|||||||
font = ExtResource("6_2wykm")
|
font = ExtResource("6_2wykm")
|
||||||
font_size = 40
|
font_size = 40
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_rcm5b"]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("%ObjectiveLabel/..:theme_override_constants/margin_top")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [0]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_ajf5p"]
|
||||||
|
resource_name = "bump"
|
||||||
|
length = 0.4
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("%ObjectiveLabel/..:theme_override_constants/margin_top")
|
||||||
|
tracks/0/interp = 2
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.23333333, 0.4),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [0, 20, 0]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_jomh8"]
|
||||||
|
_data = {
|
||||||
|
&"RESET": SubResource("Animation_rcm5b"),
|
||||||
|
&"bump": SubResource("Animation_ajf5p")
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="LabelSettings" id="LabelSettings_rcm5b"]
|
[sub_resource type="LabelSettings" id="LabelSettings_rcm5b"]
|
||||||
font = ExtResource("6_2wykm")
|
font = ExtResource("6_2wykm")
|
||||||
font_size = 20
|
font_size = 20
|
||||||
@@ -68,9 +103,6 @@ grow_horizontal = 2
|
|||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
mouse_filter = 2
|
mouse_filter = 2
|
||||||
|
|
||||||
[node name="Announce" parent="." unique_id=94658910 instance=ExtResource("4_h6540")]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
|
|
||||||
[node name="MarginContainer" type="MarginContainer" parent="." unique_id=2054297293]
|
[node name="MarginContainer" type="MarginContainer" parent="." unique_id=2054297293]
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
@@ -89,7 +121,7 @@ mouse_filter = 2
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 4
|
||||||
mouse_filter = 2
|
mouse_filter = 2
|
||||||
theme_override_constants/separation = 0
|
theme_override_constants/separation = 10
|
||||||
|
|
||||||
[node name="ObjectiveProgressBar" parent="MarginContainer/VBoxContainer" unique_id=2043451865 instance=ExtResource("6_dr1y2")]
|
[node name="ObjectiveProgressBar" parent="MarginContainer/VBoxContainer" unique_id=2043451865 instance=ExtResource("6_dr1y2")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
@@ -114,26 +146,56 @@ text = "0 Plant Point"
|
|||||||
label_settings = SubResource("LabelSettings_id0t5")
|
label_settings = SubResource("LabelSettings_id0t5")
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
|
|
||||||
[node name="RechargesLeftLabel" type="Label" parent="MarginContainer/VBoxContainer" unique_id=1254074923]
|
[node name="ObjectiveContainer" type="MarginContainer" parent="MarginContainer/VBoxContainer" unique_id=946367772]
|
||||||
|
layout_mode = 2
|
||||||
|
mouse_filter = 2
|
||||||
|
theme_override_constants/margin_left = 0
|
||||||
|
theme_override_constants/margin_top = 0
|
||||||
|
theme_override_constants/margin_right = 0
|
||||||
|
theme_override_constants/margin_bottom = 0
|
||||||
|
|
||||||
|
[node name="ObjectiveLabel" type="RichTextLabel" parent="MarginContainer/VBoxContainer/ObjectiveContainer" unique_id=2044989003]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
custom_minimum_size = Vector2(600, 0)
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 4
|
||||||
|
size_flags_vertical = 0
|
||||||
|
theme_override_colors/default_color = Color(1, 0.6509804, 0.09019608, 1)
|
||||||
|
theme_override_colors/font_shadow_color = Color(0.0627451, 0.05882353, 0.16862746, 1)
|
||||||
|
theme_override_constants/shadow_outline_size = 8
|
||||||
|
theme_override_constants/shadow_offset_x = 0
|
||||||
|
theme_override_constants/shadow_offset_y = 0
|
||||||
|
theme_override_fonts/normal_font = ExtResource("6_2wykm")
|
||||||
|
theme_override_fonts/bold_font = ExtResource("6_2wykm")
|
||||||
|
theme_override_fonts/bold_italics_font = ExtResource("6_2wykm")
|
||||||
|
theme_override_fonts/italics_font = ExtResource("6_2wykm")
|
||||||
|
theme_override_font_sizes/normal_font_size = 30
|
||||||
|
theme_override_font_sizes/bold_font_size = 30
|
||||||
|
theme_override_font_sizes/bold_italics_font_size = 30
|
||||||
|
theme_override_font_sizes/italics_font_size = 30
|
||||||
|
theme_override_font_sizes/mono_font_size = 30
|
||||||
|
bbcode_enabled = true
|
||||||
|
text = "Action en cours Action en cours Action en cours Action en cours Action en cours "
|
||||||
|
fit_content = true
|
||||||
|
horizontal_alignment = 1
|
||||||
|
|
||||||
|
[node name="ObjectiveAnimationPlayer" type="AnimationPlayer" parent="MarginContainer/VBoxContainer/ObjectiveContainer/ObjectiveLabel" unique_id=31675045]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
libraries/ = SubResource("AnimationLibrary_jomh8")
|
||||||
|
|
||||||
|
[node name="GiveUpButton" type="Button" parent="MarginContainer/VBoxContainer" unique_id=1128310884]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "9 charges left"
|
size_flags_horizontal = 4
|
||||||
label_settings = ExtResource("6_h6540")
|
size_flags_vertical = 8
|
||||||
horizontal_alignment = 1
|
text = "GIVE_UP"
|
||||||
|
icon = ExtResource("7_dr1y2")
|
||||||
|
|
||||||
[node name="Inventory" parent="MarginContainer" unique_id=1178590658 instance=ExtResource("9_id0t5")]
|
[node name="Inventory" parent="MarginContainer" unique_id=1178590658 instance=ExtResource("9_id0t5")]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 1
|
size_flags_horizontal = 1
|
||||||
size_flags_vertical = 8
|
size_flags_vertical = 8
|
||||||
|
|
||||||
[node name="GiveUpButton" type="Button" parent="MarginContainer" unique_id=1128310884]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
layout_mode = 2
|
|
||||||
size_flags_horizontal = 8
|
|
||||||
size_flags_vertical = 8
|
|
||||||
text = "GIVE_UP"
|
|
||||||
icon = ExtResource("7_dr1y2")
|
|
||||||
|
|
||||||
[node name="Help" type="VBoxContainer" parent="MarginContainer" unique_id=645268912]
|
[node name="Help" type="VBoxContainer" parent="MarginContainer" unique_id=645268912]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 8
|
size_flags_horizontal = 8
|
||||||
|
|||||||
@@ -11,8 +11,8 @@
|
|||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_27lg1"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_27lg1"]
|
||||||
shader = ExtResource("1_v570a")
|
shader = ExtResource("1_v570a")
|
||||||
shader_parameter/strength = 5.45500025585262
|
shader_parameter/strength = 0.0
|
||||||
shader_parameter/mix_percentage = 0.02400000114
|
shader_parameter/mix_percentage = 0.0
|
||||||
|
|
||||||
[sub_resource type="ViewportTexture" id="ViewportTexture_h2bel"]
|
[sub_resource type="ViewportTexture" id="ViewportTexture_h2bel"]
|
||||||
viewport_path = NodePath("NightAnimation/SubViewport")
|
viewport_path = NodePath("NightAnimation/SubViewport")
|
||||||
@@ -55,12 +55,12 @@ _data = {
|
|||||||
|
|
||||||
[node name="PassDay" type="CanvasLayer" unique_id=335255544]
|
[node name="PassDay" type="CanvasLayer" unique_id=335255544]
|
||||||
layer = 3
|
layer = 3
|
||||||
|
visible = false
|
||||||
script = ExtResource("1_0pm4g")
|
script = ExtResource("1_0pm4g")
|
||||||
|
|
||||||
[node name="Blur" type="ColorRect" parent="." unique_id=546890405]
|
[node name="Blur" type="ColorRect" parent="." unique_id=546890405]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
physics_interpolation_mode = 0
|
physics_interpolation_mode = 0
|
||||||
visible = false
|
|
||||||
material = SubResource("ShaderMaterial_27lg1")
|
material = SubResource("ShaderMaterial_27lg1")
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
@@ -72,6 +72,7 @@ script = ExtResource("2_bhfpo")
|
|||||||
|
|
||||||
[node name="PassDayInfo" type="VBoxContainer" parent="." unique_id=833110506]
|
[node name="PassDayInfo" type="VBoxContainer" parent="." unique_id=833110506]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
visible = false
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
@@ -139,3 +140,7 @@ theme_override_constants/margin_bottom = 15
|
|||||||
[node name="EnergyPassDayInfo" parent="MarginContainer" unique_id=2044341204 instance=ExtResource("2_feyaf")]
|
[node name="EnergyPassDayInfo" parent="MarginContainer" unique_id=2044341204 instance=ExtResource("2_feyaf")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
theme_override_constants/margin_left = 15
|
||||||
|
theme_override_constants/margin_top = 15
|
||||||
|
theme_override_constants/margin_right = 15
|
||||||
|
theme_override_constants/margin_bottom = 15
|
||||||
|
|||||||
@@ -10,16 +10,15 @@ var score_mirror :
|
|||||||
score_mirror = v
|
score_mirror = v
|
||||||
score_update(true)
|
score_update(true)
|
||||||
|
|
||||||
|
var objective_text : String = "" : set = set_objective_text
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
GameInfo.game_data.current_region_data.updated.connect(_on_region_updated)
|
GameInfo.game_data.current_region_data.updated.connect(_on_region_updated)
|
||||||
GameInfo.game_data.player_data.updated.connect(_on_player_updated)
|
GameInfo.game_data.player_data.updated.connect(_on_player_updated)
|
||||||
GameInfo.game_data.current_region_data.pass_day_ended.connect(_on_region_pass_day_ended)
|
|
||||||
|
|
||||||
|
|
||||||
%ObjectiveProgressBar.visible = not "tutorial" in GameInfo.game_data.current_region_data.flags
|
%ObjectiveProgressBar.visible = not "tutorial" in GameInfo.game_data.current_region_data.flags
|
||||||
%SimplePlantPointScore.visible = "tutorial" in GameInfo.game_data.current_region_data.flags
|
%SimplePlantPointScore.visible = "tutorial" in GameInfo.game_data.current_region_data.flags
|
||||||
|
|
||||||
charge_update(GameInfo.game_data.current_region_data)
|
|
||||||
state_update(GameInfo.game_data.current_region_data)
|
state_update(GameInfo.game_data.current_region_data)
|
||||||
player_update(GameInfo.game_data.player_data, false)
|
player_update(GameInfo.game_data.player_data, false)
|
||||||
%EnergyInfo.reset_size()
|
%EnergyInfo.reset_size()
|
||||||
@@ -28,6 +27,7 @@ func _ready():
|
|||||||
score_mirror = GameInfo.game_data.current_region_data.get_score()
|
score_mirror = GameInfo.game_data.current_region_data.get_score()
|
||||||
for p : PlantData in GameInfo.game_data.current_region_data.plants:
|
for p : PlantData in GameInfo.game_data.current_region_data.plants:
|
||||||
score_by_plant[str(p.random_seed)] = p.get_score()
|
score_by_plant[str(p.random_seed)] = p.get_score()
|
||||||
|
set_objective_text()
|
||||||
|
|
||||||
func _on_player_updated(player_data : PlayerData):
|
func _on_player_updated(player_data : PlayerData):
|
||||||
player_update(player_data)
|
player_update(player_data)
|
||||||
@@ -48,8 +48,6 @@ func player_update(player_data : PlayerData, with_animation = true):
|
|||||||
else:
|
else:
|
||||||
%NoEnergyVignette.modulate.a = 1. if player_data.energy == 0 else 0.
|
%NoEnergyVignette.modulate.a = 1. if player_data.energy == 0 else 0.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func _on_region_updated(region_data : RegionData):
|
func _on_region_updated(region_data : RegionData):
|
||||||
await get_tree().create_timer(0.1).timeout
|
await get_tree().create_timer(0.1).timeout
|
||||||
if score_mirror != region_data.get_score():
|
if score_mirror != region_data.get_score():
|
||||||
@@ -70,23 +68,19 @@ func _on_region_updated(region_data : RegionData):
|
|||||||
score_mirror -= score_by_plant[key]
|
score_mirror -= score_by_plant[key]
|
||||||
score_by_plant.erase(key)
|
score_by_plant.erase(key)
|
||||||
|
|
||||||
charge_update(region_data)
|
|
||||||
state_update(region_data)
|
state_update(region_data)
|
||||||
|
|
||||||
func _on_give_up_pressed():
|
func _on_give_up_pressed():
|
||||||
GameInfo.game_data.give_up()
|
GameInfo.game_data.give_up()
|
||||||
SceneManager.change_to_scene_id('ASTRA')
|
SceneManager.change_to_scene_id('ASTRA')
|
||||||
|
|
||||||
func charge_update(region_data : RegionData):
|
|
||||||
%RechargesLeftLabel.text = tr("%d_CHARGE_LEFT") % (region_data.charges)
|
|
||||||
|
|
||||||
func score_update(with_animation = true):
|
func score_update(with_animation = true):
|
||||||
var objective_progression : float
|
var objective_progression : float
|
||||||
|
var objective = GameInfo.game_data.current_region_data.objective
|
||||||
if GameInfo.game_data.current_region_data.state == RegionData.State.SUCCEEDED:
|
if GameInfo.game_data.current_region_data.state == RegionData.State.SUCCEEDED:
|
||||||
objective_progression = 1.
|
objective_progression = 1.
|
||||||
%ObjectiveProgressBar.text = tr("FULL")
|
%ObjectiveProgressBar.text = tr("FULL") + " %d" % [score_mirror]
|
||||||
else:
|
else:
|
||||||
var objective = GameInfo.game_data.current_region_data.objective
|
|
||||||
objective_progression = (float(score_mirror) / max(float(objective), 1))
|
objective_progression = (float(score_mirror) / max(float(objective), 1))
|
||||||
%ObjectiveProgressBar.text = "%d/%d" % [score_mirror, objective]
|
%ObjectiveProgressBar.text = "%d/%d" % [score_mirror, objective]
|
||||||
|
|
||||||
@@ -107,17 +101,11 @@ func score_update(with_animation = true):
|
|||||||
|
|
||||||
func state_update(region_data : RegionData):
|
func state_update(region_data : RegionData):
|
||||||
if region_data.state == RegionData.State.SUCCEEDED:
|
if region_data.state == RegionData.State.SUCCEEDED:
|
||||||
%Alert.text = "SHIP_IS_READY_TO_TAKE_OFF"
|
objective_text = "SHIP_IS_READY_TO_TAKE_OFF"
|
||||||
if "tutorial" in region_data.flags:
|
if "tutorial" in region_data.flags:
|
||||||
%Alert.text = "TUTORIAL_FINISHED"
|
objective_text = "PASS_THE_MYSTERIOUS_DOOR"
|
||||||
%Alert.modulate = Color("ffa617ff")
|
|
||||||
%Alert.appear()
|
|
||||||
elif region_data.state == RegionData.State.FAILED:
|
elif region_data.state == RegionData.State.FAILED:
|
||||||
%Alert.text = "NO_RECHARGE_LEFT"
|
objective_text = "NO_RECHARGE_LEFT"
|
||||||
%Alert.modulate = Color("FF006E")
|
|
||||||
%Alert.appear()
|
|
||||||
else:
|
|
||||||
%Alert.disappear()
|
|
||||||
%GiveUpButton.visible = region_data.state == RegionData.State.FAILED
|
%GiveUpButton.visible = region_data.state == RegionData.State.FAILED
|
||||||
|
|
||||||
func plant_changing_score(plant_data: PlantData, amount : int):
|
func plant_changing_score(plant_data: PlantData, amount : int):
|
||||||
@@ -167,16 +155,16 @@ func spawn_score_particle(
|
|||||||
sprite_particle.queue_free()
|
sprite_particle.queue_free()
|
||||||
|
|
||||||
|
|
||||||
|
func set_objective_text(v : String = objective_text):
|
||||||
|
objective_text = v
|
||||||
|
if is_node_ready():
|
||||||
|
if (objective_text != "" and objective_text != %ObjectiveLabel.text):
|
||||||
|
%ObjectiveAnimationPlayer.play("bump")
|
||||||
|
AudioManager.play_sfx("Screen_interaction")
|
||||||
|
%ObjectiveLabel.text = v
|
||||||
|
|
||||||
func _on_player_action_tried_without_energy():
|
func _on_player_action_tried_without_energy():
|
||||||
$AnimationPlayer.play("no_energy_left")
|
$AnimationPlayer.play("no_energy_left")
|
||||||
|
|
||||||
func _on_player_upgraded():
|
func _on_player_upgraded():
|
||||||
$EffectAnimation.play("upgrade")
|
$EffectAnimation.play("upgrade")
|
||||||
|
|
||||||
func _on_region_pass_day_ended(region:Region):
|
|
||||||
if region.data.charges == 1:
|
|
||||||
%Announce.announce(
|
|
||||||
tr("LAST_RECHARGE"),
|
|
||||||
tr("%d_GARDEN_SCORE_LEFT") % [region.data.objective - region.garden.get_score()],
|
|
||||||
Announce.RED_COLOR
|
|
||||||
)
|
|
||||||
@@ -8,6 +8,7 @@ signal succeded
|
|||||||
var indicators : Array[InGameIndicator]
|
var indicators : Array[InGameIndicator]
|
||||||
@export var player : Player
|
@export var player : Player
|
||||||
@export var region : Region
|
@export var region : Region
|
||||||
|
@export var game_gui : GameGui
|
||||||
|
|
||||||
@onready var steps : Array[Step] = [
|
@onready var steps : Array[Step] = [
|
||||||
Step.new(
|
Step.new(
|
||||||
@@ -15,6 +16,11 @@ var indicators : Array[InGameIndicator]
|
|||||||
(func ():
|
(func ():
|
||||||
return player.global_position.distance_to(region.data.player_spawn) > 30)
|
return player.global_position.distance_to(region.data.player_spawn) > 30)
|
||||||
),
|
),
|
||||||
|
Step.new(
|
||||||
|
"CHANGE_ZOOM_WITH_Z_X",
|
||||||
|
(func ():
|
||||||
|
return GameInfo.settings_data.zoom != 1.)
|
||||||
|
),
|
||||||
Step.new(
|
Step.new(
|
||||||
"SELECT_ITEM_WITH_SCROLL_CLICK_OR_NUMBER",
|
"SELECT_ITEM_WITH_SCROLL_CLICK_OR_NUMBER",
|
||||||
(func ():
|
(func ():
|
||||||
@@ -23,13 +29,18 @@ var indicators : Array[InGameIndicator]
|
|||||||
Step.new(
|
Step.new(
|
||||||
"LEFT_CLICK_TO_USE_ITEMS",
|
"LEFT_CLICK_TO_USE_ITEMS",
|
||||||
(func ():
|
(func ():
|
||||||
return player.data.inventory.get_item() and Input.is_action_just_pressed("action"))
|
return player.instruction is Player.ItemActionInstruction)
|
||||||
),
|
),
|
||||||
Step.new(
|
Step.new(
|
||||||
"USE_YOUR_DETECTOR_TO_FIND_THE_BATTERY",
|
"USE_YOUR_DETECTOR_TO_FIND_THE_BATTERY",
|
||||||
(func ():
|
(func ():
|
||||||
return player.position.distance_to(Vector2.ZERO) < 600)
|
return player.position.distance_to(Vector2.ZERO) < 600)
|
||||||
),
|
),
|
||||||
|
Step.new(
|
||||||
|
"RECHARGE_IN_THE_RECHARGE_STATION",
|
||||||
|
(func ():
|
||||||
|
return region and region.data and region.data.charges != 10)
|
||||||
|
),
|
||||||
Step.new(
|
Step.new(
|
||||||
"DIG_A_TALION_VEIN_WITH_SHOVEL",
|
"DIG_A_TALION_VEIN_WITH_SHOVEL",
|
||||||
(func ():
|
(func ():
|
||||||
@@ -60,11 +71,6 @@ var indicators : Array[InGameIndicator]
|
|||||||
return true
|
return true
|
||||||
return false)
|
return false)
|
||||||
),
|
),
|
||||||
Step.new(
|
|
||||||
"RECHARGE_TO_PASS_DAYS",
|
|
||||||
(func ():
|
|
||||||
return region and region.data and region.data.charges != 10)
|
|
||||||
),
|
|
||||||
Step.new(
|
Step.new(
|
||||||
"GAIN_FIRST_PLANT_POINT",
|
"GAIN_FIRST_PLANT_POINT",
|
||||||
(func ():
|
(func ():
|
||||||
@@ -112,6 +118,7 @@ func _process(_d):
|
|||||||
return
|
return
|
||||||
step_gui.suceeded = step.succeeded
|
step_gui.suceeded = step.succeeded
|
||||||
if not step.succeeded:
|
if not step.succeeded:
|
||||||
|
game_gui.objective_text = step.text
|
||||||
success = false
|
success = false
|
||||||
if success:
|
if success:
|
||||||
finish_tutorial()
|
finish_tutorial()
|
||||||
|
|||||||
@@ -159,6 +159,7 @@ func bounce(
|
|||||||
direction : Vector2 = Vector2.UP,
|
direction : Vector2 = Vector2.UP,
|
||||||
transition_type: Tween.TransitionType = Tween.TransitionType.TRANS_BOUNCE,
|
transition_type: Tween.TransitionType = Tween.TransitionType.TRANS_BOUNCE,
|
||||||
):
|
):
|
||||||
|
setup_default_values()
|
||||||
start_anim()
|
start_anim()
|
||||||
await add_tween(
|
await add_tween(
|
||||||
"position",
|
"position",
|
||||||
|
|||||||
@@ -6,46 +6,17 @@
|
|||||||
[ext_resource type="Script" uid="uid://bj4d1x8n8ina" path="res://entities/interactable_3d/interactable_3d.gd" id="1_vlkbw"]
|
[ext_resource type="Script" uid="uid://bj4d1x8n8ina" path="res://entities/interactable_3d/interactable_3d.gd" id="1_vlkbw"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cdvegfgvp7053" path="res://stages/3d_scenes/cockpit_scene/assets/3d/furnitures/screen_1.blend" id="2_awdc5"]
|
[ext_resource type="PackedScene" uid="uid://cdvegfgvp7053" path="res://stages/3d_scenes/cockpit_scene/assets/3d/furnitures/screen_1.blend" id="2_awdc5"]
|
||||||
[ext_resource type="Texture2D" uid="uid://cgmxjom200bej" path="res://common/icons/chevrons-up.svg" id="2_vlkbw"]
|
[ext_resource type="Texture2D" uid="uid://cgmxjom200bej" path="res://common/icons/chevrons-up.svg" id="2_vlkbw"]
|
||||||
[ext_resource type="Script" uid="uid://ccb06rayqowp3" path="res://stages/terrain/region/scripts/modifiers/region_modifier.gd" id="3_xy0a5"]
|
|
||||||
[ext_resource type="Script" uid="uid://ddk7j5b8p51dk" path="res://stages/terrain/region/scripts/region_parameter.gd" id="4_2d2u0"]
|
|
||||||
[ext_resource type="Script" uid="uid://3o33x8mesgrn" path="res://stages/terrain/region/scripts/modifiers/arid_modifier.gd" id="4_v8ur5"]
|
|
||||||
[ext_resource type="Script" uid="uid://b4eimt3v08jhc" path="res://common/game_data/scripts/run/run_point.gd" id="5_v8ur5"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://l2xplg72hs6j" path="res://common/icons/map-pin.svg" id="6_qbi61"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://bt3g5bmar0icf" path="res://common/icons/growth.svg" id="7_2ofl5"]
|
[ext_resource type="Texture2D" uid="uid://bt3g5bmar0icf" path="res://common/icons/growth.svg" id="7_2ofl5"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cs5gir1u8jbrg" path="res://stages/3d_scenes/cockpit_scene/holo_content.tscn" id="7_f7ho8"]
|
||||||
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="8_f5peh"]
|
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="8_f5peh"]
|
||||||
[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="9_2kujw"]
|
[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="9_2kujw"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cm5b7w7j6527f" path="res://stages/title_screen/planet_3d.tscn" id="12_stoj6"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://bsgmxvuphn73c" path="res://common/icons/arrow-narrow-down.svg" id="13_5d7hc"]
|
[ext_resource type="Texture2D" uid="uid://bsgmxvuphn73c" path="res://common/icons/arrow-narrow-down.svg" id="13_5d7hc"]
|
||||||
[ext_resource type="PackedScene" uid="uid://crbjmwumboelw" path="res://gui/game/inventory_gui/inventory_3d.tscn" id="17_inbnt"]
|
[ext_resource type="PackedScene" uid="uid://crbjmwumboelw" path="res://gui/game/inventory_gui/inventory_3d.tscn" id="17_inbnt"]
|
||||||
[ext_resource type="Script" uid="uid://bq7admu4ahs5r" path="res://entities/player/inventory/scripts/item.gd" id="18_qm808"]
|
[ext_resource type="Script" uid="uid://bq7admu4ahs5r" path="res://entities/player/inventory/scripts/item.gd" id="18_qm808"]
|
||||||
[ext_resource type="Script" uid="uid://fnu2d6wna4yc" path="res://entities/player/inventory/scripts/inventory.gd" id="19_kh1yg"]
|
[ext_resource type="Script" uid="uid://fnu2d6wna4yc" path="res://entities/player/inventory/scripts/inventory.gd" id="19_kh1yg"]
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_f7ho8"]
|
|
||||||
script = ExtResource("4_v8ur5")
|
|
||||||
metadata/_custom_type_script = "uid://3o33x8mesgrn"
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_inbnt"]
|
|
||||||
script = ExtResource("4_2d2u0")
|
|
||||||
region_name = "Uwoqos"
|
|
||||||
region_seed = 1461307588
|
|
||||||
modifiers = Array[ExtResource("3_xy0a5")]([SubResource("Resource_f7ho8")])
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_qm808"]
|
|
||||||
script = ExtResource("5_v8ur5")
|
|
||||||
region_parameter = SubResource("Resource_inbnt")
|
|
||||||
position = 0.00886304526180577
|
|
||||||
metadata/_custom_type_script = "uid://b4eimt3v08jhc"
|
|
||||||
|
|
||||||
[sub_resource type="ViewportTexture" id="ViewportTexture_cvt2p"]
|
[sub_resource type="ViewportTexture" id="ViewportTexture_cvt2p"]
|
||||||
viewport_path = NodePath("DestinationScreen/SubViewport")
|
viewport_path = NodePath("Holo/SubViewport")
|
||||||
|
|
||||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_gbmux"]
|
|
||||||
frequency = 1.0
|
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5d7hc"]
|
|
||||||
transparency = 1
|
|
||||||
shading_mode = 0
|
|
||||||
albedo_color = Color(0.8566341, 0.5852838, 1.1551381e-06, 0.6431373)
|
|
||||||
|
|
||||||
[sub_resource type="ViewportTexture" id="ViewportTexture_5d7hc"]
|
[sub_resource type="ViewportTexture" id="ViewportTexture_5d7hc"]
|
||||||
viewport_path = NodePath("StatusScreen/SubViewport")
|
viewport_path = NodePath("StatusScreen/SubViewport")
|
||||||
@@ -205,77 +176,46 @@ metadata/_custom_type_script = "uid://fnu2d6wna4yc"
|
|||||||
[node name="Dashboard" type="Node3D" unique_id=1374334508]
|
[node name="Dashboard" type="Node3D" unique_id=1374334508]
|
||||||
script = ExtResource("1_2q8cl")
|
script = ExtResource("1_2q8cl")
|
||||||
main_screen_icon = ExtResource("2_vlkbw")
|
main_screen_icon = ExtResource("2_vlkbw")
|
||||||
main_screen_label = "Take Off"
|
main_screen_text = null
|
||||||
destination_label = "South"
|
stop_name = null
|
||||||
destination_title_label = "DESTINATION"
|
stop_title = null
|
||||||
left_destination = SubResource("Resource_qm808")
|
destination_title = "TO_BOREA_BASE"
|
||||||
right_destination = SubResource("Resource_qm808")
|
|
||||||
|
|
||||||
[node name="DestinationScreen" type="Sprite3D" parent="." unique_id=1067303692]
|
[node name="Holo" type="Sprite3D" parent="." unique_id=1067303692]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1.0000002, 0, 8.742278e-08, 0, -1, 0, 0.76403993, 0.9382038)
|
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1.0000002, 0, 8.742278e-08, 0, -1, 0, 0.83082896, 0.33655214)
|
||||||
pixel_size = 0.002
|
pixel_size = 0.004
|
||||||
texture = SubResource("ViewportTexture_cvt2p")
|
texture = SubResource("ViewportTexture_cvt2p")
|
||||||
|
|
||||||
[node name="Planet3dHolo" parent="DestinationScreen" unique_id=866166298 instance=ExtResource("12_stoj6")]
|
[node name="SubViewport" type="SubViewport" parent="Holo" unique_id=471832787]
|
||||||
transform = Transform3D(-0.1, 0, 8.742278e-09, 0, 0.09999998, 0, -8.742278e-09, 0, -0.1, -1.8938096e-10, 0.24558258, 0.0021662712)
|
|
||||||
radius = 1.0
|
|
||||||
details = 32
|
|
||||||
noise = SubResource("FastNoiseLite_gbmux")
|
|
||||||
height = 0.625
|
|
||||||
terrain_material = SubResource("StandardMaterial3D_5d7hc")
|
|
||||||
water_level = 0.0
|
|
||||||
water_detail = 32
|
|
||||||
|
|
||||||
[node name="Planet3dHoloArrow" type="Sprite3D" parent="DestinationScreen/Planet3dHolo" unique_id=254165077]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
transform = Transform3D(9.996528, -0.1669313, -0.20388591, 0.1532331, 9.977292, -0.65587914, 0.21437156, 0.65252686, 9.976385, 0, 1.6, -1.3)
|
|
||||||
pixel_size = 0.001
|
|
||||||
billboard = 1
|
|
||||||
double_sided = false
|
|
||||||
texture = ExtResource("6_qbi61")
|
|
||||||
|
|
||||||
[node name="SubViewport" type="SubViewport" parent="DestinationScreen" unique_id=471832787]
|
|
||||||
transparent_bg = true
|
transparent_bg = true
|
||||||
size = Vector2i(300, 70)
|
size = Vector2i(365, 68)
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="DestinationScreen/SubViewport" unique_id=599842808]
|
[node name="HoloContent" parent="Holo/SubViewport" unique_id=668915500 instance=ExtResource("7_f7ho8")]
|
||||||
anchors_preset = 15
|
unique_name_in_owner = true
|
||||||
anchor_right = 1.0
|
anchors_preset = 8
|
||||||
anchor_bottom = 1.0
|
anchor_left = 0.5
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
offset_left = -162.0
|
||||||
|
offset_top = -28.0
|
||||||
|
offset_right = 162.0
|
||||||
|
offset_bottom = 28.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
size_flags_horizontal = 4
|
stop_name = ""
|
||||||
size_flags_vertical = 4
|
|
||||||
theme_override_constants/separation = -10
|
|
||||||
alignment = 1
|
|
||||||
|
|
||||||
[node name="DestinationTitleLabel" type="Label" parent="DestinationScreen/SubViewport/VBoxContainer" unique_id=1315386326]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
layout_mode = 2
|
|
||||||
text = "DESTINATION"
|
|
||||||
label_settings = ExtResource("1_sp2xx")
|
|
||||||
horizontal_alignment = 1
|
|
||||||
vertical_alignment = 1
|
|
||||||
|
|
||||||
[node name="DestinationLabel" type="Label" parent="DestinationScreen/SubViewport/VBoxContainer" unique_id=348899780]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
layout_mode = 2
|
|
||||||
text = "South"
|
|
||||||
label_settings = ExtResource("1_sp2xx")
|
|
||||||
horizontal_alignment = 1
|
|
||||||
vertical_alignment = 1
|
|
||||||
|
|
||||||
[node name="StatusScreen" type="Sprite3D" parent="." unique_id=1257606535]
|
[node name="StatusScreen" type="Sprite3D" parent="." unique_id=1257606535]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1.0000002, 0, 8.742278e-08, 0, -1, 0, 0.8631269, 0.18221188)
|
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1.0000002, 0, 8.742278e-08, 0, -1, 0, 1.0703605, 0.35432142)
|
||||||
modulate = Color(1, 0, 0.43137255, 1)
|
modulate = Color(1, 0, 0.43137255, 1)
|
||||||
pixel_size = 0.003
|
pixel_size = 0.003
|
||||||
texture = SubResource("ViewportTexture_5d7hc")
|
texture = SubResource("ViewportTexture_5d7hc")
|
||||||
|
|
||||||
[node name="SubViewport" type="SubViewport" parent="StatusScreen" unique_id=1357189828]
|
[node name="SubViewport" type="SubViewport" parent="StatusScreen" unique_id=1357189828]
|
||||||
transparent_bg = true
|
transparent_bg = true
|
||||||
size = Vector2i(500, 70)
|
size = Vector2i(435, 98)
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="StatusScreen/SubViewport" unique_id=2076282975]
|
[node name="VBoxContainer" type="VBoxContainer" parent="StatusScreen/SubViewport" unique_id=2076282975]
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
@@ -291,9 +231,11 @@ alignment = 1
|
|||||||
[node name="StatusLabel" type="Label" parent="StatusScreen/SubViewport/VBoxContainer" unique_id=86551380]
|
[node name="StatusLabel" type="Label" parent="StatusScreen/SubViewport/VBoxContainer" unique_id=86551380]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
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("1_sp2xx")
|
label_settings = ExtResource("1_sp2xx")
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_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("hover_animation_player")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
@@ -367,7 +309,7 @@ texture = SubResource("ViewportTexture_2ofl5")
|
|||||||
|
|
||||||
[node name="SubViewport" type="SubViewport" parent="RightScreen/RightScreenAction" unique_id=837587699]
|
[node name="SubViewport" type="SubViewport" parent="RightScreen/RightScreenAction" unique_id=837587699]
|
||||||
transparent_bg = true
|
transparent_bg = true
|
||||||
size = Vector2i(150, 150)
|
size = Vector2i(150, 180)
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="RightScreen/RightScreenAction/SubViewport" unique_id=536772063]
|
[node name="VBoxContainer" type="VBoxContainer" parent="RightScreen/RightScreenAction/SubViewport" unique_id=536772063]
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
@@ -391,10 +333,11 @@ stretch_mode = 5
|
|||||||
[node name="RightScreenActionLabel" type="Label" parent="RightScreen/RightScreenAction/SubViewport/VBoxContainer" unique_id=2019588267]
|
[node name="RightScreenActionLabel" type="Label" parent="RightScreen/RightScreenAction/SubViewport/VBoxContainer" unique_id=2019588267]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Uwoqos"
|
text = "Uwoqos Uwoqos "
|
||||||
label_settings = ExtResource("1_sp2xx")
|
label_settings = ExtResource("1_sp2xx")
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
|
autowrap_mode = 3
|
||||||
|
|
||||||
[node name="RightScreenStats" type="Sprite3D" parent="RightScreen" unique_id=282782621]
|
[node name="RightScreenStats" type="Sprite3D" parent="RightScreen" unique_id=282782621]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
@@ -524,7 +467,7 @@ texture = SubResource("ViewportTexture_2kujw")
|
|||||||
|
|
||||||
[node name="SubViewport" type="SubViewport" parent="LeftScreen/LeftScreenAction" unique_id=1596245800]
|
[node name="SubViewport" type="SubViewport" parent="LeftScreen/LeftScreenAction" unique_id=1596245800]
|
||||||
transparent_bg = true
|
transparent_bg = true
|
||||||
size = Vector2i(150, 150)
|
size = Vector2i(150, 180)
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="LeftScreen/LeftScreenAction/SubViewport" unique_id=306736368]
|
[node name="VBoxContainer" type="VBoxContainer" parent="LeftScreen/LeftScreenAction/SubViewport" unique_id=306736368]
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
@@ -548,10 +491,11 @@ stretch_mode = 5
|
|||||||
[node name="LeftScreenActionLabel" type="Label" parent="LeftScreen/LeftScreenAction/SubViewport/VBoxContainer" unique_id=1631525309]
|
[node name="LeftScreenActionLabel" type="Label" parent="LeftScreen/LeftScreenAction/SubViewport/VBoxContainer" unique_id=1631525309]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Ujuqyt"
|
text = "Ujuqyt Ujuqyt"
|
||||||
label_settings = ExtResource("1_sp2xx")
|
label_settings = ExtResource("1_sp2xx")
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
|
autowrap_mode = 3
|
||||||
|
|
||||||
[node name="LeftScreenStats" type="Sprite3D" parent="LeftScreen" unique_id=2023558675]
|
[node name="LeftScreenStats" type="Sprite3D" parent="LeftScreen" unique_id=2023558675]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|||||||
81
stages/3d_scenes/cockpit_scene/holo_content.tscn
Normal file
81
stages/3d_scenes/cockpit_scene/holo_content.tscn
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
[gd_scene format=3 uid="uid://cs5gir1u8jbrg"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://d1t0br6cacipb" path="res://stages/3d_scenes/cockpit_scene/scripts/holo_content.gd" id="1_30o21"]
|
||||||
|
[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="1_bw0fn"]
|
||||||
|
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="1_wkgid"]
|
||||||
|
|
||||||
|
[sub_resource type="LabelSettings" id="LabelSettings_30o21"]
|
||||||
|
font = ExtResource("1_wkgid")
|
||||||
|
font_size = 37
|
||||||
|
|
||||||
|
[sub_resource type="LabelSettings" id="LabelSettings_xsjq0"]
|
||||||
|
font = ExtResource("1_wkgid")
|
||||||
|
font_size = 12
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxLine" id="StyleBoxLine_f7ho8"]
|
||||||
|
color = Color(1, 1, 1, 1)
|
||||||
|
thickness = 2
|
||||||
|
vertical = true
|
||||||
|
|
||||||
|
[sub_resource type="LabelSettings" id="LabelSettings_rc8f3"]
|
||||||
|
font = ExtResource("1_wkgid")
|
||||||
|
font_size = 20
|
||||||
|
|
||||||
|
[sub_resource type="LabelSettings" id="LabelSettings_m4m7o"]
|
||||||
|
font = ExtResource("1_wkgid")
|
||||||
|
font_size = 15
|
||||||
|
|
||||||
|
[node name="HoloContent" type="HBoxContainer" unique_id=668915500]
|
||||||
|
offset_right = 40.0
|
||||||
|
offset_bottom = 40.0
|
||||||
|
alignment = 1
|
||||||
|
script = ExtResource("1_30o21")
|
||||||
|
distance = 0
|
||||||
|
stop_name = "Blatava"
|
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=1324145322]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_constants/separation = -2
|
||||||
|
alignment = 1
|
||||||
|
|
||||||
|
[node name="DistanceLabel" type="Label" parent="VBoxContainer" unique_id=414512188]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 4
|
||||||
|
text = "0"
|
||||||
|
label_settings = SubResource("LabelSettings_30o21")
|
||||||
|
|
||||||
|
[node name="DistanceTitleLabel" type="Label" parent="VBoxContainer" unique_id=216163419]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 4
|
||||||
|
text = "Jusqu'à la Base Boréa"
|
||||||
|
label_settings = SubResource("LabelSettings_xsjq0")
|
||||||
|
|
||||||
|
[node name="VSeparator" type="VSeparator" parent="." unique_id=124655802]
|
||||||
|
layout_mode = 2
|
||||||
|
theme = ExtResource("1_bw0fn")
|
||||||
|
theme_override_styles/separator = SubResource("StyleBoxLine_f7ho8")
|
||||||
|
|
||||||
|
[node name="DetailsContainer" type="VBoxContainer" parent="." unique_id=597548757]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 4
|
||||||
|
size_flags_vertical = 4
|
||||||
|
theme_override_constants/separation = 2
|
||||||
|
alignment = 1
|
||||||
|
|
||||||
|
[node name="NextStopTitleLabel" type="Label" parent="DetailsContainer" unique_id=578206390]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
text = "Prochain arrêt"
|
||||||
|
label_settings = SubResource("LabelSettings_rc8f3")
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
[node name="NextStopLabel" type="Label" parent="DetailsContainer" unique_id=1819876983]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
text = "Blatava"
|
||||||
|
label_settings = SubResource("LabelSettings_m4m7o")
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
@@ -30,6 +30,7 @@ func _ready():
|
|||||||
dashboard.left_screen_activated.connect(_on_left_screen_activated)
|
dashboard.left_screen_activated.connect(_on_left_screen_activated)
|
||||||
dashboard.right_screen_activated.connect(_on_right_screen_activated)
|
dashboard.right_screen_activated.connect(_on_right_screen_activated)
|
||||||
%Exit.clicked.connect(_on_exit_clicked)
|
%Exit.clicked.connect(_on_exit_clicked)
|
||||||
|
%Exit.interactable = can_exit()
|
||||||
|
|
||||||
handle_dialogs()
|
handle_dialogs()
|
||||||
|
|
||||||
@@ -58,20 +59,26 @@ func move_to_choosen_run_point():
|
|||||||
GameInfo.game_data.current_run.choose_next_run_point(choosen_run_point)
|
GameInfo.game_data.current_run.choose_next_run_point(choosen_run_point)
|
||||||
%Gauge3D.progress = 0.
|
%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
|
||||||
|
)
|
||||||
|
|
||||||
func _on_main_screen_activated():
|
func _on_main_screen_activated():
|
||||||
if GameInfo.game_data.ship_in_space:
|
if GameInfo.game_data.ship_in_space:
|
||||||
if GameInfo.game_data.current_run and choosen_run_point:
|
if GameInfo.game_data.current_run and choosen_run_point:
|
||||||
move_to_choosen_run_point()
|
move_to_choosen_run_point()
|
||||||
land.emit()
|
land.emit()
|
||||||
%Exit.interactable = GameInfo.game_data.current_region_data != null
|
|
||||||
GameInfo.game_data.ship_in_space = false
|
GameInfo.game_data.ship_in_space = false
|
||||||
else :
|
else :
|
||||||
take_off.emit()
|
take_off.emit()
|
||||||
%Exit.interactable = false
|
|
||||||
GameInfo.game_data.ship_in_space = true
|
GameInfo.game_data.ship_in_space = true
|
||||||
if GameInfo.game_data.current_run == null:
|
if GameInfo.game_data.current_run == null:
|
||||||
GameInfo.game_data.start_run()
|
GameInfo.game_data.start_run()
|
||||||
GameInfo.game_data.player_data.energy = GameInfo.game_data.player_data.max_energy
|
GameInfo.game_data.player_data.energy = GameInfo.game_data.player_data.max_energy
|
||||||
|
%Exit.interactable = can_exit()
|
||||||
update_dashboard()
|
update_dashboard()
|
||||||
|
|
||||||
func _on_left_screen_activated():
|
func _on_left_screen_activated():
|
||||||
@@ -88,12 +95,19 @@ func _on_right_screen_activated():
|
|||||||
|
|
||||||
func _on_exit_clicked():
|
func _on_exit_clicked():
|
||||||
AudioManager.play_sfx("Ship_exit")
|
AudioManager.play_sfx("Ship_exit")
|
||||||
if not GameInfo.game_data.ship_in_space and GameInfo.game_data.current_region_data != null:
|
if (can_exit()):
|
||||||
SceneManager.change_to_scene_id('REGION')
|
SceneManager.change_to_scene_id('REGION')
|
||||||
|
|
||||||
func update_dashboard():
|
func update_dashboard():
|
||||||
|
|
||||||
var current_region_data = GameInfo.game_data.current_region_data
|
var current_region_data = GameInfo.game_data.current_region_data
|
||||||
|
|
||||||
|
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"
|
||||||
|
|
||||||
var current_run = GameInfo.game_data.current_run
|
var current_run = GameInfo.game_data.current_run
|
||||||
|
|
||||||
var can_take_off : bool = (
|
var can_take_off : bool = (
|
||||||
@@ -106,43 +120,40 @@ func update_dashboard():
|
|||||||
|
|
||||||
if GameInfo.game_data.ship_in_space:
|
if GameInfo.game_data.ship_in_space:
|
||||||
dashboard.main_screen_icon = LAND_ICON
|
dashboard.main_screen_icon = LAND_ICON
|
||||||
dashboard.main_screen_label = tr("LAND_SHIP")
|
dashboard.main_screen_text = tr("LAND_SHIP")
|
||||||
dashboard.main_screen_interactable = choosen_run_point != null or GameInfo.game_data.current_run == null
|
dashboard.main_screen_interactable = choosen_run_point != null
|
||||||
|
|
||||||
dashboard.destination_visible = choosen_run_point != null
|
|
||||||
if choosen_run_point:
|
if choosen_run_point:
|
||||||
dashboard.destination_title_label = tr("DESTINATION")
|
dashboard.stop_title = tr("NEXT_STOP")
|
||||||
dashboard.destination_longitude = float(choosen_run_point.level) / RunData.RUN_POINT_MAX_LEVEL
|
dashboard.stop_name = choosen_run_point.region_parameter.region_name
|
||||||
dashboard.destination_label = choosen_run_point.region_parameter.region_name
|
|
||||||
dashboard.status_text = ""
|
dashboard.status_text = ""
|
||||||
else:
|
else:
|
||||||
dashboard.status_text = tr("CHOOSE_DESTINATION")
|
dashboard.stop_title = tr("LOCATION")
|
||||||
|
dashboard.stop_name = tr("ORBIT")
|
||||||
|
dashboard.status_text = tr("CHOOSE_NEXT_STOP")
|
||||||
|
dashboard.stop_name = ""
|
||||||
|
|
||||||
if GameInfo.game_data.current_run:
|
if GameInfo.game_data.current_run:
|
||||||
var next_run_points = GameInfo.game_data.current_run.next_run_points
|
var next_run_points = GameInfo.game_data.current_run.next_run_points
|
||||||
if len(next_run_points) > 0:
|
if len(next_run_points) > 0:
|
||||||
dashboard.left_destination = next_run_points[0]
|
dashboard.left_stop = next_run_points[0]
|
||||||
else:
|
else:
|
||||||
dashboard.left_destination = null
|
dashboard.left_stop = null
|
||||||
|
|
||||||
if len(next_run_points) > 1:
|
if len(next_run_points) > 1:
|
||||||
dashboard.right_destination = next_run_points[1]
|
dashboard.right_stop = next_run_points[1]
|
||||||
else:
|
else:
|
||||||
dashboard.right_destination = null
|
dashboard.right_stop = null
|
||||||
else :
|
else :
|
||||||
|
|
||||||
dashboard.destination_visible = false
|
|
||||||
dashboard.main_screen_icon = TAKE_OFF_ICON
|
dashboard.main_screen_icon = TAKE_OFF_ICON
|
||||||
dashboard.main_screen_label = tr("TAKE_OFF")
|
dashboard.main_screen_text = tr("TAKE_OFF")
|
||||||
dashboard.main_screen_interactable = can_take_off
|
dashboard.main_screen_interactable = can_take_off
|
||||||
|
|
||||||
dashboard.left_destination = null
|
dashboard.left_stop = null
|
||||||
dashboard.right_destination = null
|
dashboard.right_stop = null
|
||||||
|
|
||||||
dashboard.destination_visible = current_region_data != null
|
|
||||||
if current_region_data:
|
if current_region_data:
|
||||||
dashboard.destination_title_label = tr("LOCATION")
|
dashboard.stop_title = tr("LOCATION")
|
||||||
dashboard.destination_label = current_region_data.region_name
|
dashboard.stop_name = current_region_data.region_name
|
||||||
dashboard.destination_longitude = float(current_region_data.region_level) / RunData.RUN_POINT_MAX_LEVEL
|
|
||||||
|
|
||||||
dashboard.status_text = "" if can_take_off else tr("NO_MORE_ENERGY")
|
dashboard.status_text = "" if can_take_off else tr("NO_MORE_ENERGY")
|
||||||
|
|||||||
@@ -13,19 +13,18 @@ signal right_screen_activated
|
|||||||
signal left_screen_activated
|
signal left_screen_activated
|
||||||
|
|
||||||
@export var main_screen_icon : Texture : set = set_main_screen_icon
|
@export var main_screen_icon : Texture : set = set_main_screen_icon
|
||||||
@export var main_screen_label : String : set = set_main_screen_label
|
@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_interactable : bool : set = set_main_screen_interactable
|
||||||
|
|
||||||
@export var destination_label : String : set = set_destination_label
|
@export var stop_name : String : set = set_stop_label
|
||||||
@export var destination_title_label : String : set = set_destination_title_label
|
@export var stop_title : String : set = set_stop_title_label
|
||||||
@export var destination_visible : bool : set = set_destination_visible
|
@export var destination_distance : int
|
||||||
|
@export var destination_title : String : set = set_destination_title
|
||||||
@export var destination_longitude : float : set = set_destination_longitude
|
|
||||||
|
|
||||||
@export var status_text : String : set = set_status_text
|
@export var status_text : String : set = set_status_text
|
||||||
|
|
||||||
@export var left_destination : RunPoint = null : set = set_left_destination
|
@export var left_stop : RunPoint = null : set = set_left_stop
|
||||||
@export var right_destination : RunPoint = null : set = set_right_destination
|
@export var right_stop : RunPoint = null : set = set_right_stop
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
%MainScreen.clicked.connect(func(): main_screen_activated.emit())
|
%MainScreen.clicked.connect(func(): main_screen_activated.emit())
|
||||||
@@ -35,24 +34,30 @@ func _ready():
|
|||||||
set_main_screen_icon()
|
set_main_screen_icon()
|
||||||
set_main_screen_label()
|
set_main_screen_label()
|
||||||
set_main_screen_interactable()
|
set_main_screen_interactable()
|
||||||
set_destination_label()
|
set_stop_label()
|
||||||
set_destination_title_label()
|
set_stop_title_label()
|
||||||
set_destination_visible()
|
set_destination_title()
|
||||||
set_destination_longitude()
|
|
||||||
set_status_text()
|
set_status_text()
|
||||||
set_left_destination()
|
set_left_stop()
|
||||||
set_right_destination()
|
set_right_stop()
|
||||||
|
%HoloContent.distance = destination_distance
|
||||||
|
|
||||||
if not Engine.is_editor_hint() and GameInfo.game_data.player_data:
|
if not Engine.is_editor_hint() and GameInfo.game_data.player_data:
|
||||||
%Inventory3D.update(GameInfo.game_data.player_data.inventory)
|
%Inventory3D.update(GameInfo.game_data.player_data.inventory)
|
||||||
|
|
||||||
|
func _process(_d):
|
||||||
|
if %HoloContent.distance < destination_distance:
|
||||||
|
%HoloContent.distance = ceili(lerp(float(%HoloContent.distance), float(destination_distance), 0.05))
|
||||||
|
else:
|
||||||
|
%HoloContent.distance = floori(lerp(float(%HoloContent.distance), float(destination_distance), 0.05))
|
||||||
|
|
||||||
func set_main_screen_icon(v : Texture = main_screen_icon):
|
func set_main_screen_icon(v : Texture = main_screen_icon):
|
||||||
main_screen_icon = v
|
main_screen_icon = v
|
||||||
if is_node_ready():
|
if is_node_ready():
|
||||||
%MainScreenIcon.texture = v
|
%MainScreenIcon.texture = v
|
||||||
|
|
||||||
func set_main_screen_label(v : String = main_screen_label):
|
func set_main_screen_label(v : String = main_screen_text):
|
||||||
main_screen_label = v
|
main_screen_text = v
|
||||||
if is_node_ready():
|
if is_node_ready():
|
||||||
%MainScreenLabel.text = v
|
%MainScreenLabel.text = v
|
||||||
|
|
||||||
@@ -62,74 +67,66 @@ func set_main_screen_interactable(v : bool = main_screen_interactable):
|
|||||||
%MainScreenSprite.visible = v
|
%MainScreenSprite.visible = v
|
||||||
%MainScreen.interactable = v
|
%MainScreen.interactable = v
|
||||||
|
|
||||||
func set_destination_label(v := destination_label):
|
func set_stop_label(v := stop_name):
|
||||||
destination_label = v
|
stop_name = v
|
||||||
if is_node_ready():
|
if is_node_ready():
|
||||||
%DestinationLabel.text = v
|
%HoloContent.stop_name = v
|
||||||
|
|
||||||
func set_destination_title_label(v := destination_title_label):
|
func set_stop_title_label(v := stop_title):
|
||||||
destination_title_label = v
|
stop_title = v
|
||||||
if is_node_ready():
|
if is_node_ready():
|
||||||
%DestinationTitleLabel.text = v
|
%HoloContent.stop_title = v
|
||||||
|
|
||||||
func set_destination_visible(v := destination_visible):
|
func set_destination_title(v := destination_title):
|
||||||
destination_visible = v
|
destination_title = v
|
||||||
if is_node_ready():
|
if is_node_ready():
|
||||||
%DestinationScreen.visible = v
|
%HoloContent.distance_title = v
|
||||||
|
|
||||||
func set_destination_longitude(v := destination_longitude):
|
|
||||||
destination_longitude = v
|
|
||||||
if is_node_ready():
|
|
||||||
%Planet3dHoloArrow.position = (
|
|
||||||
Vector3.DOWN * (PLANET_3D_HOLO_RADIUS * 2 * destination_longitude - PLANET_3D_HOLO_RADIUS - PLANET_3D_HOLO_ARROW_SIZE)
|
|
||||||
+ Vector3.FORWARD * PLANET_3D_HOLO_RADIUS
|
|
||||||
)
|
|
||||||
|
|
||||||
func set_status_text(v := status_text):
|
func set_status_text(v := status_text):
|
||||||
status_text = v
|
status_text = v
|
||||||
if is_node_ready():
|
if is_node_ready():
|
||||||
%StatusLabel.text = v
|
%StatusLabel.text = v
|
||||||
|
|
||||||
func set_left_destination(v := left_destination):
|
func set_left_stop(v := left_stop):
|
||||||
left_destination = v
|
left_stop = v
|
||||||
if is_node_ready():
|
if is_node_ready():
|
||||||
%LeftScreenAction.visible = left_destination != null
|
%LeftScreenAction.visible = left_stop != null
|
||||||
%LeftScreen.interactable = left_destination != null
|
%LeftScreen.interactable = left_stop != null
|
||||||
%LeftScreenStats.visible = left_destination != null
|
%LeftScreenStats.visible = left_stop != null
|
||||||
%LeftScreenInfos.visible = left_destination and len(left_destination.region_parameter.modifiers) > 0
|
%LeftScreenInfos.visible = left_stop and len(left_stop.region_parameter.modifiers) > 0
|
||||||
if left_destination:
|
if left_stop:
|
||||||
%LeftScreenActionIcon.texture = LAND_ICON
|
%LeftScreenActionIcon.texture = LAND_ICON
|
||||||
%LeftScreenActionLabel.text = left_destination.region_parameter.get_region_name()
|
%LeftScreenActionLabel.text = left_stop.region_parameter.get_region_name()
|
||||||
|
|
||||||
%LeftScreenStat1Icon.texture = GROWTH_ICON
|
%LeftScreenStat1Icon.texture = GROWTH_ICON
|
||||||
%LeftScreenStat1Label.text = str(left_destination.region_parameter.get_objective())
|
%LeftScreenStat1Label.text = str(left_stop.region_parameter.get_objective())
|
||||||
|
|
||||||
%LeftScreenStat2Icon.texture = CHARGE_ICON
|
%LeftScreenStat2Icon.texture = CHARGE_ICON
|
||||||
%LeftScreenStat2Label.text = str(left_destination.region_parameter.get_charge())
|
%LeftScreenStat2Label.text = str(left_stop.region_parameter.get_charge())
|
||||||
|
|
||||||
if len(left_destination.region_parameter.modifiers) > 0:
|
if len(left_stop.region_parameter.modifiers) > 0:
|
||||||
var modifier : RegionModifier = left_destination.region_parameter.modifiers[0]
|
var modifier : RegionModifier = left_stop.region_parameter.modifiers[0]
|
||||||
%LeftScreenInfoTitle.text = "%s %d" % [ modifier.get_modifier_name(), modifier.level ]
|
%LeftScreenInfoTitle.text = "%s %d" % [ modifier.get_modifier_name(), modifier.level ]
|
||||||
%LeftScreenInfoText.text = modifier.get_description()
|
%LeftScreenInfoText.text = modifier.get_description()
|
||||||
|
|
||||||
func set_right_destination(v := right_destination):
|
func set_right_stop(v := right_stop):
|
||||||
right_destination = v
|
right_stop = v
|
||||||
if is_node_ready():
|
if is_node_ready():
|
||||||
%RightScreenAction.visible = right_destination != null
|
%RightScreenAction.visible = right_stop != null
|
||||||
%RightScreen.interactable = right_destination != null
|
%RightScreen.interactable = right_stop != null
|
||||||
%RightScreenStats.visible = right_destination != null
|
%RightScreenStats.visible = right_stop != null
|
||||||
%RightScreenInfos.visible = right_destination and len(right_destination.region_parameter.modifiers) > 0
|
%RightScreenInfos.visible = right_stop and len(right_stop.region_parameter.modifiers) > 0
|
||||||
if right_destination:
|
if right_stop:
|
||||||
%RightScreenActionIcon.texture = LAND_ICON
|
%RightScreenActionIcon.texture = LAND_ICON
|
||||||
%RightScreenActionLabel.text = right_destination.region_parameter.get_region_name()
|
%RightScreenActionLabel.text = right_stop.region_parameter.get_region_name()
|
||||||
|
|
||||||
%RightScreenStat1Icon.texture = GROWTH_ICON
|
%RightScreenStat1Icon.texture = GROWTH_ICON
|
||||||
%RightScreenStat1Label.text = str(right_destination.region_parameter.get_objective())
|
%RightScreenStat1Label.text = str(right_stop.region_parameter.get_objective())
|
||||||
|
|
||||||
%RightScreenStat2Icon.texture = CHARGE_ICON
|
%RightScreenStat2Icon.texture = CHARGE_ICON
|
||||||
%RightScreenStat2Label.text = str(right_destination.region_parameter.get_charge())
|
%RightScreenStat2Label.text = str(right_stop.region_parameter.get_charge())
|
||||||
|
|
||||||
if len(right_destination.region_parameter.modifiers) > 0:
|
if len(right_stop.region_parameter.modifiers) > 0:
|
||||||
var modifier : RegionModifier = right_destination.region_parameter.modifiers[0]
|
var modifier : RegionModifier = right_stop.region_parameter.modifiers[0]
|
||||||
%RightScreenInfoTitle.text = "%s %d" % [ modifier.get_modifier_name(), modifier.level ]
|
%RightScreenInfoTitle.text = "%s %d" % [ modifier.get_modifier_name(), modifier.level ]
|
||||||
%RightScreenInfoText.text = modifier.get_description()
|
%RightScreenInfoText.text = modifier.get_description()
|
||||||
|
|||||||
39
stages/3d_scenes/cockpit_scene/scripts/holo_content.gd
Normal file
39
stages/3d_scenes/cockpit_scene/scripts/holo_content.gd
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
@tool
|
||||||
|
extends HBoxContainer
|
||||||
|
|
||||||
|
@export var distance : int = 20000 : set = set_distance
|
||||||
|
@export var distance_title : String = "TO_BOREA_BASE" : set = set_distance_title
|
||||||
|
@export var stop_name : String = "" : set = set_stop_name
|
||||||
|
@export var stop_title : String = "NEXT_STOP" : set = set_stop_title
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
set_distance()
|
||||||
|
set_stop_name()
|
||||||
|
set_stop_title()
|
||||||
|
|
||||||
|
func set_distance(v : int = distance):
|
||||||
|
distance = v
|
||||||
|
if is_node_ready():
|
||||||
|
var str_distance = str(distance)
|
||||||
|
var nb_len = len(str_distance)
|
||||||
|
var shift = 0
|
||||||
|
for i in range(nb_len):
|
||||||
|
if i%3 == 0:
|
||||||
|
shift += 1
|
||||||
|
str_distance = str_distance.insert(len(str_distance) - i - 2 - shift," ")
|
||||||
|
%DistanceLabel.text = str_distance
|
||||||
|
|
||||||
|
func set_stop_name(v : String = stop_name):
|
||||||
|
stop_name = v
|
||||||
|
if is_node_ready():
|
||||||
|
%NextStopLabel.text = tr(str(v))
|
||||||
|
|
||||||
|
func set_stop_title(v : String = stop_title):
|
||||||
|
stop_title = v
|
||||||
|
if is_node_ready():
|
||||||
|
%NextStopTitleLabel.text = tr(str(v))
|
||||||
|
|
||||||
|
func set_distance_title(v : String = distance_title):
|
||||||
|
distance_title = v
|
||||||
|
if is_node_ready():
|
||||||
|
%DistanceTitleLabel.text = tr(str(v))
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://d1t0br6cacipb
|
||||||
@@ -115,14 +115,16 @@ camera = NodePath("../../Camera")
|
|||||||
|
|
||||||
[node name="PassDay" parent="." unique_id=1144772570 instance=ExtResource("3_ktnx3")]
|
[node name="PassDay" parent="." unique_id=1144772570 instance=ExtResource("3_ktnx3")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
visible = false
|
||||||
|
|
||||||
[node name="RegionGui" type="CanvasLayer" parent="." unique_id=2024485651]
|
[node name="RegionGui" type="CanvasLayer" parent="." unique_id=2024485651]
|
||||||
layer = 2
|
layer = 2
|
||||||
|
|
||||||
[node name="Tutorial" parent="RegionGui" unique_id=762436685 node_paths=PackedStringArray("player", "region") instance=ExtResource("2_2f6js")]
|
[node name="Tutorial" parent="RegionGui" unique_id=762436685 node_paths=PackedStringArray("player", "region", "game_gui") instance=ExtResource("2_2f6js")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
player = NodePath("../../Entities/Player")
|
player = NodePath("../../Entities/Player")
|
||||||
region = NodePath("../..")
|
region = NodePath("../..")
|
||||||
|
game_gui = NodePath("../../GameGui")
|
||||||
|
|
||||||
[node name="GameGui" parent="." unique_id=1970837239 instance=ExtResource("4_qdnee")]
|
[node name="GameGui" parent="." unique_id=1970837239 instance=ExtResource("4_qdnee")]
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,13 @@ const GENERATION_NUMBER = 4
|
|||||||
|
|
||||||
const NOISE_IMAGE_SIZE := 150
|
const NOISE_IMAGE_SIZE := 150
|
||||||
|
|
||||||
const MAX_DECONTAMINATION_DISTANCE=2
|
const MAX_DECONTAMINATION_DISTANCE=0
|
||||||
const MAX_TALION_DISTANCE=3
|
const MAX_TALION_DISTANCE=2
|
||||||
|
|
||||||
const RANDOM_PADDING_NOISE_FREQUENCY := 0.01
|
const RANDOM_PADDING_NOISE_FREQUENCY := 0.01
|
||||||
const ROCK_NOISE_FREQUENCY := 0.01
|
const ROCK_NOISE_FREQUENCY := 0.005
|
||||||
const DECONTAMINATION_NOISE_FREQUENCY := 0.01
|
const CRISTAL_NOISE_FREQUENCY := 0.008
|
||||||
|
const DECONTAMINATION_NOISE_FREQUENCY := 0.008
|
||||||
|
|
||||||
const CHUNK_RANDOM_PADDING := 2
|
const CHUNK_RANDOM_PADDING := 2
|
||||||
|
|
||||||
@@ -71,7 +72,7 @@ func setup_position():
|
|||||||
func generate():
|
func generate():
|
||||||
rock_noise_image = generate_noise(region_data.region_seed + 1, ROCK_NOISE_FREQUENCY)
|
rock_noise_image = generate_noise(region_data.region_seed + 1, ROCK_NOISE_FREQUENCY)
|
||||||
decontamination_noise_image = generate_noise(region_data.region_seed + 2, DECONTAMINATION_NOISE_FREQUENCY)
|
decontamination_noise_image = generate_noise(region_data.region_seed + 2, DECONTAMINATION_NOISE_FREQUENCY)
|
||||||
cristal_noise_image = generate_noise(region_data.region_seed + 3, ROCK_NOISE_FREQUENCY)
|
cristal_noise_image = generate_noise(region_data.region_seed + 3, CRISTAL_NOISE_FREQUENCY)
|
||||||
random_padding_noise = generate_noise(region_data.region_seed + 10, RANDOM_PADDING_NOISE_FREQUENCY)
|
random_padding_noise = generate_noise(region_data.region_seed + 10, RANDOM_PADDING_NOISE_FREQUENCY)
|
||||||
|
|
||||||
all_tiles = calculate_all_tiles()
|
all_tiles = calculate_all_tiles()
|
||||||
@@ -169,7 +170,7 @@ func generate_noise(
|
|||||||
var noise: FastNoiseLite = FastNoiseLite.new()
|
var noise: FastNoiseLite = FastNoiseLite.new()
|
||||||
noise.seed = noise_seed
|
noise.seed = noise_seed
|
||||||
noise.noise_type = FastNoiseLite.TYPE_SIMPLEX
|
noise.noise_type = FastNoiseLite.TYPE_SIMPLEX
|
||||||
noise.frequency = 0.01
|
noise.frequency = frequency
|
||||||
noise.fractal_type = FastNoiseLite.FRACTAL_NONE
|
noise.fractal_type = FastNoiseLite.FRACTAL_NONE
|
||||||
noise.fractal_weighted_strength = 1.0
|
noise.fractal_weighted_strength = 1.0
|
||||||
noise.offset = Vector3(
|
noise.offset = Vector3(
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ func get_description() -> String:
|
|||||||
return tr("ARID_MODIFIER_DESC_TEXT")
|
return tr("ARID_MODIFIER_DESC_TEXT")
|
||||||
|
|
||||||
func modify_decontamination_threshold(decontamination_threshold : float) -> float:
|
func modify_decontamination_threshold(decontamination_threshold : float) -> float:
|
||||||
return decontamination_threshold * (1. - 0.2*level)
|
return decontamination_threshold * (0.5)
|
||||||
|
|
||||||
func modify_start_decontamination_zone_radius(start_decontamination_zone_radius : int) -> int:
|
func modify_start_decontamination_zone_radius(start_decontamination_zone_radius : int) -> int:
|
||||||
return max(1,roundi(start_decontamination_zone_radius * (1. - 0.2*level)))
|
return max(1,roundi(start_decontamination_zone_radius * (0.5)))
|
||||||
@@ -8,4 +8,4 @@ func get_description() -> String:
|
|||||||
return tr("HARSH_MODIFIER_DESC_TEXT")
|
return tr("HARSH_MODIFIER_DESC_TEXT")
|
||||||
|
|
||||||
func modify_objective(objective : int) -> int:
|
func modify_objective(objective : int) -> int:
|
||||||
return roundi(objective * (1. + 0.2*level))
|
return roundi(objective * 1.5)
|
||||||
@@ -8,4 +8,4 @@ func get_description() -> String:
|
|||||||
return tr("HUMID_MODIFIER_DESC_TEXT")
|
return tr("HUMID_MODIFIER_DESC_TEXT")
|
||||||
|
|
||||||
func modify_charge(charge : int) -> int:
|
func modify_charge(charge : int) -> int:
|
||||||
return charge - level
|
return charge - 2
|
||||||
@@ -8,4 +8,4 @@ func get_description() -> String:
|
|||||||
return tr("POOR_MODIFIER_DESC_TEXT")
|
return tr("POOR_MODIFIER_DESC_TEXT")
|
||||||
|
|
||||||
func modify_cristal_threshold(cristal_threshold : float) -> float:
|
func modify_cristal_threshold(cristal_threshold : float) -> float:
|
||||||
return cristal_threshold * (1. - 0.2*level)
|
return cristal_threshold * 0.5
|
||||||
@@ -10,10 +10,10 @@ const TILE_SCALE = 1
|
|||||||
const TILE_SIZE : int = roundi(TILE_SET.tile_size.x * TILE_SCALE)
|
const TILE_SIZE : int = roundi(TILE_SET.tile_size.x * TILE_SCALE)
|
||||||
const SPAWN_OBJECT_RANDOM_MOVEMENT = 200
|
const SPAWN_OBJECT_RANDOM_MOVEMENT = 200
|
||||||
|
|
||||||
const CHUNK_TILE_SIZE : int = 20
|
const CHUNK_TILE_SIZE : int = 10
|
||||||
const CHUNK_SIZE = CHUNK_TILE_SIZE * TILE_SIZE
|
const CHUNK_SIZE = CHUNK_TILE_SIZE * TILE_SIZE
|
||||||
const CHUNK_LOAD_DISTANCE : int = 1
|
const CHUNK_LOAD_DISTANCE : int = 2
|
||||||
const CHUNK_UNLOAD_DISTANCE : int = 2
|
const CHUNK_UNLOAD_DISTANCE : int = 3
|
||||||
|
|
||||||
const MAX_GENERATION_THREAD = 1 # Crash when superior to 1
|
const MAX_GENERATION_THREAD = 1 # Crash when superior to 1
|
||||||
|
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ extends Resource
|
|||||||
class_name RegionParameter
|
class_name RegionParameter
|
||||||
|
|
||||||
const DEFAULT_ROCK_THRESHOLD = 0.3
|
const DEFAULT_ROCK_THRESHOLD = 0.3
|
||||||
const DEFAULT_DECONTAMINATION_THRESHOLD = 0.15
|
const DEFAULT_DECONTAMINATION_THRESHOLD = 0.4
|
||||||
const DEFAULT_CRISTAL_THRESHOLD = 0.06
|
const DEFAULT_CRISTAL_THRESHOLD = 0.1
|
||||||
const DEFAULT_CHARGE = 10
|
const DEFAULT_CHARGE = 8
|
||||||
const DEFAULT_START_DECONTAMINATION_ZONE_RADIUS = 3
|
const DEFAULT_START_DECONTAMINATION_ZONE_RADIUS = 3
|
||||||
|
|
||||||
@export var region_name : String
|
@export var region_name : String
|
||||||
@@ -14,7 +14,14 @@ const DEFAULT_START_DECONTAMINATION_ZONE_RADIUS = 3
|
|||||||
@export var modifiers : Array[RegionModifier]
|
@export var modifiers : Array[RegionModifier]
|
||||||
|
|
||||||
static func get_objective_by_level(l : int) -> int:
|
static func get_objective_by_level(l : int) -> int:
|
||||||
return 10 + 5 * l
|
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
|
||||||
|
|
||||||
func _init(
|
func _init(
|
||||||
_level = 0,
|
_level = 0,
|
||||||
|
|||||||
@@ -23,6 +23,12 @@ rock_tiles_data = SubResource("Resource_ame7t")
|
|||||||
decontamination_tiles_data = SubResource("Resource_0rtv3")
|
decontamination_tiles_data = SubResource("Resource_0rtv3")
|
||||||
metadata/_custom_type_script = "uid://cx30nvq8b34lj"
|
metadata/_custom_type_script = "uid://cx30nvq8b34lj"
|
||||||
|
|
||||||
|
[sub_resource type="FastNoiseLite" id="FastNoiseLite_ct7cr"]
|
||||||
|
frequency = 0.0071
|
||||||
|
|
||||||
|
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_0rtv3"]
|
||||||
|
noise = SubResource("FastNoiseLite_ct7cr")
|
||||||
|
|
||||||
[node name="TestChunk" type="Node2D" unique_id=990498648]
|
[node name="TestChunk" type="Node2D" unique_id=990498648]
|
||||||
|
|
||||||
[node name="Chunk" type="Node2D" parent="." unique_id=709095052]
|
[node name="Chunk" type="Node2D" parent="." unique_id=709095052]
|
||||||
@@ -50,3 +56,6 @@ script = ExtResource("1_mhr83")
|
|||||||
region_data = SubResource("Resource_tiw8g")
|
region_data = SubResource("Resource_tiw8g")
|
||||||
chunk_coord = Vector2i(1, 1)
|
chunk_coord = Vector2i(1, 1)
|
||||||
metadata/_custom_type_script = "uid://d2ixbaa2uqlv4"
|
metadata/_custom_type_script = "uid://d2ixbaa2uqlv4"
|
||||||
|
|
||||||
|
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1962434767]
|
||||||
|
texture = SubResource("NoiseTexture2D_0rtv3")
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ PURE_EFFECT_TEXT,Multiplies {score_icon} by [b]{score_multiplier}[/b] if the all
|
|||||||
GENEROUS,Generous,Généreux
|
GENEROUS,Generous,Généreux
|
||||||
GENEROUS_EFFECT_TEXT,"When mature, add [b]{score_buff}[/b]{score_icon} to all nearby plants, but no longer make point","Si mature, ajoute [b]{score_buff}[/b]{score_icon} à toutes les plantes à proximité, mais ne génère plus de points"
|
GENEROUS_EFFECT_TEXT,"When mature, add [b]{score_buff}[/b]{score_icon} to all nearby plants, but no longer make point","Si mature, ajoute [b]{score_buff}[/b]{score_icon} à toutes les plantes à proximité, mais ne génère plus de points"
|
||||||
PROTECTIVE,Protective,Protecteur
|
PROTECTIVE,Protective,Protecteur
|
||||||
PROTECTIVE_EFFECT_TEXT,"Ajoute [b]{lifetime_buff}[/b]{lifetime_icon} to all nearby plants","Ajoute [b]{lifetime_buff}[/b]{score_icon} à toutes les plantes à proximité, mais ne génère plus de points"
|
PROTECTIVE_EFFECT_TEXT,"Ajoute [b]{lifetime_buff}[/b]{lifetime_icon} to all nearby plants","Ajoute [b]{lifetime_buff}[/b]{lifetime_icon} à toutes les plantes à proximité"
|
||||||
COST_%d_ENERGY,Cost %d energy,Coûte %d d'énergie
|
COST_%d_ENERGY,Cost %d energy,Coûte %d d'énergie
|
||||||
ONE_TIME_USE,Single use,Usage unique
|
ONE_TIME_USE,Single use,Usage unique
|
||||||
BUILD_%s,Build %s,Construit %s
|
BUILD_%s,Build %s,Construit %s
|
||||||
@@ -111,15 +111,16 @@ OPEN,Open,Ouvrir
|
|||||||
PLANT_%s_MUST_BE_USED_IN_DECONTAMINATED_ZONE,Plant [b]%s[/b]. Must be used in the fertile zone.,Plante [b]%s[/b]. Doit être utilisée dans la zone fertile.
|
PLANT_%s_MUST_BE_USED_IN_DECONTAMINATED_ZONE,Plant [b]%s[/b]. Must be used in the fertile zone.,Plante [b]%s[/b]. Doit être utilisée dans la zone fertile.
|
||||||
PLANT_%s,Plant [b]%s[/b],Planter [b]%s[/b]
|
PLANT_%s,Plant [b]%s[/b],Planter [b]%s[/b]
|
||||||
MOVE_WITH_RIGHT_CLICK_OR_WASD,"Move with right click or WASD","Déplace-toi avec le clic droit ou ZQSD"
|
MOVE_WITH_RIGHT_CLICK_OR_WASD,"Move with right click or WASD","Déplace-toi avec le clic droit ou ZQSD"
|
||||||
|
CHANGE_ZOOM_WITH_Z_X,"Change the zoom with Z and X","Changez le zoom avec W et X"
|
||||||
SELECT_ITEM_WITH_SCROLL_CLICK_OR_NUMBER,"Select an item in your toolbar with the mouse wheel or by clicking on it","Sélectionne un item dans ta barre d'outil en utilisant la molette ou en cliquant dessus"
|
SELECT_ITEM_WITH_SCROLL_CLICK_OR_NUMBER,"Select an item in your toolbar with the mouse wheel or by clicking on it","Sélectionne un item dans ta barre d'outil en utilisant la molette ou en cliquant dessus"
|
||||||
LEFT_CLICK_TO_USE_ITEMS,"Use an item with left click","Utilise un item avec le clic gauche"
|
LEFT_CLICK_TO_USE_ITEMS,"Use an item with left click","Utilise un item avec le clic gauche"
|
||||||
DROP_SEED_WITH_KEY,"Drop current item with Q","Lâche l'item sélectionné avec A"
|
DROP_SEED_WITH_KEY,"Drop current item with Q","Lâche l'item sélectionné avec A"
|
||||||
USE_YOUR_DETECTOR_TO_FIND_THE_BATTERY,Use your [b]Detector[/b] to find the [b]Recharge station[/b],Utilise ton [b]Détecteur[/b] pour trouver la [b]Station de recharge[/b]
|
USE_YOUR_DETECTOR_TO_FIND_THE_BATTERY,Use your [b]Detector[/b] to find the [b]Recharge station[/b],Utilise ton [b]Détecteur[/b] pour trouver la [b]Station de recharge[/b]
|
||||||
|
RECHARGE_IN_THE_RECHARGE_STATION,Recharge on the [b]Recharge station[/b] to pass the day,Se recharger sur la [b]Station de recharge[/b] pour passer la journée
|
||||||
TAKE_A_SEED_BY_CLICKING_ON_IT,Take a [b]Seed[/b] by clicking on it,Prend une [b]Graine[/b] en cliquant dessus
|
TAKE_A_SEED_BY_CLICKING_ON_IT,Take a [b]Seed[/b] by clicking on it,Prend une [b]Graine[/b] en cliquant dessus
|
||||||
DIG_A_TALION_VEIN_WITH_SHOVEL,Dig a [b]Talion Vein[/b] with the [b]Shovel[/b],Creuser un [b]Filon de Talion[/b] avec la [b]Pelle[/b]
|
DIG_A_TALION_VEIN_WITH_SHOVEL,Dig a [b]Talion Vein[/b] with the [b]Shovel[/b],Creuser un [b]Filon de Talion[/b] avec la [b]Pelle[/b]
|
||||||
PLANT_SEED_IN_FERTILE_ZONE,Plant a [b]Seed[/b] in the [b]Fertile Zone[/b],Planter une [b]Graine[/b] dans la [b]Zone Fertile[/b]
|
PLANT_SEED_IN_FERTILE_ZONE,Plant a [b]Seed[/b] in the [b]Fertile Zone[/b],Planter une [b]Graine[/b] dans la [b]Zone Fertile[/b]
|
||||||
RECHARGE_TO_PASS_DAYS,Recharge on the [b]Recharge station[/b] to pass the day,Se recharger sur la [b]Station de recharge[/b] pour passer la journée
|
GAIN_FIRST_PLANT_POINT,Earn your first [b]Plant Point[/b] while waiting for a plant to [b]Mature[/b] (recharging will pass days),Gagnez votre premier [b]Point de Plante[/b] en attendant qu'une plante soit [b]Mature[/b] (se recharger fera passer les jours)
|
||||||
GAIN_FIRST_PLANT_POINT,Earn your first [b]Plant Point[/b] while waiting for a plant to [b]Mature[/b],Gagnez votre premier [b]Point de Plante[/b] en attendant qu'une plante soit [b]Mature[/b]
|
|
||||||
HARVEST_A_MATURE_PLANT,Harvest a [b]Mature Plant[/b] using your [b]Shovel[/b],Récoltez une [b]Plante Mature[/b] en utilisant votre [b]Pelle[/b]
|
HARVEST_A_MATURE_PLANT,Harvest a [b]Mature Plant[/b] using your [b]Shovel[/b],Récoltez une [b]Plante Mature[/b] en utilisant votre [b]Pelle[/b]
|
||||||
%d_PLANT_POINT,%d Plant Point,%d Point de plante
|
%d_PLANT_POINT,%d Plant Point,%d Point de plante
|
||||||
%d_PLANT_POINTS,%d Plant Points,%d Points de plante
|
%d_PLANT_POINTS,%d Plant Points,%d Points de plante
|
||||||
@@ -192,11 +193,11 @@ LOCATION,Location,Location
|
|||||||
LAND_SHIP,Land Ship,Atterrir
|
LAND_SHIP,Land Ship,Atterrir
|
||||||
TAKE_OFF,Take Off,Décoller
|
TAKE_OFF,Take Off,Décoller
|
||||||
NO_MORE_ENERGY,No more energy,Plus assez d'énergie
|
NO_MORE_ENERGY,No more energy,Plus assez d'énergie
|
||||||
NO_RECHARGE_LEFT,No recharge left,Pas de recharge restante
|
NO_RECHARGE_LEFT,"No recharge left, give up to try again","Pas de recharge restante, abandonnez pour recommencer"
|
||||||
SHIP_IS_READY_TO_TAKE_OFF,Ship is ready to take off,Le vaisseau est prêt à partir
|
SHIP_IS_READY_TO_TAKE_OFF,Ship is ready to take off,Le vaisseau est prêt à partir
|
||||||
TUTORIAL_FINISHED,Tutorial finished,Tutoriel terminé
|
TUTORIAL_FINISHED,Tutorial finished,Tutoriel terminé
|
||||||
CHOOSE_DESTINATION,Choose destination,Choisissez la destination
|
CHOOSE_NEXT_STOP,Choose next stop,Choisissez le prochain arrêt
|
||||||
THANKS_FOR_PLAYING,Thanks for playing to the demo!,Merci d’avoir joué à la démo !
|
THANKS_FOR_PLAYING,Thanks for playing to the demo!,Merci d'avoir joué à la démo !
|
||||||
JOIN_OUR_INSTAGRAM,Join our Instagram,Rejoins-nous sur Instagram
|
JOIN_OUR_INSTAGRAM,Join our Instagram,Rejoins-nous sur Instagram
|
||||||
WHISHLIST_THE_GAME,Whishlist the game on Steam,Ajoutez le jeu à votre liste de souhait
|
WHISHLIST_THE_GAME,Whishlist the game on Steam,Ajoutez le jeu à votre liste de souhait
|
||||||
ART,Art,Art
|
ART,Art,Art
|
||||||
@@ -212,7 +213,9 @@ ASTRA_FACTORY,Astra Factory,Usine Astra
|
|||||||
ASTRA_FACTORY_TEXT,Production factory of Astra base,Usine de production de la base Astra
|
ASTRA_FACTORY_TEXT,Production factory of Astra base,Usine de production de la base Astra
|
||||||
MYSTERIOUS_DOOR,Mysterious Door,Porte mystérieuse
|
MYSTERIOUS_DOOR,Mysterious Door,Porte mystérieuse
|
||||||
MYSTERIOUS_DOOR_TEXT,"This door has a space ship logo on it... What could it be ?","Cette porte à un logo de vaisseau marqué dessus... Que peut-il y avoir à l'intérieur ?"
|
MYSTERIOUS_DOOR_TEXT,"This door has a space ship logo on it... What could it be ?","Cette porte à un logo de vaisseau marqué dessus... Que peut-il y avoir à l'intérieur ?"
|
||||||
|
ASTRA_BASE,Astra Base,Base Astra
|
||||||
BOREA_BASE,Borea Base,Base Boréa
|
BOREA_BASE,Borea Base,Base Boréa
|
||||||
|
TO_BOREA_BASE,To Borea Base,Jusqu'à la Base Boréa
|
||||||
BOREA_BASE_DESC_TEXT,Base where demeter is located,La base où se trouve Demeter
|
BOREA_BASE_DESC_TEXT,Base where demeter is located,La base où se trouve Demeter
|
||||||
ARID,Arid,Aride
|
ARID,Arid,Aride
|
||||||
ARID_MODIFIER_DESC_TEXT,Reduce base [b]Fertile Zone[/b] in this region,Réduit la [b]Zone Fertile[/b] de base de la région
|
ARID_MODIFIER_DESC_TEXT,Reduce base [b]Fertile Zone[/b] in this region,Réduit la [b]Zone Fertile[/b] de base de la région
|
||||||
@@ -221,4 +224,7 @@ HARSH_MODIFIER_DESC_TEXT,Increases the [b]Plant Points[/b] needed,Augmente le no
|
|||||||
HUMID,Humid,Humide
|
HUMID,Humid,Humide
|
||||||
HUMID_MODIFIER_DESC_TEXT,Reduce the number of [b]Recharge[/b],Réduit le nombre de [b]Recharge[/b]
|
HUMID_MODIFIER_DESC_TEXT,Reduce the number of [b]Recharge[/b],Réduit le nombre de [b]Recharge[/b]
|
||||||
POOR,Poor,Pauvre
|
POOR,Poor,Pauvre
|
||||||
POOR_MODIFIER_DESC_TEXT,Reduce the number of [b]Talion Veins[/b],Réduit le nombre de [b]Veine de Talion[/b]
|
POOR_MODIFIER_DESC_TEXT,Reduce the number of [b]Talion Veins[/b],Réduit le nombre de [b]Veine de Talion[/b]
|
||||||
|
PASS_THE_MYSTERIOUS_DOOR,Go through the mysterious door,Franchissez la porte mystérieuse
|
||||||
|
NEXT_STOP,Next Stop,Prochain arrêt
|
||||||
|
ORBIT,Orbit,Orbite
|
||||||
|
Reference in New Issue
Block a user