diff --git a/Translation/localization.csv b/Translation/localization.csv
index db8f8a2..be155cb 100644
--- a/Translation/localization.csv
+++ b/Translation/localization.csv
@@ -57,7 +57,7 @@ PRODUCE_%s_SEEDS,Produce %s seeds,Produit %s graines
DAY_%d,Day [b]%d[/b],Jour [b]%d[/b]
MATURE_ON_DAY_%d,Mature on day [b]%d[/b],Mature au jour [b]%d[/b]
%d_SCORE_WHEN_MATURE,Grants [b]%d[/b] garden points when mature,Donne [b]%d[/b] points de jardin une fois mature
-ABSURD,[rainbow]Absurd[/rainbow],[rainbow]Absurde[rainbow]
+ABSURD,[rainbow]Absurd[/rainbow],[rainbow]Absurde[/rainbow]
GROW_IN_%d,Grow in [b]%d[/b] days,Mature dans [b]%d[/b] jours
%s_SCORE_WHEN_MATURE,Grants [b]%s[/b] garden points when mature,Donne [b]%s[/b] points de jardin une fois mature
DISCOVER_%s,Discover %s,Découvre %s
@@ -82,7 +82,7 @@ QUICK_EFFECT_TEXT_LEVEL_%d,Reduce the growing time by %d,Réduit le temps de mat
SOCIABLE,Outgoing,Sociable
SOCIABLE_EFFECT_TEXT_LEVEL_%d,"When mature, grants [b]%d[/b] garden points if it is nearby %d other plants","Une fois mature, donne [b]%d[/b] points de jardin si elle est à côté de %d autres plantes"
STRONG,Strong,Fort
-STRONG_EFFECT_TEXT_LEVEL_%d,Plus [b]%d[/b] % of the score,Augmente le score de [b]%d[/b] %
+STRONG_EFFECT_TEXT_LEVEL_%d,Plus [b]%d[/b]%% of the score,Augmente le score de [b]%d[/b]%%
COST_%d_ENERGY,Cost %d energy,Coûte %d d’énergie
ONE_TIME_USE,Single use,Usage unique
BUILD_%s,Build %s,Construit %s
diff --git a/common/music/music.tscn b/common/music/music.tscn
index b7c73dc..bd3c62b 100644
--- a/common/music/music.tscn
+++ b/common/music/music.tscn
@@ -36,7 +36,7 @@ stream_0/volume = -60.0
process_mode = 3
script = ExtResource("1_ji160")
ambiance_volume = -3.0
-garden_phases_scores = Array[int]([0, 10, 30])
+garden_phases_scores = Array[int]([0, 1, 30])
playing_ambiances = [NodePath("Ambiance/Default")]
[node name="Ambiance" type="Node" parent="."]
diff --git a/common/music/scripts/music.gd b/common/music/scripts/music.gd
index 39f0599..1cd2447 100644
--- a/common/music/scripts/music.gd
+++ b/common/music/scripts/music.gd
@@ -27,32 +27,41 @@ func _ready():
is_ready = true
func setup_volume():
- for c in %Ambiance.get_children():
- var player = c as AudioStreamPlayer
- player.volume_db = ambiance_volume if playing_ambiances.find(player) != -1 else MIN_VOLUME
-
- for c in %Musics.get_children():
- var player = c as AudioStreamPlayer
- player.volume_db = music_volume if playing_musics.find(player) != -1 else MIN_VOLUME
-
- for player in get_all_audio_stream():
+ for player in get_all_audio_streams():
+ player.volume_db = get_volume_from_parent(player) if playing_ambiances.find(player) != -1 else MIN_VOLUME
player.play()
setup_phase(player)
+func get_volume_from_parent(player : AudioStreamPlayer) -> float:
+ if player.get_parent() == %Ambiance:
+ return ambiance_volume
+ return music_volume
+
func update_phase():
- for player in get_all_audio_stream():
+ for player in get_all_audio_streams():
+ var playing : bool = player.volume_db != MIN_VOLUME
+ if playing:
+ await set_volume(player, MIN_VOLUME).finished
setup_phase(player)
+ if playing:
+ set_volume(player, get_volume_from_parent(player))
-func get_all_audio_stream() -> Array[AudioStreamPlayer]:
+func get_all_audio_streams() -> Array[AudioStreamPlayer]:
var all_audio_stream : Array[AudioStreamPlayer] = []
- var all_children = %Ambiance.get_children()
- all_children.append_array(%Musics.get_children())
+ all_audio_stream.append_array(get_audio_streams_from_node(%Musics))
+ all_audio_stream.append_array(get_audio_streams_from_node(%Ambiance))
- for c in all_children:
- if c is AudioStreamPlayer:
- all_audio_stream.append(c)
return all_audio_stream
+func get_audio_streams_from_node(node : Node) -> Array[AudioStreamPlayer]:
+ var streams : Array[AudioStreamPlayer] = []
+
+ for c in node.get_children():
+ if c is AudioStreamPlayer:
+ streams.append(c)
+ return streams
+
+
func _on_current_planet_data_updated(planet_data : PlanetData):
if planet_data:
update_garden_phase(planet_data)
@@ -64,7 +73,8 @@ func update_garden_phase(planet_data : PlanetData):
if planet_data.garden_score >= garden_phases_scores[i] and i > garden_phase:
phase = i
- update_phase()
+ if garden_phase != phase:
+ update_phase()
garden_phase = phase
@@ -95,7 +105,6 @@ func setup_phase(music : AudioStreamPlayer):
0. if i == phase_stream_id else MIN_VOLUME
)
-
func set_volume(music : AudioStreamPlayer, to : float, fade_time = default_fade_time) -> Tween:
var fade_tween : Tween = get_tree().create_tween()
diff --git a/common/vfx/particles/particles.tscn b/common/vfx/particles/particles.tscn
index 2dd70e7..3a5c399 100644
--- a/common/vfx/particles/particles.tscn
+++ b/common/vfx/particles/particles.tscn
@@ -19,6 +19,7 @@ colors = PackedColorArray(1, 1, 1, 0.65882355, 1, 1, 1, 0.72156864, 1, 1, 1, 0)
[node name="Particles" type="CPUParticles2D"]
amount = 1
texture = ExtResource("1_88fy1")
+randomness = 0.3
emission_shape = 1
emission_sphere_radius = 30.0
gravity = Vector2(0, -20)
diff --git a/entities/plants/scripts/plant.gd b/entities/plants/scripts/plant.gd
index 05391d5..282e69b 100644
--- a/entities/plants/scripts/plant.gd
+++ b/entities/plants/scripts/plant.gd
@@ -54,9 +54,12 @@ func pointer_text() -> String:
return plant_type.name
func inspect(is_inspected : bool = true):
- modulate = MODULATE_INSPECTED_COLOR if is_inspected else default_modulate
+ plant_sprite.modulate = MODULATE_INSPECTED_COLOR if is_inspected else default_modulate
influence_zone.show_influence = is_inspected
+func affect_preview(is_affected : bool = true):
+ plant_sprite.modulate = MODULATE_AFFECTED_COLOR if is_affected else default_modulate
+
func generate_sprite() -> PlantSprite:
var sprite_object : PlantSprite = SPRITE_SCENE.instantiate()
diff --git a/entities/plants/scripts/plant_influence_zone.gd b/entities/plants/scripts/plant_influence_zone.gd
index 8ba3435..c6f870f 100644
--- a/entities/plants/scripts/plant_influence_zone.gd
+++ b/entities/plants/scripts/plant_influence_zone.gd
@@ -19,7 +19,7 @@ func _ready():
sprite.radius = 100
sprite.fill = false
sprite.width = 1
- sprite.opacity = 0.2
+ sprite.opacity = 0.5
sprite.visible = show_influence
add_child(sprite)
diff --git a/entities/plants/scripts/plant_mutation.gd b/entities/plants/scripts/plant_mutation.gd
index 78b71b8..e5f5dd0 100644
--- a/entities/plants/scripts/plant_mutation.gd
+++ b/entities/plants/scripts/plant_mutation.gd
@@ -59,7 +59,7 @@ static func get_rarity_text(rarity) -> String:
if rarity < len(rarity_text):
return rarity_text[rarity]
else :
- return rarity_text[len(rarity_text) - 1] + " " + str(rarity - len(rarity_text) + 2)
+ return rarity_text[len(rarity_text) - 1]
static func get_rarity_color(rarity : int) -> Color:
var rarity_colors : Array[Color] = [
diff --git a/entities/plants/scripts/plant_mutation/elitist_mutation.gd b/entities/plants/scripts/plant_mutation/elitist_mutation.gd
index 67338ad..dc10395 100644
--- a/entities/plants/scripts/plant_mutation/elitist_mutation.gd
+++ b/entities/plants/scripts/plant_mutation/elitist_mutation.gd
@@ -19,7 +19,6 @@ func mutate_score(plant_state : Plant.State, plant : Plant, score) -> int:
if plant_state != Plant.State.MATURE:
return score
var plant_count = 0
-
for area in plant.influence_zone.get_overlapping_areas():
if area is Plant and area != plant and area.plant_type.name == plant.plant_type.name:
plant_count += 1
diff --git a/entities/plants/scripts/plant_mutation/strong_mutation.gd b/entities/plants/scripts/plant_mutation/strong_mutation.gd
index 2713f11..0e551de 100644
--- a/entities/plants/scripts/plant_mutation/strong_mutation.gd
+++ b/entities/plants/scripts/plant_mutation/strong_mutation.gd
@@ -11,7 +11,7 @@ func get_mutation_name() -> String:
return tr("STRONG")
func get_mutation_description() -> String:
- return tr("STRONG_EFFECT_TEXT_LEVEL_%d") % roundi(get_score_multiplier() * 100)
+ return tr("STRONG_EFFECT_TEXT_LEVEL_%d") % [roundi(get_score_multiplier() * 100)]
func get_score_multiplier():
return float(level)/2.
diff --git a/entities/player/inventory/scripts/items/blueprint.gd b/entities/player/inventory/scripts/items/blueprint.gd
index 900fdaf..d3d997a 100644
--- a/entities/player/inventory/scripts/items/blueprint.gd
+++ b/entities/player/inventory/scripts/items/blueprint.gd
@@ -26,7 +26,7 @@ func get_icon() -> Texture2D:
func use_text() -> String:
if machine_type:
- return tr("BUILD_%s") % machine_type.name
+ return tr("BUILD_%s") % tr(machine_type.name)
return ""
func is_one_time_use():
diff --git a/entities/player/scripts/player.gd b/entities/player/scripts/player.gd
index 1101278..3b2ee46 100644
--- a/entities/player/scripts/player.gd
+++ b/entities/player/scripts/player.gd
@@ -1,6 +1,7 @@
extends CharacterBody2D
class_name Player
+const ACTION_AREA_UPDATE_TIME=0.05 # When creating an action_zone, we make sure that the area setup correctly by waiting a little
const MAX_REACH = 100
const HOLDING_ITEM_SPRITE_SIZE = 20.
@@ -12,9 +13,8 @@ var planet : Planet :
get(): return terrain if terrain is Planet else null
@export var speed = 350
-var has_just_received_instruction : bool = false # pour récupérer les zones dans les action_area, une frame doit être passée depuis la création de la zone
-
var data : PlayerData
+var last_action_area_movement_timer : float = 100.
var controlling_player : bool = true :
set(v):
@@ -54,18 +54,20 @@ func _pass_day():
func _end_pass_day():
controlling_player = true
-func _process(_delta):
+func _process(delta):
+ last_action_area_movement_timer += delta
if controlling_player:
var old_velocity=velocity
calculate_direction()
- if instruction and instruction.can_be_done(self) and not has_just_received_instruction:
+ if (
+ last_action_area_movement_timer >= ACTION_AREA_UPDATE_TIME
+ and instruction and instruction.can_be_done(self)
+ ):
instruction.do(self)
instruction = null
move_preview_zone(get_global_mouse_position())
- has_just_received_instruction = false
-
# Sound
if old_velocity.length()==0 and velocity.length()!=0:
play_sfx("move")
@@ -94,7 +96,7 @@ func calculate_direction():
if input_direction.length() != 0:
instruction = null
- if instruction:
+ if instruction and instruction.position.distance_to(global_position) > (MAX_REACH - 1.):
input_direction = self.global_position.direction_to(instruction.position)
velocity = input_direction * speed
@@ -112,7 +114,6 @@ func can_interact(interactable : Interactable):
func try_interact(interactable : Interactable):
if interactable:
- has_just_received_instruction = true
instruction = InteractableInstruction.new(
interactable
)
@@ -148,7 +149,6 @@ func delete_item(item: Item):
data.inventory.remove_item(item)
func try_use_item(item : Item, use_position : Vector2):
- has_just_received_instruction = true
setup_action_zone(use_position, item)
instruction = ItemActionInstruction.new(
use_position,
@@ -224,6 +224,7 @@ func setup_action_zone(zone_position : Vector2, item: Item) -> ActionZone:
action_zone.destroy()
action_zone = generate_action_zone(item)
action_zone.move_to_position(zone_position)
+ last_action_area_movement_timer = 0.
return action_zone
func move_preview_zone(zone_position : Vector2):
@@ -251,7 +252,7 @@ class Instruction:
position = _pos
func can_be_done(player : Player):
- return player.global_position.distance_to(position) < 10
+ return player.global_position.distance_to(position) < player.MAX_REACH
func do(_player : Player):
pass
@@ -267,7 +268,9 @@ class ItemActionInstruction extends Instruction:
item = _item
func can_be_done(player : Player):
- return player.global_position.distance_to(position) < player.MAX_REACH
+ return (
+ player.global_position.distance_to(position) < player.MAX_REACH
+ )
func do(player : Player):
player.use_item(item)
diff --git a/export_presets.cfg b/export_presets.cfg
index 20d9dd9..008e1ef 100644
--- a/export_presets.cfg
+++ b/export_presets.cfg
@@ -43,3 +43,71 @@ progressive_web_app/icon_512x512=""
progressive_web_app/background_color=Color(0, 0, 0, 1)
threads/emscripten_pool_size=8
threads/godot_pool_size=4
+
+[preset.1]
+
+name="Windows Desktop"
+platform="Windows Desktop"
+runnable=true
+advanced_options=false
+dedicated_server=false
+custom_features=""
+export_filter="all_resources"
+include_filter=""
+exclude_filter=""
+export_path=".export/win/stw.exe"
+patches=PackedStringArray()
+encryption_include_filters=""
+encryption_exclude_filters=""
+seed=0
+encrypt_pck=false
+encrypt_directory=false
+script_export_mode=2
+
+[preset.1.options]
+
+custom_template/debug=""
+custom_template/release=""
+debug/export_console_wrapper=1
+binary_format/embed_pck=true
+texture_format/s3tc_bptc=true
+texture_format/etc2_astc=false
+shader_baker/enabled=false
+binary_format/architecture="x86_64"
+codesign/enable=false
+codesign/timestamp=true
+codesign/timestamp_server_url=""
+codesign/digest_algorithm=1
+codesign/description=""
+codesign/custom_options=PackedStringArray()
+application/modify_resources=true
+application/icon=""
+application/console_wrapper_icon=""
+application/icon_interpolation=4
+application/file_version=""
+application/product_version=""
+application/company_name=""
+application/product_name=""
+application/file_description=""
+application/copyright=""
+application/trademarks=""
+application/export_angle=0
+application/export_d3d12=0
+application/d3d12_agility_sdk_multiarch=true
+ssh_remote_deploy/enabled=false
+ssh_remote_deploy/host="user@host_ip"
+ssh_remote_deploy/port="22"
+ssh_remote_deploy/extra_args_ssh=""
+ssh_remote_deploy/extra_args_scp=""
+ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}'
+$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}'
+$trigger = New-ScheduledTaskTrigger -Once -At 00:00
+$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
+$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
+Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true
+Start-ScheduledTask -TaskName godot_remote_debug
+while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 }
+Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue"
+ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
+Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
+Remove-Item -Recurse -Force '{temp_dir}'"
diff --git a/gui/game/card/card_visualiser.tscn b/gui/game/card/card_visualiser.tscn
index 0539f1f..772dd92 100644
--- a/gui/game/card/card_visualiser.tscn
+++ b/gui/game/card/card_visualiser.tscn
@@ -1,60 +1,55 @@
-[gd_scene load_steps=22 format=3 uid="uid://3ss8pvhsackj"]
+[gd_scene load_steps=21 format=3 uid="uid://3ss8pvhsackj"]
[ext_resource type="PackedScene" uid="uid://753270jjxmfg" path="res://gui/game/card/card.tscn" id="1_we78f"]
[ext_resource type="Shader" uid="uid://bqjwmomh851lc" path="res://common/vfx/materials/shaders/skew.gdshader" id="1_x54se"]
+[ext_resource type="Texture2D" uid="uid://0hbdgalf04e" path="res://common/icons/wood.svg" id="2_bw03i"]
[ext_resource type="Script" uid="uid://dj5pld5ragrjp" path="res://gui/game/card/scripts/card_visualiser.gd" id="2_ntbk8"]
[ext_resource type="Script" uid="uid://dj2pv1hiwjfv0" path="res://gui/game/card/scripts/card_info.gd" id="3_5yk1o"]
-[ext_resource type="Texture2D" uid="uid://bd6qddv5ihkjr" path="res://common/icons/bucket.svg" id="3_r0jrf"]
[ext_resource type="Script" uid="uid://dgbh38j13g5kn" path="res://gui/game/card/scripts/card_section_info.gd" id="4_7xkgc"]
[ext_resource type="Script" uid="uid://b4tkium34c831" path="res://gui/game/card/scripts/card_stat_info.gd" id="5_1et8x"]
+[ext_resource type="Texture2D" uid="uid://cgefjpkvs8noj" path="res://common/icons/copy.svg" id="5_lj1tr"]
[ext_resource type="Texture2D" uid="uid://bsvxhafoxwmw0" path="res://common/icons/cube-3d-sphere.svg" id="7_1et8x"]
[ext_resource type="Texture2D" uid="uid://df0y0s666ui4h" path="res://icon.png" id="7_6vah0"]
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_r0jrf"]
-shader = ExtResource("1_x54se")
-shader_parameter/fov = 90.0
-shader_parameter/cull_back = true
-shader_parameter/y_rot = -6e-45
-shader_parameter/x_rot = -6e-45
-shader_parameter/inset = 0.0
-
-[sub_resource type="Resource" id="Resource_r0jrf"]
-script = ExtResource("4_7xkgc")
-metadata/_custom_type_script = "uid://dgbh38j13g5kn"
-
-[sub_resource type="Resource" id="Resource_6vah0"]
-script = ExtResource("4_7xkgc")
-metadata/_custom_type_script = "uid://dgbh38j13g5kn"
-
-[sub_resource type="Resource" id="Resource_jjqcm"]
-script = ExtResource("4_7xkgc")
-metadata/_custom_type_script = "uid://dgbh38j13g5kn"
-
-[sub_resource type="Resource" id="Resource_lj1tr"]
-script = ExtResource("4_7xkgc")
-metadata/_custom_type_script = "uid://dgbh38j13g5kn"
-
-[sub_resource type="Resource" id="Resource_vabmf"]
-script = ExtResource("4_7xkgc")
-metadata/_custom_type_script = "uid://dgbh38j13g5kn"
-
-[sub_resource type="Resource" id="Resource_1vjtn"]
-script = ExtResource("4_7xkgc")
-metadata/_custom_type_script = "uid://dgbh38j13g5kn"
+[ext_resource type="Texture2D" uid="uid://baaujfw8piywi" path="res://common/icons/dna.svg" id="7_vabmf"]
+[ext_resource type="Texture2D" uid="uid://bt3g5bmar0icf" path="res://common/icons/growth.svg" id="8_1vjtn"]
[sub_resource type="Resource" id="Resource_l3vvu"]
script = ExtResource("4_7xkgc")
+title_text = "Very nice section"
+title_icon = ExtResource("5_lj1tr")
+text = "It's a very nice section with a very nice text"
metadata/_custom_type_script = "uid://dgbh38j13g5kn"
-[sub_resource type="Resource" id="Resource_bw03i"]
+[sub_resource type="Resource" id="Resource_biqg7"]
+script = ExtResource("5_1et8x")
+text = "Dna"
+icon = ExtResource("7_vabmf")
+metadata/_custom_type_script = "uid://b4tkium34c831"
+
+[sub_resource type="Resource" id="Resource_gskac"]
+script = ExtResource("5_1et8x")
+text = "Growth"
+icon = ExtResource("8_1vjtn")
+metadata/_custom_type_script = "uid://b4tkium34c831"
+
+[sub_resource type="Resource" id="Resource_eb1v6"]
script = ExtResource("3_5yk1o")
title = "Hello"
texture = ExtResource("7_6vah0")
-important_stat_text = "6"
-important_stat_icon = ExtResource("3_r0jrf")
-sections = Array[ExtResource("4_7xkgc")]([SubResource("Resource_r0jrf"), SubResource("Resource_6vah0"), SubResource("Resource_jjqcm"), SubResource("Resource_lj1tr"), SubResource("Resource_vabmf"), SubResource("Resource_1vjtn"), SubResource("Resource_l3vvu")])
+important_stat_text = "5"
+important_stat_icon = ExtResource("2_bw03i")
+stats = Array[ExtResource("5_1et8x")]([SubResource("Resource_biqg7"), SubResource("Resource_gskac")])
+sections = Array[ExtResource("4_7xkgc")]([SubResource("Resource_l3vvu")])
metadata/_custom_type_script = "uid://dj2pv1hiwjfv0"
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_bw03i"]
+shader = ExtResource("1_x54se")
+shader_parameter/fov = 90.0
+shader_parameter/cull_back = true
+shader_parameter/y_rot = 0.00018062632
+shader_parameter/x_rot = -0.00042293756
+shader_parameter/inset = 0.0
+
[sub_resource type="Animation" id="Animation_1et8x"]
length = 0.3
@@ -68,27 +63,35 @@ _data = {
&"appear": SubResource("Animation_7xkgc")
}
-[node name="CardVisualiser" type="SubViewportContainer"]
-material = SubResource("ShaderMaterial_r0jrf")
+[node name="CardVisualiser" type="MarginContainer"]
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
-offset_left = -246.0
-offset_top = -134.0
-offset_right = 54.0
-offset_bottom = -24.0
+offset_left = -125.0
+offset_top = -30.0
+offset_right = 125.0
+offset_bottom = 30.0
grow_horizontal = 2
grow_vertical = 2
scale = Vector2(1.0000002, 1.0000002)
size_flags_horizontal = 0
size_flags_vertical = 4
mouse_filter = 2
+theme_override_constants/margin_left = -25
+theme_override_constants/margin_top = -25
+theme_override_constants/margin_right = -25
+theme_override_constants/margin_bottom = -25
script = ExtResource("2_ntbk8")
-card_info = SubResource("Resource_bw03i")
+card_info = SubResource("Resource_eb1v6")
-[node name="SubViewport" type="SubViewport" parent="."]
+[node name="SubViewportContainer" type="SubViewportContainer" parent="."]
+unique_name_in_owner = true
+material = SubResource("ShaderMaterial_bw03i")
+layout_mode = 2
+
+[node name="SubViewport" type="SubViewport" parent="SubViewportContainer"]
unique_name_in_owner = true
transparent_bg = true
handle_input_locally = false
@@ -96,7 +99,7 @@ size = Vector2i(300, 110)
size_2d_override_stretch = true
render_target_update_mode = 4
-[node name="CardContainer" type="MarginContainer" parent="SubViewport"]
+[node name="CardContainer" type="MarginContainer" parent="SubViewportContainer/SubViewport"]
unique_name_in_owner = true
offset_right = 300.0
offset_bottom = 110.0
@@ -105,15 +108,14 @@ theme_override_constants/margin_top = 25
theme_override_constants/margin_right = 25
theme_override_constants/margin_bottom = 25
-[node name="Card" parent="SubViewport/CardContainer" instance=ExtResource("1_we78f")]
+[node name="Card" parent="SubViewportContainer/SubViewport/CardContainer" instance=ExtResource("1_we78f")]
unique_name_in_owner = true
self_modulate = Color(1, 1, 1, 0)
layout_mode = 2
-size_flags_horizontal = 4
mouse_filter = 2
small_mode = true
down_arrow = true
-info = SubResource("Resource_bw03i")
+info = SubResource("Resource_eb1v6")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true
diff --git a/gui/game/card/scripts/card_visualiser.gd b/gui/game/card/scripts/card_visualiser.gd
index e7bd8c2..a06facd 100644
--- a/gui/game/card/scripts/card_visualiser.gd
+++ b/gui/game/card/scripts/card_visualiser.gd
@@ -1,5 +1,5 @@
@tool
-extends SubViewportContainer
+extends MarginContainer
class_name CardVisualiser
signal clicked(c: CardVisualiser)
@@ -7,6 +7,8 @@ signal clicked(c: CardVisualiser)
const MAX_ROT = 15
const ZOOM_SCALE = 1.2
+const MARGIN = 25
+
var wanted_rot : Vector2 = Vector2.ZERO
var real_rot : Vector2 = Vector2.ZERO
@@ -51,7 +53,7 @@ func _input(event):
clicked.emit(self)
func _ready():
- material = material.duplicate()
+ %SubViewportContainer.material = %SubViewportContainer.material.duplicate()
update()
is_ready = true
@@ -69,13 +71,14 @@ func _process(_d):
real_rot = real_rot.lerp(wanted_rot, 0.1)
- material.set_shader_parameter("y_rot", - real_rot.x)
- material.set_shader_parameter("x_rot", real_rot.y)
+ %SubViewportContainer.material.set_shader_parameter("y_rot", - real_rot.x)
+ %SubViewportContainer.material.set_shader_parameter("x_rot", real_rot.y)
%Card.custom_minimum_size.x = card_width
- %CardContainer.size.y = 0
+ %CardContainer.size = Vector2.ZERO
%SubViewport.size = %CardContainer.size
- size = %SubViewport.size
+ %SubViewportContainer.size = %SubViewport.size
+ size = %SubViewportContainer.size - (Vector2.ONE * MARGIN * 2)
func is_mouse_over() -> bool:
diff --git a/gui/game/inventory_gui/inventory_item/inventory_gui_item.tscn b/gui/game/inventory_gui/inventory_item/inventory_gui_item.tscn
index f020b05..88f1e70 100644
--- a/gui/game/inventory_gui/inventory_item/inventory_gui_item.tscn
+++ b/gui/game/inventory_gui/inventory_item/inventory_gui_item.tscn
@@ -165,6 +165,19 @@ texture = ExtResource("3_m0ja8")
expand_mode = 1
stretch_mode = 4
+[node name="ParticleTexture2" type="TextureRect" parent="CenterContainer/ItemTexture"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 2
+anchor_top = 1.0
+anchor_bottom = 1.0
+offset_top = -22.0
+offset_right = 22.0
+grow_vertical = 0
+texture = ExtResource("3_m0ja8")
+expand_mode = 1
+stretch_mode = 4
+
[node name="BottomSpace" type="Control" parent="."]
layout_mode = 2
diff --git a/gui/game/inventory_gui/inventory_item/scripts/inventory_gui_item.gd b/gui/game/inventory_gui/inventory_item/scripts/inventory_gui_item.gd
index 8ce98a4..dd7e08c 100644
--- a/gui/game/inventory_gui/inventory_item/scripts/inventory_gui_item.gd
+++ b/gui/game/inventory_gui/inventory_item/scripts/inventory_gui_item.gd
@@ -39,12 +39,16 @@ func update(_item: Item, selected : bool):
if item and item.icon:
%ItemTexture.texture = item.icon
var particles = item.get_particles()
- if len(particles):
+ if len(particles) > 0:
%ParticleTexture.texture = particles[0].texture
%ParticleTexture.modulate = particles[0].color
+ if len(particles) > 1:
+ %ParticleTexture2.texture = particles[1].texture
+ %ParticleTexture2.modulate = particles[1].color
%ItemTexture.visible = item != null
%NoItemTextureRect.visible = item == null
- %ParticleTexture.visible = item and len(item.get_particles())
+ %ParticleTexture.visible = item and len(item.get_particles())>0
+ %ParticleTexture2.visible = item and len(item.get_particles())>1
current_item = item
diff --git a/gui/game/quota_reward/scripts/quota_reward.gd b/gui/game/quota_reward/scripts/quota_reward.gd
index 402d783..aee0f04 100644
--- a/gui/game/quota_reward/scripts/quota_reward.gd
+++ b/gui/game/quota_reward/scripts/quota_reward.gd
@@ -15,10 +15,12 @@ func _ready():
func show_rewards():
showing_rewards = true
+ get_tree().paused = true
%AnimationPlayer.play("show")
func hide_rewards():
showing_rewards = false
+ get_tree().paused = false
%AnimationPlayer.play_backwards("show")
func generate_rewards(nb : int = 3):
diff --git a/gui/game/scripts/game_gui.gd b/gui/game/scripts/game_gui.gd
index 85af332..33c357e 100644
--- a/gui/game/scripts/game_gui.gd
+++ b/gui/game/scripts/game_gui.gd
@@ -70,7 +70,7 @@ func _on_plant_gaining_score(plant: Plant, amount : int):
0.8
)
- await get_tree().create_timer(0.3).timeout
+ await get_tree().create_timer(0.3 / max(1,i)).timeout
func spawn_score_particle(
from_position,
diff --git a/gui/game/win/scripts/win.gd b/gui/game/win/scripts/win.gd
index 955c93c..dcc8e2a 100644
--- a/gui/game/win/scripts/win.gd
+++ b/gui/game/win/scripts/win.gd
@@ -1,6 +1,6 @@
extends Control
-const PLANET_RUN_SCENE = preload("res://stages/planet_run/planet_run.tscn")
+@export_file var game_scene_path : String
func _ready():
visible = false
@@ -13,7 +13,7 @@ func win(planet : Planet):
func _on_restart_pressed():
GameInfo.game_data.reset_all()
get_tree().paused = false
- get_tree().change_scene_to_packed(PLANET_RUN_SCENE)
+ get_tree().change_scene_to_file(game_scene_path)
func _on_quit_pressed():
get_tree().quit()
diff --git a/gui/game/win/win.tscn b/gui/game/win/win.tscn
index 010aa25..0e7de4c 100644
--- a/gui/game/win/win.tscn
+++ b/gui/game/win/win.tscn
@@ -27,6 +27,7 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_sehw2")
+game_scene_path = "uid://d28cp7a21kwou"
[node name="ColorRect" type="ColorRect" parent="."]
material = SubResource("ShaderMaterial_8p3aj")
diff --git a/gui/pointer/assets/cursors/pointer.svg b/gui/pointer/assets/cursors/pointer.svg
index 15cd6c1..e91a777 100644
--- a/gui/pointer/assets/cursors/pointer.svg
+++ b/gui/pointer/assets/cursors/pointer.svg
@@ -1 +1,48 @@
-
\ No newline at end of file
+
+
diff --git a/gui/pointer/assets/cursors/pointer.svg.import b/gui/pointer/assets/cursors/pointer.svg.import
index 9f17eef..47d69aa 100644
--- a/gui/pointer/assets/cursors/pointer.svg.import
+++ b/gui/pointer/assets/cursors/pointer.svg.import
@@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/pointer.svg-7e9852b8fc87e59d7ede00033ef3f170.
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
@@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
diff --git a/gui/pointer/pointer.tscn b/gui/pointer/pointer.tscn
index e198ace..60478f6 100644
--- a/gui/pointer/pointer.tscn
+++ b/gui/pointer/pointer.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=15 format=3 uid="uid://0yr6b2jtuttm"]
+[gd_scene load_steps=23 format=3 uid="uid://0yr6b2jtuttm"]
[ext_resource type="Script" uid="uid://vhumsfntpqcl" path="res://gui/pointer/scripts/pointer.gd" id="1_1pe2k"]
[ext_resource type="Texture2D" uid="uid://bspffyprdywgc" path="res://gui/pointer/assets/cursors/pointer.svg" id="2_q4bvb"]
@@ -8,21 +8,51 @@
[ext_resource type="Script" uid="uid://c60a1bjcuj4hd" path="res://common/vfx/circle/scripts/circle.gd" id="5_b4uwv"]
[ext_resource type="PackedScene" uid="uid://3ss8pvhsackj" path="res://gui/game/card/card_visualiser.tscn" id="6_7j4mj"]
[ext_resource type="Shader" uid="uid://bqjwmomh851lc" path="res://common/vfx/materials/shaders/skew.gdshader" id="7_wgcdp"]
+[ext_resource type="Texture2D" uid="uid://0hbdgalf04e" path="res://common/icons/wood.svg" id="8_tdpeg"]
[ext_resource type="Script" uid="uid://dj2pv1hiwjfv0" path="res://gui/game/card/scripts/card_info.gd" id="8_xb313"]
[ext_resource type="Script" uid="uid://dgbh38j13g5kn" path="res://gui/game/card/scripts/card_section_info.gd" id="9_s1ym6"]
[ext_resource type="Script" uid="uid://b4tkium34c831" path="res://gui/game/card/scripts/card_stat_info.gd" id="10_d4v46"]
[ext_resource type="Texture2D" uid="uid://bsvxhafoxwmw0" path="res://common/icons/cube-3d-sphere.svg" id="11_s1ym6"]
+[ext_resource type="Texture2D" uid="uid://cgefjpkvs8noj" path="res://common/icons/copy.svg" id="11_tof6i"]
+[ext_resource type="Texture2D" uid="uid://baaujfw8piywi" path="res://common/icons/dna.svg" id="13_mw4ws"]
+[ext_resource type="Texture2D" uid="uid://bt3g5bmar0icf" path="res://common/icons/growth.svg" id="14_efnoc"]
+[ext_resource type="Texture2D" uid="uid://df0y0s666ui4h" path="res://icon.png" id="15_dtmaq"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_6eft6"]
shader = ExtResource("7_wgcdp")
shader_parameter/fov = 90.0
shader_parameter/cull_back = true
-shader_parameter/y_rot = -6e-45
-shader_parameter/x_rot = -6e-45
+shader_parameter/y_rot = -5.999999999999999e-45
+shader_parameter/x_rot = -5.999999999999999e-45
shader_parameter/inset = 0.0
-[sub_resource type="Resource" id="Resource_mrxa2"]
+[sub_resource type="Resource" id="Resource_l3vvu"]
+script = ExtResource("9_s1ym6")
+title_text = "Very nice section"
+title_icon = ExtResource("11_tof6i")
+text = "It's a very nice section with a very nice text"
+metadata/_custom_type_script = "uid://dgbh38j13g5kn"
+
+[sub_resource type="Resource" id="Resource_biqg7"]
+script = ExtResource("10_d4v46")
+text = "Dna"
+icon = ExtResource("13_mw4ws")
+metadata/_custom_type_script = "uid://b4tkium34c831"
+
+[sub_resource type="Resource" id="Resource_gskac"]
+script = ExtResource("10_d4v46")
+text = "Growth"
+icon = ExtResource("14_efnoc")
+metadata/_custom_type_script = "uid://b4tkium34c831"
+
+[sub_resource type="Resource" id="Resource_mbe2a"]
script = ExtResource("8_xb313")
+title = "Hello"
+texture = ExtResource("15_dtmaq")
+important_stat_text = "5"
+important_stat_icon = ExtResource("8_tdpeg")
+stats = Array[ExtResource("10_d4v46")]([SubResource("Resource_biqg7"), SubResource("Resource_gskac")])
+sections = Array[ExtResource("9_s1ym6")]([SubResource("Resource_l3vvu")])
metadata/_custom_type_script = "uid://dj2pv1hiwjfv0"
[node name="Pointer" type="Node"]
@@ -123,8 +153,9 @@ modulate = Color(1, 1, 1, 0.5003133)
material = SubResource("ShaderMaterial_6eft6")
layout_mode = 2
size_flags_horizontal = 4
+size_flags_vertical = 8
mouse_filter = 0
-card_info = SubResource("Resource_mrxa2")
+card_info = SubResource("Resource_mbe2a")
[node name="Audio" type="Node" parent="."]
diff --git a/gui/pointer/scripts/pointer.gd b/gui/pointer/scripts/pointer.gd
index 7a74a29..c6da612 100644
--- a/gui/pointer/scripts/pointer.gd
+++ b/gui/pointer/scripts/pointer.gd
@@ -8,7 +8,7 @@ const ZONE_ACTIVATED_COLOR = Color.TURQUOISE
const ZONE_DEACTIVATED_COLOR = Color.REBECCA_PURPLE
const CARD_VISUALISATION_TIME = 0.5
-const CARD_UP_PADDING = 20
+const CARD_UP_PADDING = 50
@export var default_cursor : Texture2D
@@ -101,7 +101,11 @@ func inspect(node : Node):
update_inspector()
func update_card():
- if not inspected or inspected_card_info == null or time_last_inspected > CARD_VISUALISATION_TIME:
+ if (
+ not inspected or inspected_card_info == null
+ or time_last_inspected > CARD_VISUALISATION_TIME
+ or get_tree().paused
+ ):
%CardVisualiser.hide()
elif inspected != null and (
diff --git a/icon.png b/icon.png
index f471bfa..9a0723d 100644
Binary files a/icon.png and b/icon.png differ
diff --git a/icon.png.import b/icon.png.import
index 391a373..34a10c2 100644
--- a/icon.png.import
+++ b/icon.png.import
@@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.cte
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
@@ -25,6 +27,10 @@ mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
diff --git a/project.godot b/project.godot
index 76a0658..79de977 100644
--- a/project.godot
+++ b/project.godot
@@ -12,7 +12,7 @@ config_version=5
config/name="Seeding Planets"
config/description="Seeding planets is a survival, managment and cosy game in which you play a little gardener robot."
-config/version="proto-3.0"
+config/version="proto-3.1"
run/main_scene="uid://c5bruelvqbm1k"
config/features=PackedStringArray("4.5", "Forward Plus")
config/icon="uid://df0y0s666ui4h"
diff --git a/push-to-itch.sh b/push-to-itch.sh
index ee28d30..af02aff 100644
--- a/push-to-itch.sh
+++ b/push-to-itch.sh
@@ -1,4 +1,4 @@
VERSION=$(grep config/version project.godot | cut -d'"' -f2 )
-cd .export/web
-zip web.zip *
-butler push web.zip zink-exe/seeding-the-wasteland-prototype:web --userversion $VERSION
\ No newline at end of file
+cd .export/win
+zip win.zip *
+butler push web.zip zink-exe/seeding-the-wasteland-prototype:win --userversion $VERSION
\ No newline at end of file
diff --git a/stages/planet_run/planet_run.tscn b/stages/planet_run/planet_run.tscn
index 693a206..5fde303 100644
--- a/stages/planet_run/planet_run.tscn
+++ b/stages/planet_run/planet_run.tscn
@@ -45,10 +45,10 @@ y_sort_enabled = true
position = Vector2(33, -75)
[node name="TruckLadder" parent="Entities" instance=ExtResource("9_gisiu")]
-position = Vector2(33, -139)
+position = Vector2(50, -135)
[node name="TruckRecharge" parent="Entities" instance=ExtResource("10_cnjsq")]
-position = Vector2(-36, -154)
+position = Vector2(-46, -152)
[node name="Planet" parent="." node_paths=PackedStringArray("quota_reward", "import_entities_from_node") instance=ExtResource("8_t31p7")]
loot_item_number = Array[int]([1])
diff --git a/stages/terrain/planet/scripts/garden.gd b/stages/terrain/planet/scripts/garden.gd
index 0ed98a7..b215325 100644
--- a/stages/terrain/planet/scripts/garden.gd
+++ b/stages/terrain/planet/scripts/garden.gd
@@ -64,14 +64,11 @@ func plant(
type,
plant_mutations
)
-
plants.append(new_plant)
planet_data.score_by_plant.append(0)
new_plant.harvested.connect(_on_plant_harvested)
new_plant.state_changed.connect(_on_plant_state_changed)
- new_plant.ready.connect(
- func(): update_garden_score()
- )
+ get_tree().create_timer(0.05).timeout.connect(update_garden_score)
return new_plant
func _on_plant_state_changed(_p: Plant):
@@ -85,7 +82,8 @@ func remove_plant(p: Plant):
if id >= 0:
plants.remove_at(id)
planet_data.score_by_plant.remove_at(id)
- update_garden_score()
+
+ get_tree().create_timer(0.05).timeout.connect(update_garden_score)
func update_garden_score():
diff --git a/stages/terrain/planet/scripts/planet.gd b/stages/terrain/planet/scripts/planet.gd
index 31e8af8..f0e0a53 100644
--- a/stages/terrain/planet/scripts/planet.gd
+++ b/stages/terrain/planet/scripts/planet.gd
@@ -116,7 +116,6 @@ func plant(
if garden.is_in_garden(plant_position):
var new_plant = garden.plant(type, plant_mutations)
add_entity(new_plant, plant_position)
- garden.update_garden_score()
return true
return false
@@ -142,8 +141,7 @@ func pass_day():
if data.garden_score >= data.get_quota_score():
reach_quota()
-
- if data.quota_days <= 0:
+ elif data.quota_days <= 0:
day_limit_exceed.emit(self)
save()
diff --git a/stages/terrain/truck/scripts/truck_data.gd b/stages/terrain/truck/scripts/truck_data.gd
index bef3bd8..3231845 100644
--- a/stages/terrain/truck/scripts/truck_data.gd
+++ b/stages/terrain/truck/scripts/truck_data.gd
@@ -1,7 +1,8 @@
extends Resource
class_name TruckData
+@export var rewards_given : Array[Reward] = []
@export var rewards : Array[Reward] = []
@export var rewarded_times : int = 0
@export var compost_containing_seeds : Array[int] = []
-@export var entities_saved_data : Array[EntityData] = []
\ No newline at end of file
+@export var entities_saved_data : Array[EntityData] = []
diff --git a/stages/terrain/truck/scripts/truck_interior.gd b/stages/terrain/truck/scripts/truck_interior.gd
index 972f36f..31e7317 100644
--- a/stages/terrain/truck/scripts/truck_interior.gd
+++ b/stages/terrain/truck/scripts/truck_interior.gd
@@ -21,7 +21,10 @@ func _ready():
for i in range(len(composts)):
var compost = composts[i]
compost.containing_seed = data.compost_containing_seeds[i]
- compost.filled.connect(func (c: Compost): data.compost_containing_seeds[i] = c.containing_seed)
+ compost.filled.connect(
+ func (c: Compost):
+ data.compost_containing_seeds[i] = c.containing_seed
+ )
if i < len(data.rewards):
compost.reward = data.rewards[i]
@@ -35,6 +38,7 @@ func _ready():
func _on_compost_rewarded(c: Compost):
data.rewarded_times += 1
+ data.rewards_given.append(c.reward)
c.reward = generate_reward()
func get_compost_rewards() -> Array[Reward]:
@@ -45,26 +49,41 @@ func get_compost_rewards() -> Array[Reward]:
return rewards
func get_random_reward_cost() -> int:
- return randi_range(1 + data.rewarded_times * 2, 2 + data.rewarded_times * 2)
+ return randi_range(data.rewarded_times + 1, data.rewarded_times + 2)
func get_possible_rewards() -> Array[Reward]:
- return [
+ var possible_rewards : Array[Reward] = [
UpgradeMaxEnergyReward.new(get_random_reward_cost() + 2),
UpgradeMaxInventoryReward.new(get_random_reward_cost()),
GiveItemReward.new(
get_random_reward_cost(),
Blueprint.new(preload("res://entities/interactables/machines/solar_pannel/solar_pannel.tres"))
),
- GiveItemReward.new(
- get_random_reward_cost(),
- Knife.new()
- ),
- GiveItemReward.new(
- get_random_reward_cost(),
- Trowel.new()
- )
]
+ if data.rewards_given.find_custom(
+ func(r : Reward):
+ return r is GiveItemReward and r.item is Trowel
+ ) == -1:
+ possible_rewards.append(
+ GiveItemReward.new(
+ get_random_reward_cost(),
+ Knife.new()
+ )
+ )
+ if data.rewards_given.find_custom(
+ func(r : Reward):
+ return r is GiveItemReward and r.item is Knife
+ ) == -1:
+ possible_rewards.append(
+ GiveItemReward.new(
+ get_random_reward_cost(),
+ Trowel.new()
+ )
+ )
+
+ return possible_rewards
+
func generate_reward() -> Reward:
var max_tries = 3
var reward = get_possible_rewards().pick_random()
diff --git a/stages/title_screen/assets/textures/title.png b/stages/title_screen/assets/textures/title.png
new file mode 100644
index 0000000..9069300
Binary files /dev/null and b/stages/title_screen/assets/textures/title.png differ
diff --git a/stages/title_screen/assets/textures/title.png.import b/stages/title_screen/assets/textures/title.png.import
new file mode 100644
index 0000000..d261a93
--- /dev/null
+++ b/stages/title_screen/assets/textures/title.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cdpqg3pkjcw2h"
+path="res://.godot/imported/title.png-d45063d896f6ee3d177f9178ce51f6b0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://stages/title_screen/assets/textures/title.png"
+dest_files=["res://.godot/imported/title.png-d45063d896f6ee3d177f9178ce51f6b0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/stages/title_screen/scripts/planet_3d.gd b/stages/title_screen/scripts/planet_3d.gd
index 1b68ba9..b239003 100644
--- a/stages/title_screen/scripts/planet_3d.gd
+++ b/stages/title_screen/scripts/planet_3d.gd
@@ -7,12 +7,14 @@ class_name Planet3D
@export var radius : float = 8.0 :
set(v):
radius = maxf(1.0, v)
- update_terrain()
- update_water()
+ if is_node_ready():
+ update_terrain()
+ update_water()
@export var details : int = 64:
set(v):
details = maxi(1,v)
- update_terrain()
+ if is_node_ready():
+ update_terrain()
@export_group("Terrain")
@@ -24,8 +26,9 @@ class_name Planet3D
@export var height : float = 1.0 :
set(v):
height = maxf(0.0, v)
- update_terrain()
- update_water()
+ if is_node_ready():
+ update_terrain()
+ update_water()
@export var terrain_material : Material:
set(v):
terrain_material = v
@@ -34,17 +37,20 @@ class_name Planet3D
@export_tool_button("Random Noise", "Callable") var update_action = func():
noise = generate_noise()
- update_terrain()
+ if is_node_ready():
+ update_terrain()
@export_group("Water")
@export_range(0.0,1.0,0.05) var water_level := 0.:
set(v):
water_level = v
- update_water()
+ if is_node_ready():
+ update_water()
@export var water_detail := 64:
set(v):
water_detail = maxi(1, v)
- update_water()
+ if is_node_ready():
+ update_water()
@export var water_material : Material:
set(v):
water_material = v
diff --git a/stages/title_screen/title_screen.tscn b/stages/title_screen/title_screen.tscn
index b9f5d98..b25fa6e 100644
--- a/stages/title_screen/title_screen.tscn
+++ b/stages/title_screen/title_screen.tscn
@@ -2,8 +2,8 @@
[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/default_theme.tres" id="1_4ph5l"]
[ext_resource type="Script" uid="uid://cwmp2une7hobe" path="res://stages/title_screen/scripts/title_screen.gd" id="1_6yuhi"]
-[ext_resource type="Texture2D" uid="uid://nx4wxpr6mk8l" path="res://gui/menu/assets/texture/SeedingPlanetsLogo.png" id="2_qnk88"]
[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="3_6yuhi"]
+[ext_resource type="Texture2D" uid="uid://cdpqg3pkjcw2h" path="res://stages/title_screen/assets/textures/title.png" id="3_y6tw6"]
[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="4_y6tw6"]
[ext_resource type="PackedScene" uid="uid://cm5b7w7j6527f" path="res://stages/title_screen/planet_3d.tscn" id="5_7a1qq"]
[ext_resource type="Shader" uid="uid://bv2rghn44mrrf" path="res://stages/title_screen/resources/shaders/stars.gdshader" id="7_y6tw6"]
@@ -11,8 +11,8 @@
[sub_resource type="ViewportTexture" id="ViewportTexture_6yuhi"]
viewport_path = NodePath("SubViewport")
-[sub_resource type="FastNoiseLite" id="FastNoiseLite_6yuhi"]
-seed = 263046432
+[sub_resource type="FastNoiseLite" id="FastNoiseLite_7a1qq"]
+seed = -856983584
frequency = 1.0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_7a1qq"]
@@ -87,7 +87,7 @@ alignment = 1
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 4
-theme_override_constants/separation = 20
+theme_override_constants/separation = 40
alignment = 1
[node name="Logo" type="TextureRect" parent="MarginContainer/GridContainer/VBoxContainer"]
@@ -96,7 +96,7 @@ custom_minimum_size = Vector2(400, 0)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 0
-texture = ExtResource("2_qnk88")
+texture = ExtResource("3_y6tw6")
expand_mode = 5
stretch_mode = 5
@@ -168,7 +168,7 @@ size = Vector2i(1980, 1080)
[node name="Planet3d" parent="SubViewport" instance=ExtResource("5_7a1qq")]
unique_name_in_owner = true
-noise = SubResource("FastNoiseLite_6yuhi")
+noise = SubResource("FastNoiseLite_7a1qq")
[node name="Camera3D" type="Camera3D" parent="SubViewport"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 64.323425)