Zoom, nouvelles mutations et cie

* ajout d'une aide de jeu directement dans l'interface
* ajout de 8 nouvelles mutations (Productif, pressé, pur, vivace, généreux, robuste, protecteur et prolifique)
* changements d'icône pour plus de clarté
* changement de l'animation de recharge pour montrer le temps qui passe
* ajout des mutations rare et de la possibilité d'avoir des mutation niveau 2 dès le départ
* ajout d'un zoom
* correction de bugs (déplacement au dialogue, problème de score au load d'une région)
This commit is contained in:
2026-03-20 17:16:56 +01:00
parent 76707171fa
commit 4b16d52740
52 changed files with 1217 additions and 272 deletions

View File

@@ -8,6 +8,7 @@ const AMBIANCE_BUS_ID = 3
signal language_changed(settings : SettingsData)
signal sound_changed(settings : SettingsData)
signal video_changed(settings : SettingsData)
signal game_changed(settings : SettingsData)
#region ------------------ Language ------------------
@@ -52,4 +53,30 @@ const AVAILABLE_LANGUAGES_LABEL = [
#region ------------------ Controls ------------------
@export var action_remapped : Array[String] = []
@export var input_remapped : Array[InputEvent] = []
@export var input_remapped : Array[InputEvent] = []
#region ------------------ Game ------------------
const MAX_ZOOM = 1.8
const MIN_ZOOM = 0.9
# Not in settings pannel
@export var zoom : float = 1. :
set(v):
zoom = min(MAX_ZOOM,max(MIN_ZOOM,v))
game_changed.emit(self)
@export var closed_help_containers = []
func is_help_container_closed(help_container_name : String) -> bool:
return help_container_name in closed_help_containers
func close_help_container(help_container_name : String):
if not help_container_name in closed_help_containers:
closed_help_containers.append(help_container_name)
game_changed.emit(self)
func open_help_container(help_container_name : String):
if help_container_name in closed_help_containers:
closed_help_containers.erase(help_container_name)
game_changed.emit(self)

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#ffffff" class="icon icon-tabler icons-tabler-filled icon-tabler-carambola"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M17.108 22.085c-1.266 -.068 -2.924 -.859 -5.071 -2.355l-.04 -.027l-.037 .027c-2.147 1.497 -3.804 2.288 -5.072 2.356l-.178 .005c-2.747 0 -3.097 -2.64 -1.718 -7.244l.054 -.178l-.1 -.075c-6.056 -4.638 -5.046 -7.848 2.554 -8.066l.202 -.005l.115 -.326c1.184 -3.33 2.426 -5.085 4.027 -5.192l.156 -.005c1.674 0 2.957 1.76 4.182 5.197l.114 .326l.204 .005c7.6 .218 8.61 3.428 2.553 8.065l-.102 .075l.055 .178c1.35 4.512 1.04 7.137 -1.556 7.24l-.163 .003z" /></svg>

After

Width:  |  Height:  |  Size: 680 B

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bi5jo6pf0acjb"
path="res://.godot/imported/carambola.svg-5e6376705de1e490bd48f22ac6d19a49.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/carambola.svg"
dest_files=["res://.godot/imported/carambola.svg-5e6376705de1e490bd48f22ac6d19a49.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=2.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

1
common/icons/clock.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#ffffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-clock"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0" /><path d="M12 7v5l3 3" /></svg>

After

Width:  |  Height:  |  Size: 370 B

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dhy4ewvqvlxyi"
path="res://.godot/imported/clock.svg-730a4e7a10a1bf85842bb9f2c25ee2d8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/clock.svg"
dest_files=["res://.godot/imported/clock.svg-730a4e7a10a1bf85842bb9f2c25ee2d8.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#ffffff" class="icon icon-tabler icons-tabler-filled icon-tabler-help-hexagon"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M10.425 1.414a3.33 3.33 0 0 1 3.026 -.097l.19 .097l6.775 3.995l.096 .063l.092 .077l.107 .075a3.224 3.224 0 0 1 1.266 2.188l.018 .202l.005 .204v7.284c0 1.106 -.57 2.129 -1.454 2.693l-.17 .1l-6.803 4.302c-.918 .504 -2.019 .535 -3.004 .068l-.196 -.1l-6.695 -4.237a3.225 3.225 0 0 1 -1.671 -2.619l-.007 -.207v-7.285c0 -1.106 .57 -2.128 1.476 -2.705l6.95 -4.098zm1.575 13.586a1 1 0 0 0 -.993 .883l-.007 .117l.007 .127a1 1 0 0 0 1.986 0l.007 -.117l-.007 -.127a1 1 0 0 0 -.993 -.883zm1.368 -6.673a2.98 2.98 0 0 0 -3.631 .728a1 1 0 0 0 1.44 1.383l.171 -.18a.98 .98 0 0 1 1.11 -.15a1 1 0 0 1 -.34 1.886l-.232 .012a1 1 0 0 0 .111 1.994a3 3 0 0 0 1.371 -5.673z" /></svg>

After

Width:  |  Height:  |  Size: 887 B

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cwewx7cdy085h"
path="res://.godot/imported/help-hexagon.svg-b310627b5cc818562c34fa1902bdafb7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/help-hexagon.svg"
dest_files=["res://.godot/imported/help-hexagon.svg-b310627b5cc818562c34fa1902bdafb7.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=2.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

1
common/icons/moon.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#ffffff" class="icon icon-tabler icons-tabler-filled icon-tabler-moon"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 1.992a10 10 0 1 0 9.236 13.838c.341 -.82 -.476 -1.644 -1.298 -1.31a6.5 6.5 0 0 1 -6.864 -10.787l.077 -.08c.551 -.63 .113 -1.653 -.758 -1.653h-.266l-.068 -.006l-.06 -.002z" /></svg>

After

Width:  |  Height:  |  Size: 404 B

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://gtbfays7cdor"
path="res://.godot/imported/moon.svg-9c4e8477f53c467a6599cc3658d22d46.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/moon.svg"
dest_files=["res://.godot/imported/moon.svg-9c4e8477f53c467a6599cc3658d22d46.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=2.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

60
common/icons/seeds.svg Normal file
View File

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="#ffffff"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="icon icon-tabler icons-tabler-outline icon-tabler-plant-2"
version="1.1"
id="svg6"
sodipodi:docname="seeds.svg"
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs6" />
<sodipodi:namedview
id="namedview6"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="26.16295"
inkscape:cx="-2.0066544"
inkscape:cy="16.12968"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg6" />
<path
stroke="none"
d="M0 0h24v24H0z"
fill="none"
id="path1" />
<path
id="path2"
style="stroke-width:2"
d="m 9.3964844,3.8203125 c -6.3087771,4.5170981 -7.7591728,16.3594845 0,16.3593755 7.7604266,-1.09e-4 6.3101876,-11.8421034 0,-16.3593755 z"
sodipodi:nodetypes="csc" />
<path
id="path9"
style="stroke-width:2"
d="m 11.380952,19.89995 c 4.997012,1.875295 10.703665,-5.955998 9.810056,-12.6690638 -2.700034,-0.5354629 -5.542962,-0.030256 -7.99373,1.1437685"
sodipodi:nodetypes="ccc" />
<path
id="path10"
style="stroke-width:2"
d="m 7.3887542,15.160683 c 0.2417767,0.936357 0.9898376,1.613199 2.3553067,1.613182"
sodipodi:nodetypes="cc" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c2qg7ikkylfv4"
path="res://.godot/imported/seeds.svg-0b55654a8dffa8660c2d2b7ad24c47e7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/seeds.svg"
dest_files=["res://.godot/imported/seeds.svg-0b55654a8dffa8660c2d2b7ad24c47e7.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=2.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

1
common/icons/sun.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#ffffff" class="icon icon-tabler icons-tabler-filled icon-tabler-sun"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 19a1 1 0 0 1 .993 .883l.007 .117v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-1a1 1 0 0 1 1 -1z" /><path d="M18.313 16.91l.094 .083l.7 .7a1 1 0 0 1 -1.32 1.497l-.094 -.083l-.7 -.7a1 1 0 0 1 1.218 -1.567l.102 .07z" /><path d="M7.007 16.993a1 1 0 0 1 .083 1.32l-.083 .094l-.7 .7a1 1 0 0 1 -1.497 -1.32l.083 -.094l.7 -.7a1 1 0 0 1 1.414 0z" /><path d="M4 11a1 1 0 0 1 .117 1.993l-.117 .007h-1a1 1 0 0 1 -.117 -1.993l.117 -.007h1z" /><path d="M21 11a1 1 0 0 1 .117 1.993l-.117 .007h-1a1 1 0 0 1 -.117 -1.993l.117 -.007h1z" /><path d="M6.213 4.81l.094 .083l.7 .7a1 1 0 0 1 -1.32 1.497l-.094 -.083l-.7 -.7a1 1 0 0 1 1.217 -1.567l.102 .07z" /><path d="M19.107 4.893a1 1 0 0 1 .083 1.32l-.083 .094l-.7 .7a1 1 0 0 1 -1.497 -1.32l.083 -.094l.7 -.7a1 1 0 0 1 1.414 0z" /><path d="M12 2a1 1 0 0 1 .993 .883l.007 .117v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-1a1 1 0 0 1 1 -1z" /><path d="M12 7a5 5 0 1 1 -4.995 5.217l-.005 -.217l.005 -.217a5 5 0 0 1 4.995 -4.783z" /></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dkxkrerjh3xw3"
path="res://.godot/imported/sun.svg-6c9addda378e79701e69779b5a8164bb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/sun.svg"
dest_files=["res://.godot/imported/sun.svg-6c9addda378e79701e69779b5a8164bb.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=2.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

1
common/icons/tree.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#ffffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-tree"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 13l-2 -2" /><path d="M12 12l2 -2" /><path d="M12 21v-13" /><path d="M9.824 16a3 3 0 0 1 -2.743 -3.69a3 3 0 0 1 .304 -4.833a3 3 0 0 1 4.615 -3.707a3 3 0 0 1 4.614 3.707a3 3 0 0 1 .305 4.833a3 3 0 0 1 -2.919 3.695h-4l-.176 -.005" /></svg>

After

Width:  |  Height:  |  Size: 539 B

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bn2wkun71ocun"
path="res://.godot/imported/tree.svg-950893a0f1837215730a8a16c385f049.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/tree.svg"
dest_files=["res://.godot/imported/tree.svg-950893a0f1837215730a8a16c385f049.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=2.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -1,14 +1,29 @@
extends Camera2D
class_name Camera
const LERP_WEIGHT = 0.9
const MOVE_LERP_WEIGHT = 0.9
const ZOOM_LERP_WEIGHT = 0.05
const ZOOM_STEP = 0.1
@export var following : Node2D
@onready var settings = GameInfo.settings_data
func _input(_e):
if Input.is_action_just_pressed("zoom_in"):
settings.zoom = settings.zoom + ZOOM_STEP
GameInfo.save_settings()
if Input.is_action_just_pressed("zoom_out"):
settings.zoom = settings.zoom - ZOOM_STEP
GameInfo.save_settings()
func _ready():
if following:
zoom = Vector2.ONE * settings.zoom
global_position = following.global_position
func _process(_delta):
if following:
global_position = following.global_position.lerp(global_position, LERP_WEIGHT)
global_position = following.global_position.lerp(global_position, MOVE_LERP_WEIGHT)
zoom = zoom.lerp(Vector2.ONE * settings.zoom, MOVE_LERP_WEIGHT)

View File

@@ -11,8 +11,8 @@ const SCORE_ICON = preload("res://common/icons/growth.svg")
const DURATION_ICON = preload("res://common/icons/calendar-week.svg")
const SHOVEL_ICON = preload("res://common/icons/shovel.svg")
const GROWING_ICON = preload("res://common/icons/chevrons-up.svg")
const LIFETIME_ICON= preload("res://common/icons/skull.svg")
const SEED_ICON = preload("res://common/icons/droplets.svg")
const LIFETIME_ICON= preload("res://common/icons/clock.svg")
const SEED_ICON = preload("res://common/icons/seeds.svg")
const SPRITE_SCENE : PackedScene = preload("res://entities/plants/plant_sprite.tscn")
@@ -40,9 +40,11 @@ func _ready():
func (_d : RegionData):
await get_tree().create_timer(0.05).timeout
update_nearby_plant()
update_decontamination_area_factor()
)
await get_tree().create_timer(0.05).timeout
update_nearby_plant()
update_decontamination_area_factor()
func pointer_text() -> String:
return data.plant_name
@@ -151,6 +153,23 @@ func update_nearby_plant():
data.nearby_plant_updated.emit()
func update_decontamination_area_factor():
var factor = 0.
var full_decontaminated = true
var tiles = Math.get_tiles_in_circle(global_position, influence_zone.radius + Region.TILE_SIZE)
for tile : Vector2i in tiles:
if region.is_coords_decontaminated([tile]):
factor += 1./len(tiles)
else :
full_decontaminated = false
if full_decontaminated:
data.decontamination_area_factor = 1.
else:
data.decontamination_area_factor = factor
func save() -> EntityData:
return data

View File

@@ -13,10 +13,19 @@ class_name PlantArchetype
AncientMutation.new(),
EphemeralMutation.new(),
FertileMutation.new(),
GenerousMutation.new(),
HurriedMutation.new(),
PrecociousMutation.new(),
ProlificMutation.new(),
ProtectiveMutation.new(),
PureMutation.new(),
PurificationMutation.new(),
QualityMutation.new(),
QuickMutation.new(),
RobustMutation.new(),
SocialMutation.new(),
ToughMutation.new()
ToughMutation.new(),
VivaciousMutation.new(),
]
static func get_all() -> Array[PlantArchetype]:

View File

@@ -21,6 +21,7 @@ enum State {PLANTED, GROWING, MATURE, DEAD}
# var texture_builder: TextureBuilder = preload("res://entities/plants/scripts/texture_builder/texture_builder.tres")
var decontamination_area_factor = 0.
var nearby_plants : Array[PlantData]
func _init(
@@ -83,7 +84,10 @@ func get_score(state: State = get_state()) -> int:
score = m.mutate_score(self , score)
mult = m.mutate_score_multiplier(self , mult)
return score * mult
for pd in nearby_plants:
score += pd.get_score_buff()
return max(0,score) * mult
func get_state() -> State:
if day >= get_lifetime():
@@ -125,7 +129,7 @@ func get_lifetime_buff() -> int:
var buff = 0
for m in mutations:
buff += m.mutate_lifetime_buff(self)
buff = m.mutate_lifetime_buff(self, buff)
return buff
@@ -137,5 +141,13 @@ func get_seed_buff() -> int:
return buff
func get_score_buff() -> int:
var buff = 0
for m in mutations:
buff = m.mutate_score_buff(self, buff)
return buff
func disappear():
disappeared.emit(self )

View File

@@ -20,8 +20,7 @@ func get_mutation_id() -> String:
return ""
func get_mutation_name() -> String:
printerr("Classe abstraite PlantMutation appelée")
return ""
return tr(get_mutation_id())
func get_mutation_description() -> String:
printerr("Classe abstraite PlantMutation appelée")
@@ -48,12 +47,15 @@ func mutate_seed_number(_plant_data: PlantData, seed_number: int) -> int:
func mutate_seed_random_loose(_plant_data: PlantData, seed_random_loose) -> int:
return seed_random_loose
func mutate_lifetime_buff(_plant_data: PlantData) -> int:
return 0
func mutate_lifetime_buff(_plant_data: PlantData, lifetime_buff : int) -> int:
return lifetime_buff
func mutate_seed_buff(_plant_data: PlantData, seed_buff : int) -> int:
return seed_buff
func mutate_score_buff(_plant_data: PlantData, score_buff : int) -> int:
return score_buff
func _start_planted_effect(_plant: Plant):
pass

View File

@@ -4,6 +4,9 @@ class_name FertileMutation
func get_icon() -> Texture:
return preload("res://common/icons/seedling.svg")
func get_base_rarity() -> int:
return 1
func get_mutation_id() -> String:
return "FERTILE"
@@ -13,11 +16,19 @@ func get_mutation_name() -> String:
func get_mutation_description() -> String:
return tr("FERTILE_EFFECT_TEXT").format({
"seed_buff": get_seed_buff(),
"seed_icon": Text.bbcode_icon(Plant.SEED_ICON)
"seed_icon": Text.bbcode_icon(Plant.SEED_ICON),
"score_change": get_score_change(),
"score_icon": Text.bbcode_icon(Plant.SCORE_ICON),
})
func mutate_seed_buff(_plant_data: PlantData, seed_buff) -> int:
return seed_buff + get_seed_buff()
func mutate_score(_plant_data: PlantData, score: int) -> int:
return score + get_score_change()
func get_seed_buff():
return level
return level
func get_score_change():
return -1

View File

@@ -0,0 +1,30 @@
extends PlantMutation
class_name GenerousMutation
func get_icon() -> Texture:
return preload("res://common/icons/carambola.svg")
func get_base_rarity() -> int:
return 1
func get_mutation_id() -> String:
return "GENEROUS"
func get_mutation_description() -> String:
return tr("GENEROUS_EFFECT_TEXT").format({
"score_buff": get_score_buff(),
"score_icon": Text.bbcode_icon(Plant.SCORE_ICON)
})
func mutate_score_multiplier(plant_data: PlantData, multiplier: int) -> int:
if plant_data.get_state() == PlantData.State.MATURE:
return 0
return multiplier
func mutate_score_buff(plant_data: PlantData, score_buff : int) -> int:
if plant_data.get_state() == PlantData.State.MATURE:
return score_buff + get_score_buff()
return score_buff
func get_score_buff():
return level

View File

@@ -0,0 +1 @@
uid://7bfgsrkp6gaq

View File

@@ -0,0 +1,23 @@
extends PlantMutation
class_name HurriedMutation
func get_icon() -> Texture:
return preload("res://common/icons/chevrons-up.svg")
func get_base_rarity() -> int:
return 1
func get_mutation_id() -> String:
return "HURRIED"
func get_mutation_description() -> String:
return tr("HURRIED_EFFECT_TEXT").format({
"growing_time_change": get_growing_time_change(),
"growing_time_icon": Text.bbcode_icon(Plant.GROWING_ICON)
})
func mutate_growing_time(_plant_data: PlantData, growing_time: int) -> int:
return growing_time + get_growing_time_change()
func get_growing_time_change():
return -level

View File

@@ -0,0 +1 @@
uid://ch44r5vkwpkwc

View File

@@ -0,0 +1,20 @@
extends PlantMutation
class_name ProlificMutation
func get_icon() -> Texture:
return preload("res://common/icons/droplets.svg")
func get_mutation_id() -> String:
return "PROLIFIC"
func get_mutation_description() -> String:
return tr("PROLIFIC_EFFECT_TEXT").format({
"seeds_change": get_seed_change(),
"seeds_icon": Text.bbcode_icon(Plant.SEED_ICON)
})
func mutate_seed_number(_plant_data: PlantData, seed_number: int) -> int:
return get_seed_change() + seed_number
func get_seed_change():
return level

View File

@@ -0,0 +1 @@
uid://csk5xull465m3

View File

@@ -0,0 +1,20 @@
extends PlantMutation
class_name ProtectiveMutation
func get_icon() -> Texture:
return preload("res://common/icons/tree.svg")
func get_mutation_id() -> String:
return "PROTECTIVE"
func get_mutation_description() -> String:
return tr("PROTECTIVE_EFFECT_TEXT").format({
"lifetime_buff": get_lifetime_buff(),
"lifetime_icon": Text.bbcode_icon(Plant.LIFETIME_ICON)
})
func mutate_lifetime_buff(_plant_data: PlantData, lifetime_buff : int) -> int:
return lifetime_buff + get_lifetime_buff()
func get_lifetime_buff():
return level

View File

@@ -0,0 +1 @@
uid://b5nc8f0gnalxu

View File

@@ -0,0 +1,25 @@
extends PlantMutation
class_name PureMutation
func get_icon() -> Texture:
return preload("res://common/icons/north-star.svg")
func get_mutation_id() -> String:
return "PURE"
func get_base_rarity() -> int:
return 1
func get_mutation_description() -> String:
return tr("PURE_EFFECT_TEXT").format({
"score_icon": Text.bbcode_icon(Plant.SCORE_ICON),
"score_multiplier": get_score_multiplier(),
})
func mutate_score_multiplier(plant_data: PlantData, multiplier: int) -> int:
if plant_data.decontamination_area_factor == 1.0:
return multiplier * get_score_multiplier()
return multiplier
func get_score_multiplier()->int:
return level

View File

@@ -0,0 +1 @@
uid://dh5m6tvkewad6

View File

@@ -2,17 +2,11 @@ extends PlantMutation
class_name QualityMutation
func get_icon() -> Texture:
return preload("res://common/icons/north-star.svg")
func get_base_rarity() -> int:
return 0
return preload("res://common/icons/growth.svg")
func get_mutation_id() -> String:
return "QUALITY"
func get_mutation_name() -> String:
return tr("QUALITY")
func get_mutation_description() -> String:
return tr("QUALITY_EFFECT_TEXT").format({
"score": get_score(),

View File

@@ -0,0 +1,20 @@
extends PlantMutation
class_name RobustMutation
func get_icon() -> Texture:
return preload("res://common/icons/clock.svg")
func get_mutation_id() -> String:
return "ROBUST"
func get_mutation_description() -> String:
return tr("ROBUST_EFFECT_TEXT").format({
"lifetime_change": get_lifetime_change(),
"lifetime_icon": Text.bbcode_icon(Plant.LIFETIME_ICON)
})
func mutate_lifetime(_plant_data: PlantData, lifetime: int) -> int:
return lifetime + get_lifetime_change()
func get_lifetime_change():
return level * 2

View File

@@ -0,0 +1 @@
uid://cjcylscs6qn4x

View File

@@ -0,0 +1,22 @@
extends PlantMutation
class_name VivaciousMutation
func get_icon() -> Texture:
return preload("res://common/icons/bolt.svg")
func get_mutation_id() -> String:
return "VIVACIOUS"
func get_mutation_description() -> String:
return tr("VIVACIOUS_EFFECT_TEXT").format({
"score_change": get_score_change(),
"score_icon": Text.bbcode_icon(Plant.SCORE_ICON)
})
func mutate_score(data : PlantData, score : int) -> int:
if data.day == data.get_growing_time():
return score + get_score_change()
return score
func get_score_change():
return level * 2

View File

@@ -0,0 +1 @@
uid://boq38l1dmjvot

View File

@@ -125,8 +125,9 @@ func build_plant_texture(plant_data: PlantData) -> Texture:
parts_to_place[OriginType.BASE_LEAF_ORIGIN] = base_leaves
var mutation_weights: Array[int] = []
for mutation in plant_data.mutations:
parts_to_place[OriginType.MUTATION_ORIGIN].append(parts_mutation_associations[mutation.id].parts)
mutation_weights.append(mutation_weight_base)
if mutation.id in parts_mutation_associations:
parts_to_place[OriginType.MUTATION_ORIGIN].append(parts_mutation_associations[mutation.id].parts)
mutation_weights.append(mutation_weight_base)
var base_image_coord = blend_part(image_center, -base_part.root.position, base_part)
populate_part(parts_to_place, weight_per_origin_type, mutation_weights, base_part, base_image_coord)

View File

@@ -7,6 +7,8 @@ const SHOVEL_ICON = preload("res://common/icons/shovel.svg")
const GROWING_ICON = preload("res://common/icons/chevrons-up.svg")
const SCORE_ICON = preload("res://common/icons/growth.svg")
const RARITY_POOL : Array[int] = [0,0,0,0,0,0,0,1,1,1]
@export var plant_name : String
@export var plant_archetype: PlantArchetype
@export var plant_mutations: Array[PlantMutation]
@@ -39,12 +41,11 @@ static func generate_from_parent(plant_data : PlantData) -> Seed:
static func generate_random() -> Seed:
var archetype = PlantArchetype.get_random()
var random_mutations : Array[PlantMutation] = []
random_mutations.append(archetype.available_mutations.pick_random().duplicate_deep())
var new_seed = Seed.new(
Random.generate_random_word(),
PlantArchetype.get_random(),
random_mutations
[generate_first_mutation(archetype)]
)
return new_seed
@@ -141,6 +142,19 @@ func get_particles() -> Array[EffectParticles.Parameters]:
return param
static func generate_first_mutation(archetype : PlantArchetype) -> PlantMutation:
var rarity : int = RARITY_POOL.pick_random()
var possible_mutation : PlantMutation = archetype.available_mutations.filter(
func (m : PlantMutation): return m.get_base_rarity() <= rarity
).pick_random().duplicate_deep()
var level_to_add = rarity - possible_mutation.get_base_rarity()
possible_mutation.level += level_to_add
return possible_mutation
static func mutate_mutations(parent : PlantData) -> Array[PlantMutation]:
var mutation_possibility : Array[MutationPossibility] = [
@@ -152,13 +166,11 @@ static func mutate_mutations(parent : PlantData) -> Array[PlantMutation]:
):
mutation_possibility = [
UpgradeMutation.new(),
RemoveMutation.new(),
]
elif len(parent.mutations) > 0:
mutation_possibility = [
AddMutation.new(),
UpgradeMutation.new(),
RemoveMutation.new(),
]
var chosen_mutation_possibility = mutation_possibility.pick_random()

View File

@@ -7,6 +7,7 @@ const PARTICLES_DISTANCE = 100
const DEFAULT_ICON = preload("res://common/icons/north-star.svg")
const ENERGY_ICON = preload("res://common/icons/bolt.svg")
const DOOR_ICON = preload("res://common/icons/logout.svg")
const PLANT_ICON = preload("res://common/icons/seedling.svg")
var started_time = 0.
var signals : Array[DetectorSignalIndividual] = []
@@ -30,6 +31,13 @@ func _init(region : Region, pos : Vector2):
DOOR_ICON
)
)
if e is Plant:
signals.append(
DetectorSignalIndividual.new(
(pos - e.global_position).normalized().angle(),
PLANT_ICON
)
)
func _draw():
if started_time < SIGNAL_DURATION:

View File

@@ -59,6 +59,8 @@ func _physics_process(delta):
else:
velocity.x = move_toward(velocity.x, 0, speed)
velocity.z = move_toward(velocity.z, 0, speed)
else :
velocity = Vector3.ZERO
# Add the gravity.
if not is_on_floor():

View File

@@ -11,6 +11,16 @@
[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="PackedScene" uid="uid://clicjf8ts51h8" path="res://gui/game/inventory_gui/inventory_gui.tscn" id="9_id0t5"]
[ext_resource type="Texture2D" uid="uid://cwewx7cdy085h" path="res://common/icons/help-hexagon.svg" id="12_negho"]
[ext_resource type="Theme" uid="uid://5au2k3vf2po3" path="res://gui/ressources/menu.tres" id="12_nhqnj"]
[ext_resource type="Texture2D" uid="uid://bgcymkgxk7mpp" path="res://gui/pause/assets/textures/moss_tutorial_image.png" id="12_p0xoq"]
[ext_resource type="Script" uid="uid://c65cf2ksbsxwg" path="res://gui/game/help/scripts/help_container.gd" id="13_rcm5b"]
[ext_resource type="Texture2D" uid="uid://d3ksdxepcjoot" path="res://common/icons/calendar-week.svg" id="13_w16yr"]
[ext_resource type="Texture2D" uid="uid://cgmxjom200bej" path="res://common/icons/chevrons-up.svg" id="14_mbdxg"]
[ext_resource type="Texture2D" uid="uid://bhogi5kkltx51" path="res://gui/pause/assets/textures/rock_tutorial_image.png" id="14_negho"]
[ext_resource type="Texture2D" uid="uid://3fwhxkd0ycga" path="res://gui/pause/assets/textures/talion_tutorial_image.png" id="15_rcm5b"]
[ext_resource type="Texture2D" uid="uid://dhy4ewvqvlxyi" path="res://common/icons/clock.svg" id="20_ajf5p"]
[ext_resource type="Texture2D" uid="uid://c2qg7ikkylfv4" path="res://common/icons/seeds.svg" id="21_jomh8"]
[sub_resource type="Gradient" id="Gradient_ykapk"]
offsets = PackedFloat32Array(0.47639486, 1)
@@ -26,6 +36,10 @@ fill_to = Vector2(1.5, 0.5)
font = ExtResource("6_2wykm")
font_size = 40
[sub_resource type="LabelSettings" id="LabelSettings_rcm5b"]
font = ExtResource("6_2wykm")
font_size = 20
[node name="GameGui" type="CanvasLayer" unique_id=274698556]
script = ExtResource("1_udau0")
@@ -119,3 +133,228 @@ 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]
layout_mode = 2
size_flags_horizontal = 8
size_flags_vertical = 0
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/Help" unique_id=58561073]
layout_mode = 2
theme_override_constants/separation = 5
alignment = 2
[node name="TextureRect" type="TextureRect" parent="MarginContainer/Help/HBoxContainer" unique_id=147740513]
layout_mode = 2
texture = ExtResource("12_negho")
expand_mode = 3
stretch_mode = 5
[node name="Label" type="Label" parent="MarginContainer/Help/HBoxContainer" unique_id=245455638]
layout_mode = 2
text = "HELP"
label_settings = SubResource("LabelSettings_rcm5b")
[node name="TerrainHelp" type="FoldableContainer" parent="MarginContainer/Help" unique_id=765624548]
custom_minimum_size = Vector2(300, 0)
layout_mode = 2
size_flags_horizontal = 8
size_flags_vertical = 0
title = "TERRAINS"
script = ExtResource("13_rcm5b")
help_container_name = "terrain"
[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/Help/TerrainHelp" unique_id=276300201]
layout_mode = 2
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
[node name="Zones" type="VBoxContainer" parent="MarginContainer/Help/TerrainHelp/MarginContainer" unique_id=897827374]
layout_mode = 2
[node name="Moss" type="HBoxContainer" parent="MarginContainer/Help/TerrainHelp/MarginContainer/Zones" unique_id=1245369351]
layout_mode = 2
size_flags_horizontal = 3
[node name="TextureRect" type="TextureRect" parent="MarginContainer/Help/TerrainHelp/MarginContainer/Zones/Moss" unique_id=590490498]
custom_minimum_size = Vector2(0, 60)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
texture = ExtResource("12_p0xoq")
expand_mode = 3
stretch_mode = 5
[node name="RichText" type="RichTextLabel" parent="MarginContainer/Help/TerrainHelp/MarginContainer/Zones/Moss" unique_id=1908542695]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("12_nhqnj")
theme_override_fonts/bold_font = ExtResource("6_2wykm")
theme_override_font_sizes/normal_font_size = 15
theme_override_font_sizes/bold_font_size = 18
bbcode_enabled = true
text = "FERTILE_LAND_TEXT"
fit_content = true
vertical_alignment = 1
[node name="Rock" type="HBoxContainer" parent="MarginContainer/Help/TerrainHelp/MarginContainer/Zones" unique_id=1388177815]
layout_mode = 2
size_flags_horizontal = 3
[node name="TextureRect" type="TextureRect" parent="MarginContainer/Help/TerrainHelp/MarginContainer/Zones/Rock" unique_id=84789195]
custom_minimum_size = Vector2(0, 60)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
texture = ExtResource("14_negho")
expand_mode = 3
stretch_mode = 5
[node name="RichText" type="RichTextLabel" parent="MarginContainer/Help/TerrainHelp/MarginContainer/Zones/Rock" unique_id=584054118]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("12_nhqnj")
theme_override_fonts/bold_font = ExtResource("6_2wykm")
theme_override_font_sizes/normal_font_size = 15
theme_override_font_sizes/bold_font_size = 18
bbcode_enabled = true
text = "ROCK_TEXT"
fit_content = true
vertical_alignment = 1
[node name="Talion" type="HBoxContainer" parent="MarginContainer/Help/TerrainHelp/MarginContainer/Zones" unique_id=786946987]
layout_mode = 2
size_flags_horizontal = 3
[node name="TextureRect" type="TextureRect" parent="MarginContainer/Help/TerrainHelp/MarginContainer/Zones/Talion" unique_id=1949577473]
custom_minimum_size = Vector2(0, 60)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
texture = ExtResource("15_rcm5b")
expand_mode = 3
stretch_mode = 5
[node name="RichText" type="RichTextLabel" parent="MarginContainer/Help/TerrainHelp/MarginContainer/Zones/Talion" unique_id=813195094]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("12_nhqnj")
theme_override_fonts/bold_font = ExtResource("6_2wykm")
theme_override_font_sizes/normal_font_size = 15
theme_override_font_sizes/bold_font_size = 18
bbcode_enabled = true
text = "TALION_VEIN_TEXT"
fit_content = true
vertical_alignment = 1
[node name="IconHelp" type="FoldableContainer" parent="MarginContainer/Help" unique_id=506997372]
custom_minimum_size = Vector2(300, 0)
layout_mode = 2
size_flags_horizontal = 8
size_flags_vertical = 0
title = "ICONS_MEANINGS"
script = ExtResource("13_rcm5b")
help_container_name = "icon"
[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/Help/IconHelp" unique_id=2076413829]
layout_mode = 2
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
[node name="IconsGrid" type="VBoxContainer" parent="MarginContainer/Help/IconHelp/MarginContainer" unique_id=443451416]
layout_mode = 2
alignment = 1
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/Help/IconHelp/MarginContainer/IconsGrid" unique_id=1230753118]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="MarginContainer/Help/IconHelp/MarginContainer/IconsGrid/HBoxContainer" unique_id=582458449]
custom_minimum_size = Vector2(25, 25)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("6_id0t5")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="MarginContainer/Help/IconHelp/MarginContainer/IconsGrid/HBoxContainer" unique_id=452890750]
layout_mode = 2
theme = ExtResource("12_nhqnj")
text = "PLANT_POINTS"
vertical_alignment = 1
[node name="HBoxContainer2" type="HBoxContainer" parent="MarginContainer/Help/IconHelp/MarginContainer/IconsGrid" unique_id=1347045145]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="MarginContainer/Help/IconHelp/MarginContainer/IconsGrid/HBoxContainer2" unique_id=157378534]
custom_minimum_size = Vector2(25, 25)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("13_w16yr")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="MarginContainer/Help/IconHelp/MarginContainer/IconsGrid/HBoxContainer2" unique_id=787250244]
layout_mode = 2
theme = ExtResource("12_nhqnj")
text = "DAYS"
vertical_alignment = 1
[node name="HBoxContainer3" type="HBoxContainer" parent="MarginContainer/Help/IconHelp/MarginContainer/IconsGrid" unique_id=209714175]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="MarginContainer/Help/IconHelp/MarginContainer/IconsGrid/HBoxContainer3" unique_id=1390720076]
custom_minimum_size = Vector2(25, 25)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("14_mbdxg")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="MarginContainer/Help/IconHelp/MarginContainer/IconsGrid/HBoxContainer3" unique_id=1494799300]
layout_mode = 2
theme = ExtResource("12_nhqnj")
text = "GROWING_TIME"
vertical_alignment = 1
[node name="HBoxContainer4" type="HBoxContainer" parent="MarginContainer/Help/IconHelp/MarginContainer/IconsGrid" unique_id=2039812090]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="MarginContainer/Help/IconHelp/MarginContainer/IconsGrid/HBoxContainer4" unique_id=353853877]
custom_minimum_size = Vector2(25, 25)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("20_ajf5p")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="MarginContainer/Help/IconHelp/MarginContainer/IconsGrid/HBoxContainer4" unique_id=2071201389]
layout_mode = 2
theme = ExtResource("12_nhqnj")
text = "LIFETIME"
vertical_alignment = 1
[node name="HBoxContainer5" type="HBoxContainer" parent="MarginContainer/Help/IconHelp/MarginContainer/IconsGrid" unique_id=1706837358]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="MarginContainer/Help/IconHelp/MarginContainer/IconsGrid/HBoxContainer5" unique_id=298500502]
custom_minimum_size = Vector2(25, 25)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("21_jomh8")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="MarginContainer/Help/IconHelp/MarginContainer/IconsGrid/HBoxContainer5" unique_id=1100044131]
layout_mode = 2
theme = ExtResource("12_nhqnj")
text = "SEEDS"
vertical_alignment = 1

View File

@@ -0,0 +1,18 @@
extends FoldableContainer
class_name HelpContainer
@export var help_container_name : String = ""
@onready var settings := GameInfo.settings_data
# Called when the node enters the scene tree for the first time.
func _ready():
folded = settings.is_help_container_closed(help_container_name)
folding_changed.connect(_on_folding_changed)
func _on_folding_changed(f : bool):
if f:
settings.close_help_container(help_container_name)
else:
settings.open_help_container(help_container_name)
GameInfo.save_settings()

View File

@@ -0,0 +1 @@
uid://c65cf2ksbsxwg

View File

@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="70mm"
height="70mm"
viewBox="0 0 70 70.000001"
version="1.1"
id="svg1"
xml:space="preserve"
sodipodi:docname="day_night_sprite.svg"
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:document-units="mm"
inkscape:zoom="1.837864"
inkscape:cx="14.418913"
inkscape:cy="194.24724"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" /><defs
id="defs1" /><g
id="layer1"
transform="translate(-75.631351,-123.22046)"><g
style="fill:#ffffff"
id="g1"
transform="matrix(-0.26458333,0,0,-0.26458333,113.80635,190.18012)"><path
stroke="none"
d="M 0,0 H 24 V 24 H 0 Z"
fill="none"
id="path1" /><path
d="M 12,1.992 A 10,10 0 1 0 21.236,15.83 C 21.577,15.01 20.76,14.186 19.938,14.52 A 6.5,6.5 0 0 1 13.074,3.733 l 0.077,-0.08 C 13.702,3.023 13.264,2 12.393,2 H 12.127 L 12.059,1.994 11.999,1.992 Z"
id="path2" /></g><g
style="fill:#ffffff"
id="g2"
transform="matrix(0.26458333,0,0,0.26458333,107.45635,126.26081)"><path
stroke="none"
d="M 0,0 H 24 V 24 H 0 Z"
fill="none"
id="path1-2" /><path
d="m 12,19 a 1,1 0 0 1 0.993,0.883 L 13,20 v 1 a 1,1 0 0 1 -1.993,0.117 L 11,21 v -1 a 1,1 0 0 1 1,-1 z"
id="path2-6" /><path
d="m 18.313,16.91 0.094,0.083 0.7,0.7 a 1,1 0 0 1 -1.32,1.497 l -0.094,-0.083 -0.7,-0.7 a 1,1 0 0 1 1.218,-1.567 z"
id="path3" /><path
d="m 7.007,16.993 a 1,1 0 0 1 0.083,1.32 l -0.083,0.094 -0.7,0.7 A 1,1 0 0 1 4.81,17.787 l 0.083,-0.094 0.7,-0.7 a 1,1 0 0 1 1.414,0 z"
id="path4" /><path
d="m 4,11 a 1,1 0 0 1 0.117,1.993 L 4,13 H 3 A 1,1 0 0 1 2.883,11.007 L 3,11 Z"
id="path5" /><path
d="m 21,11 a 1,1 0 0 1 0.117,1.993 L 21,13 H 20 A 1,1 0 0 1 19.883,11.007 L 20,11 Z"
id="path6" /><path
d="m 6.213,4.81 0.094,0.083 0.7,0.7 A 1,1 0 0 1 5.687,7.09 L 5.593,7.007 4.893,6.307 A 1,1 0 0 1 6.11,4.74 l 0.102,0.07 z"
id="path7" /><path
d="m 19.107,4.893 a 1,1 0 0 1 0.083,1.32 l -0.083,0.094 -0.7,0.7 A 1,1 0 0 1 16.91,5.687 l 0.083,-0.094 0.7,-0.7 a 1,1 0 0 1 1.414,0 z"
id="path8" /><path
d="m 12,2 a 1,1 0 0 1 0.993,0.883 L 13,3 V 4 A 1,1 0 0 1 11.007,4.117 L 11,4 V 3 a 1,1 0 0 1 1,-1 z"
id="path9" /><path
d="M 12,7 A 5,5 0 1 1 7.005,12.217 L 7,12 7.005,11.783 A 5,5 0 0 1 12,7 Z"
id="path10" /></g><path
id="path11"
style="fill:none;stroke:#ffffff;stroke-width:0.265;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
d="m 116.12972,186.7497 c 13.66915,-2.63116 23.55853,-14.57743 23.59081,-28.49748 -0.002,-13.94398 -9.8982,-25.92534 -23.59081,-28.56105 m -10.99674,0.0636 c -13.669155,2.63116 -23.558531,14.57744 -23.590808,28.49749 0.03228,13.92005 9.921656,25.86632 23.590808,28.49748" /></g></svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cihiibon53147"
path="res://.godot/imported/day_night_sprite.svg-b89d7f3e525bc11818c231dc87fa599b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://gui/game/pass_day/assets/day_night_sprite.svg"
dest_files=["res://.godot/imported/day_night_sprite.svg-b89d7f3e525bc11818c231dc87fa599b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=2.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@@ -7,20 +7,60 @@
[ext_resource type="Theme" uid="uid://5au2k3vf2po3" path="res://gui/ressources/menu.tres" id="4_0pm4g"]
[ext_resource type="Script" uid="uid://0dhj8sdpil7q" path="res://gui/tools/control_animation_player.gd" id="5_dqmg8"]
[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="6_dqmg8"]
[ext_resource type="Texture2D" uid="uid://cihiibon53147" path="res://gui/game/pass_day/assets/day_night_sprite.svg" id="7_m84xg"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_27lg1"]
shader = ExtResource("1_v570a")
shader_parameter/strength = 0.0
shader_parameter/mix_percentage = 0.0
shader_parameter/strength = 5.45500025585262
shader_parameter/mix_percentage = 0.02400000114
[sub_resource type="ViewportTexture" id="ViewportTexture_h2bel"]
viewport_path = NodePath("NightAnimation/SubViewport")
[sub_resource type="Animation" id="Animation_rn4dm"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SubViewport/NightAnimationSprite:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
[sub_resource type="Animation" id="Animation_5ap0m"]
resource_name = "pass"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SubViewport/NightAnimationSprite:rotation")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.26666668, 0.7, 1),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [0.0, 3.141592653589793, 3.141592653589793, 6.265732014659643]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_wafeq"]
_data = {
&"RESET": SubResource("Animation_rn4dm"),
&"pass": SubResource("Animation_5ap0m")
}
[node name="PassDay" type="CanvasLayer" unique_id=335255544]
layer = 3
visible = false
script = ExtResource("1_0pm4g")
[node name="Blur" type="ColorRect" parent="." unique_id=546890405]
unique_name_in_owner = true
physics_interpolation_mode = 0
visible = false
material = SubResource("ShaderMaterial_27lg1")
anchors_preset = 15
anchor_right = 1.0
@@ -32,7 +72,6 @@ script = ExtResource("2_bhfpo")
[node name="PassDayInfo" type="VBoxContainer" parent="." unique_id=833110506]
unique_name_in_owner = true
visible = false
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
@@ -46,11 +85,6 @@ unique_name_in_owner = true
script = ExtResource("5_dqmg8")
metadata/_custom_type_script = "uid://0dhj8sdpil7q"
[node name="EnergyPassDayInfo" parent="PassDayInfo" unique_id=2044341204 instance=ExtResource("2_feyaf")]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 6
[node name="ChargeCount" type="Label" parent="PassDayInfo" unique_id=1326590358]
unique_name_in_owner = true
layout_mode = 2
@@ -60,3 +94,48 @@ text = "%d_CHARGE_LEFT"
label_settings = ExtResource("6_dqmg8")
horizontal_alignment = 1
vertical_alignment = 1
[node name="NightAnimation" type="TextureRect" parent="." unique_id=126988628]
unique_name_in_owner = true
custom_minimum_size = Vector2(500, 0)
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -166.0
offset_top = -178.5
offset_right = 166.0
offset_bottom = 178.5
grow_horizontal = 2
grow_vertical = 2
texture = SubResource("ViewportTexture_h2bel")
expand_mode = 5
stretch_mode = 5
[node name="NightAnimationPlayer" type="AnimationPlayer" parent="NightAnimation" unique_id=787903570]
unique_name_in_owner = true
libraries/ = SubResource("AnimationLibrary_wafeq")
[node name="SubViewport" type="SubViewport" parent="NightAnimation" unique_id=1324502966]
transparent_bg = true
size = Vector2i(500, 500)
[node name="NightAnimationSprite" type="Sprite2D" parent="NightAnimation/SubViewport" unique_id=43111409]
position = Vector2(250, 250)
texture = ExtResource("7_m84xg")
[node name="MarginContainer" type="MarginContainer" parent="." unique_id=1163984124]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 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
[node name="EnergyPassDayInfo" parent="MarginContainer" unique_id=2044341204 instance=ExtResource("2_feyaf")]
unique_name_in_owner = true
layout_mode = 2

View File

@@ -47,7 +47,7 @@ func setup_energy_values():
current_energy = from_energy
func pass_day_animation():
setup_energy_values()
%ChargeCount.text = tr('%d_CHARGE_LEFT') % GameInfo.game_data.current_region_data.charges
@@ -60,6 +60,7 @@ func pass_day_animation():
await appear()
is_animation_appeared = true
animation_appeared.emit()
%NightAnimationPlayer.play("pass")
await get_tree().create_timer(TIME_MARGIN).timeout
recharging = true
time_since_recharging = 0.
@@ -78,12 +79,20 @@ func appear():
BLUR_MIX_PERCENTAGE,
0.5
)
add_tween(
"modulate:a",
%NightAnimation,
1.,
0.5
)
await add_tween(
"blur_strength",
%Blur,
BLUR_STRENGTH,
0.5
).finished
await %PassDayInfoAnimationPlayer.appear()
func disappear():
@@ -94,12 +103,19 @@ func disappear():
0.0,
0.5
)
add_tween(
"modulate:a",
%NightAnimation,
0.,
0.5
)
await add_tween(
"blur_strength",
%Blur,
0.1,
0.5
).finished
hide()
func add_tween(

View File

@@ -10,15 +10,7 @@
[ext_resource type="Texture2D" uid="uid://bkwhrq4sp5dcp" path="res://common/icons/device-gamepad.svg" id="7_7c7ks"]
[ext_resource type="Texture2D" uid="uid://dex283rx00fjb" path="res://common/icons/logout.svg" id="7_yj6f1"]
[ext_resource type="Texture2D" uid="uid://b43thuq8piv18" path="res://common/icons/skull.svg" id="8_mnkqy"]
[ext_resource type="Theme" uid="uid://5au2k3vf2po3" path="res://gui/ressources/menu.tres" id="9_7c7ks"]
[ext_resource type="Texture2D" uid="uid://bt3g5bmar0icf" path="res://common/icons/growth.svg" id="10_q8jjs"]
[ext_resource type="Texture2D" uid="uid://bgcymkgxk7mpp" path="res://gui/pause/assets/textures/moss_tutorial_image.png" id="11_mnkqy"]
[ext_resource type="PackedScene" uid="uid://b4qe1dwwsk87t" path="res://gui/menu/controls/controls.tscn" id="11_urlqn"]
[ext_resource type="Texture2D" uid="uid://bhogi5kkltx51" path="res://gui/pause/assets/textures/rock_tutorial_image.png" id="12_mvn7k"]
[ext_resource type="Texture2D" uid="uid://d3ksdxepcjoot" path="res://common/icons/calendar-week.svg" id="12_s2e8t"]
[ext_resource type="Texture2D" uid="uid://3fwhxkd0ycga" path="res://gui/pause/assets/textures/talion_tutorial_image.png" id="13_4n2vt"]
[ext_resource type="Texture2D" uid="uid://cgmxjom200bej" path="res://common/icons/chevrons-up.svg" id="13_4r74r"]
[ext_resource type="Texture2D" uid="uid://el06htgr2pda" path="res://common/icons/droplets.svg" id="14_osk7v"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_58dya"]
shader = ExtResource("2_apjlw")
@@ -125,11 +117,7 @@ grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1_51ks3")
[node name="GridContainer" type="GridContainer" parent="Container/MarginContainer" unique_id=1993147027]
layout_mode = 2
columns = 2
[node name="Pause" type="VBoxContainer" parent="Container/MarginContainer/GridContainer" unique_id=1262577626]
[node name="Pause" type="VBoxContainer" parent="Container/MarginContainer" unique_id=1262577626]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
@@ -137,236 +125,44 @@ theme = ExtResource("1_51ks3")
theme_override_constants/separation = 20
alignment = 1
[node name="PauseTitle" type="Label" parent="Container/MarginContainer/GridContainer/Pause" unique_id=1390949032]
[node name="PauseTitle" type="Label" parent="Container/MarginContainer/Pause" unique_id=1390949032]
layout_mode = 2
text = "PAUSE"
label_settings = SubResource("LabelSettings_apjlw")
horizontal_alignment = 1
[node name="HBoxContainer" type="VBoxContainer" parent="Container/MarginContainer/GridContainer/Pause" unique_id=616663351]
[node name="HBoxContainer" type="VBoxContainer" parent="Container/MarginContainer/Pause" unique_id=616663351]
layout_mode = 2
size_flags_horizontal = 4
alignment = 1
[node name="Resume" type="Button" parent="Container/MarginContainer/GridContainer/Pause/HBoxContainer" unique_id=163836777]
[node name="Resume" type="Button" parent="Container/MarginContainer/Pause/HBoxContainer" unique_id=163836777]
layout_mode = 2
theme = ExtResource("1_51ks3")
text = "RESUME_GAME"
icon = ExtResource("5_apjlw")
[node name="Settings" type="Button" parent="Container/MarginContainer/GridContainer/Pause/HBoxContainer" unique_id=1532435179]
[node name="Settings" type="Button" parent="Container/MarginContainer/Pause/HBoxContainer" unique_id=1532435179]
layout_mode = 2
text = "SETTINGS"
icon = ExtResource("6_yj6f1")
[node name="Controls" type="Button" parent="Container/MarginContainer/GridContainer/Pause/HBoxContainer" unique_id=138156239]
[node name="Controls" type="Button" parent="Container/MarginContainer/Pause/HBoxContainer" unique_id=138156239]
layout_mode = 2
text = "CONTROLS"
icon = ExtResource("7_7c7ks")
[node name="GiveUp" type="Button" parent="Container/MarginContainer/GridContainer/Pause/HBoxContainer" unique_id=1100620343]
[node name="GiveUp" type="Button" parent="Container/MarginContainer/Pause/HBoxContainer" unique_id=1100620343]
unique_name_in_owner = true
layout_mode = 2
text = "GIVE_UP"
icon = ExtResource("8_mnkqy")
[node name="Quit" type="Button" parent="Container/MarginContainer/GridContainer/Pause/HBoxContainer" unique_id=1740895928]
[node name="Quit" type="Button" parent="Container/MarginContainer/Pause/HBoxContainer" unique_id=1740895928]
layout_mode = 2
text = "QUIT"
icon = ExtResource("7_yj6f1")
[node name="Tutorial" type="VBoxContainer" parent="Container/MarginContainer/GridContainer" unique_id=1979359121]
layout_mode = 2
size_flags_horizontal = 3
alignment = 1
[node name="TutorialIcons" type="Label" parent="Container/MarginContainer/GridContainer/Tutorial" unique_id=54599107]
layout_mode = 2
text = "ICONS_MEANINGS"
label_settings = SubResource("LabelSettings_apjlw")
horizontal_alignment = 1
[node name="IconsGrid" type="HFlowContainer" parent="Container/MarginContainer/GridContainer/Tutorial" unique_id=827470743]
layout_mode = 2
theme_override_constants/h_separation = 8
theme_override_constants/v_separation = 8
alignment = 1
[node name="HBoxContainer" type="HBoxContainer" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid" unique_id=1836711773]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid/HBoxContainer" unique_id=1287619966]
custom_minimum_size = Vector2(40, 40)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("10_q8jjs")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid/HBoxContainer" unique_id=1321907717]
layout_mode = 2
theme = ExtResource("9_7c7ks")
text = "PLANT_POINTS"
vertical_alignment = 1
[node name="HBoxContainer2" type="HBoxContainer" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid" unique_id=1972132878]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid/HBoxContainer2" unique_id=1672315867]
custom_minimum_size = Vector2(40, 40)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("12_s2e8t")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid/HBoxContainer2" unique_id=680718204]
layout_mode = 2
theme = ExtResource("9_7c7ks")
text = "DAYS"
vertical_alignment = 1
[node name="HBoxContainer3" type="HBoxContainer" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid" unique_id=914958898]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid/HBoxContainer3" unique_id=2070296941]
custom_minimum_size = Vector2(40, 40)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("13_4r74r")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid/HBoxContainer3" unique_id=1440353539]
layout_mode = 2
theme = ExtResource("9_7c7ks")
text = "GROWING_TIME"
vertical_alignment = 1
[node name="HBoxContainer4" type="HBoxContainer" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid" unique_id=28308100]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid/HBoxContainer4" unique_id=1894190539]
custom_minimum_size = Vector2(40, 40)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("8_mnkqy")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid/HBoxContainer4" unique_id=1869234810]
layout_mode = 2
theme = ExtResource("9_7c7ks")
text = "LIFETIME"
vertical_alignment = 1
[node name="HBoxContainer5" type="HBoxContainer" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid" unique_id=960270231]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid/HBoxContainer5" unique_id=1275499455]
custom_minimum_size = Vector2(40, 40)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("14_osk7v")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid/HBoxContainer5" unique_id=1267318669]
layout_mode = 2
theme = ExtResource("9_7c7ks")
text = "SEEDS"
vertical_alignment = 1
[node name="TutorialTerrain" type="Label" parent="Container/MarginContainer/GridContainer/Tutorial" unique_id=749651974]
layout_mode = 2
text = "TERRAINS"
label_settings = SubResource("LabelSettings_apjlw")
horizontal_alignment = 1
[node name="Zones" type="GridContainer" parent="Container/MarginContainer/GridContainer/Tutorial" unique_id=604890138]
layout_mode = 2
columns = 3
[node name="Moss" type="VBoxContainer" parent="Container/MarginContainer/GridContainer/Tutorial/Zones" unique_id=1098973088]
layout_mode = 2
size_flags_horizontal = 3
[node name="TextureRect" type="TextureRect" parent="Container/MarginContainer/GridContainer/Tutorial/Zones/Moss" unique_id=393539957]
custom_minimum_size = Vector2(0, 100)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
texture = ExtResource("11_mnkqy")
expand_mode = 3
stretch_mode = 5
[node name="RichText" type="RichTextLabel" parent="Container/MarginContainer/GridContainer/Tutorial/Zones/Moss" unique_id=2026113686]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("9_7c7ks")
theme_override_fonts/bold_font = ExtResource("4_apjlw")
theme_override_font_sizes/normal_font_size = 15
theme_override_font_sizes/bold_font_size = 18
bbcode_enabled = true
text = "FERTILE_LAND_TEXT"
fit_content = true
vertical_alignment = 1
[node name="Rock" type="VBoxContainer" parent="Container/MarginContainer/GridContainer/Tutorial/Zones" unique_id=35924894]
layout_mode = 2
size_flags_horizontal = 3
[node name="TextureRect" type="TextureRect" parent="Container/MarginContainer/GridContainer/Tutorial/Zones/Rock" unique_id=92960155]
custom_minimum_size = Vector2(0, 100)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
texture = ExtResource("12_mvn7k")
expand_mode = 3
stretch_mode = 5
[node name="RichText" type="RichTextLabel" parent="Container/MarginContainer/GridContainer/Tutorial/Zones/Rock" unique_id=2043467484]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("9_7c7ks")
theme_override_fonts/bold_font = ExtResource("4_apjlw")
theme_override_font_sizes/normal_font_size = 15
theme_override_font_sizes/bold_font_size = 18
bbcode_enabled = true
text = "ROCK_TEXT"
fit_content = true
vertical_alignment = 1
[node name="Talion" type="VBoxContainer" parent="Container/MarginContainer/GridContainer/Tutorial/Zones" unique_id=366975247]
layout_mode = 2
size_flags_horizontal = 3
[node name="TextureRect" type="TextureRect" parent="Container/MarginContainer/GridContainer/Tutorial/Zones/Talion" unique_id=850304517]
custom_minimum_size = Vector2(0, 100)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
texture = ExtResource("13_4n2vt")
expand_mode = 3
stretch_mode = 5
[node name="RichText" type="RichTextLabel" parent="Container/MarginContainer/GridContainer/Tutorial/Zones/Talion" unique_id=1778894577]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("9_7c7ks")
theme_override_fonts/bold_font = ExtResource("4_apjlw")
theme_override_font_sizes/normal_font_size = 15
theme_override_font_sizes/bold_font_size = 18
bbcode_enabled = true
text = "TALION_VEIN_TEXT"
fit_content = true
vertical_alignment = 1
[node name="Settings" parent="." unique_id=758381952 instance=ExtResource("4_58dya")]
unique_name_in_owner = true
visible = false
@@ -381,8 +177,8 @@ mouse_filter = 2
unique_name_in_owner = true
libraries/ = SubResource("AnimationLibrary_yj6f1")
[connection signal="pressed" from="Container/MarginContainer/GridContainer/Pause/HBoxContainer/Resume" to="." method="_on_resume_pressed"]
[connection signal="pressed" from="Container/MarginContainer/GridContainer/Pause/HBoxContainer/Settings" to="." method="_on_settings_pressed"]
[connection signal="pressed" from="Container/MarginContainer/GridContainer/Pause/HBoxContainer/Controls" to="." method="_on_controls_pressed"]
[connection signal="pressed" from="Container/MarginContainer/GridContainer/Pause/HBoxContainer/GiveUp" to="." method="_on_give_up_pressed"]
[connection signal="pressed" from="Container/MarginContainer/GridContainer/Pause/HBoxContainer/Quit" to="." method="_on_quit_pressed"]
[connection signal="pressed" from="Container/MarginContainer/Pause/HBoxContainer/Resume" to="." method="_on_resume_pressed"]
[connection signal="pressed" from="Container/MarginContainer/Pause/HBoxContainer/Settings" to="." method="_on_settings_pressed"]
[connection signal="pressed" from="Container/MarginContainer/Pause/HBoxContainer/Controls" to="." method="_on_controls_pressed"]
[connection signal="pressed" from="Container/MarginContainer/Pause/HBoxContainer/GiveUp" to="." method="_on_give_up_pressed"]
[connection signal="pressed" from="Container/MarginContainer/Pause/HBoxContainer/Quit" to="." method="_on_quit_pressed"]

View File

@@ -40,7 +40,7 @@ func _process(delta):
%Inspector.position = get_viewport().get_mouse_position()
if current_selected_item and SceneManager.actual_scene.scene_id == "REGION":
%ActionZone.radius = current_selected_item.usage_zone_radius
%ActionZone.radius = current_selected_item.usage_zone_radius * GameInfo.settings_data.zoom
%ActionZone.color = ZONE_ACTIVATED_COLOR if can_use_item else ZONE_DEACTIVATED_COLOR
else:
%ActionZone.radius = 0
@@ -145,21 +145,28 @@ func update_card():
or get_tree().paused
):
%CardVisualiser.hide()
elif inspected != null :
if inspected_card_info != %CardVisualiser.card_info:
%CardVisualiser.card_info = inspected_card_info
%CardVisualiser.show()
var camera = get_viewport().get_camera_2d()
var screen_size = get_viewport().get_visible_rect().size
var screen_size = get_viewport().get_visible_rect().size # * get_viewport().get_camera_2d().zoom
if inspected is InspectableEntity:
%CardPosition.position = inspected.global_position - camera.global_position + screen_size / 2 + inspected.get_card_up_padding() * Vector2.UP
%CardPosition.position = (
(inspected.global_position - camera.global_position) * get_viewport().get_camera_2d().zoom
+ ((screen_size) / 2)
+ inspected.get_card_up_padding() * Vector2.UP
)
elif inspected is Control:
%CardPosition.position = inspected.global_position + inspected.size / 2 + CARD_UP_PADDING * Vector2.UP
elif inspected is Node3D:
%CardPosition.position = get_viewport().get_camera_3d().unproject_position(inspected.global_position) + CARD_UP_PADDING * Vector2.UP
%CardPosition.position = (
get_viewport().get_camera_3d().unproject_position(inspected.global_position)
+ CARD_UP_PADDING * Vector2.UP
)
# if %CardVisualiser.is_mouse_over():
# time_last_inspected = 0.

View File

@@ -16,7 +16,7 @@ compatibility/default_parent_skeleton_in_mesh_instance_3d=true
config/name="Seeding The Wasteland"
config/description="Seeding planets is a survival, managment and cosy game in which you play a little gardener robot."
config/version="alpha-1.1"
config/version="alpha-1.2"
run/main_scene="uid://c5bruelvqbm1k"
config/features=PackedStringArray("4.6", "Forward Plus")
config/icon="uid://df0y0s666ui4h"
@@ -151,7 +151,7 @@ action={
}
drop={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":88,"key_label":0,"unicode":120,"location":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":81,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
]
}
pause={
@@ -228,6 +228,16 @@ dialogic_default_action={
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null)
]
}
zoom_in={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":90,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
]
}
zoom_out={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":88,"key_label":0,"unicode":120,"location":0,"echo":false,"script":null)
]
}
[internationalization]

View File

@@ -119,7 +119,10 @@ func end_pass_day():
#region ------------------ Plants ------------------
func add_plant_data(plant_data : PlantData, with_update = true):
plants.append(plant_data)
if plants.find_custom(
func (pd : PlantData): return pd.random_seed == plant_data.random_seed
) == -1:
plants.append(plant_data)
plant_data.disappeared.connect(_on_plant_disappeared)
plant_data.updated.connect(func (_p : PlantData) : update())
if with_update:

View File

@@ -35,7 +35,6 @@ EFFECT,Effect,Effet
MATURE,Mature,Mature
GROWING,Growing,En train de pousser
JUVENILE,Juvenile,Juvénile
DECONTAMINATE,Decontaminate,Décontamine
%d_CHARGE_LEFT,%d charge left,%d charges restants
LAST_RECHARGE,One recharge remaining,Une recharge restante
RECHARGE_%d_ENERGY,Recharge %d energy,Recharge %d dénergie
@@ -46,7 +45,6 @@ WHEN_FILLED,When filled,Si rempli
GIVE_THE_FOLLOWING_ITEM_%s,Give the following item : [b]%s[/b],Donne lobjet suivant : [b]%s[/b]
UPGRADE_MAX_ENERGY,Increases maximum energy,Augmente lénergie maximum
UPGRADE_MAX_INVENTORY_SIZE,Increases inventory size,Augmente la taille de linventaire
DECONTAMINATE_%d_UNIT_AROUND_IT,Decontaminate %d unit around it,Décontamine %d unités autour delle
SEED_PRODUCTION,Seed Production,Production de graines
PRODUCE_%s_SEEDS,Produce %s seeds,Produit %s graines
DAY_%d,Day [b]%d[/b],Jour [b]%d[/b]
@@ -68,12 +66,26 @@ SOCIABLE_EFFECT_TEXT,"When mature, grants [b]{score_increase}[/b]{score_icon} ev
TOUGH,Tough,Solide
TOUGH_EFFECT_TEXT,Multiplies {score_icon} by [b]{score_multiplier}[/b] and add [b]{growing_time}[/b]{growing_icon},"Multiplie {score_icon} par [b]{score_multiplier}[/b] et ajoute [b]{growing_time}[/b]{growing_icon}"
FERTILE,Fertile,Fertile
FERTILE_EFFECT_TEXT,Add [b]{seed_buff}[/b]{seed_icon} to all nearby plant,Ajoute [b]{seed_buff}[/b]{seed_icon} à toutes les plantes autour
FERTILE_EFFECT_TEXT,Add [b]{seed_buff}[/b]{seed_icon} to all nearby plant but [b]{score_change}[/b]{score_icon},Ajoute [b]{seed_buff}[/b]{seed_icon} à toutes les plantes autour mais [b]{score_change}[/b]{score_icon}
EPHEMERAL,Ephemeral,Éphémère
EPHEMERAL_EFFECT_TEXT,Add [b]{seed_number}[/b]{seed_icon} but [b]{lifetime_change}[/b]{lifetime_icon},"Ajoute [b]{seed_number}[/b]{seed_icon} mais [b]{lifetime_change}[/b]{lifetime_icon}"
PURIFICATION,Purification,Épuration
PURIFICATION_EFFECT_TEXT,"When mature, decontaminate in a radius of [b]{purification_radius}[/b]","Une fois mature, décontamine dans un rayon de [b]{purification_radius}[/b]"
COST_%d_ENERGY,Cost %d energy,Coûte %d dénergie
PURIFICATION_EFFECT_TEXT,"When mature, create fertile zone in a radius of [b]{purification_radius}[/b]","Une fois mature, créée une zone fertile dans un rayon de [b]{purification_radius}[/b]"
HURRIED,Hurried,Pressé
HURRIED_EFFECT_TEXT,"[b]{growing_time_change}[/b]{growing_time_icon}","[b]{growing_time_change}[/b]{growing_time_icon}"
VIVACIOUS,Vivacious,Vivace
VIVACIOUS_EFFECT_TEXT,[b]{score_change}[/b]{score_icon} the first day of maturation,[b]{score_change}[/b]{score_icon} le premier jour de maturation
ROBUST,Robust,Robuste
ROBUST_EFFECT_TEXT,[b]+{lifetime_change}[/b]{lifetime_icon},[b]+{lifetime_change}[/b]{lifetime_icon}
PROLIFIC,Prolific,Prolifique
PROLIFIC_EFFECT_TEXT,[b]+{seeds_change}[/b]{seeds_icon},[b]+{seeds_change}[/b]{seeds_icon}
PURE,Pure,Pure
PURE_EFFECT_TEXT,Multiplies {score_icon} by [b]{score_multiplier}[/b] if the all the area around is fertile,Multiplie {score_icon} par [b]{score_multiplier}[/b] si toute la zone autour est fertile
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"
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"
COST_%d_ENERGY,Cost %d energy,Coûte %d d'énergie
ONE_TIME_USE,Single use,Usage unique
BUILD_%s,Build %s,Construit %s
FORK,Fork,Fourche
@@ -95,13 +107,13 @@ PICKAXE,Pickaxe,Pioche
PICKAXE_DESC_TEXT,Can dig rock and precious materials,Peut creuser la roche et des matériaux précieux
DIG,Dig,Creuser
OPEN,Open,Ouvrir
%s_SEED,%s Seed,Graine de %s
PLANT_%s_MUST_BE_USED_IN_DECONTAMINATED_ZONE,Plant [b]%s[/b]. Must be used in the decontamined zone.,Plante [b]%s[/b]. Doit être utilisée dans la zone décontaminée.
%s_SEED,%s Seed,Graine de %s
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]
MOVE_WITH_RIGHT_CLICK_OR_WASD,"Move with right click or WASD","Déplace-toi avec le clic droit ou ZQSD"
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"
DROP_SEED_WITH_KEY,"Drop current item with X","Lâche l'item sélectionné avec X"
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]
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]
@@ -121,6 +133,7 @@ RECHARGE,Recharge,Recharger
RECHARGE_STATION_DESC_TEXT,"[b]You can recharge yourself here.[/b] When recharging, time pass and plants grow.","[b]Tu peux te recharger ici.[/b] Pendant la recharge, le temps passe et les plantes grandissent."
COMPOST,Compost,Compost
START,Start,Commencer
HELP,Help,Aide
CONTINUE,Continue,Continuer
CHOOSE_A_LANGUAGE,Choose a language,Choisissez une langue
NO_ENERGY_LEFT," (no energy left)", " (pas d'énergie restante)"
1 keys en fr
35 MATURE Mature Mature
36 GROWING Growing En train de pousser
37 JUVENILE Juvenile Juvénile
DECONTAMINATE Decontaminate Décontamine
38 %d_CHARGE_LEFT %d charge left %d charges restants
39 LAST_RECHARGE One recharge remaining Une recharge restante
40 RECHARGE_%d_ENERGY Recharge %d energy Recharge %d d’énergie
45 GIVE_THE_FOLLOWING_ITEM_%s Give the following item : [b]%s[/b] Donne l’objet suivant : [b]%s[/b]
46 UPGRADE_MAX_ENERGY Increases maximum energy Augmente l’énergie maximum
47 UPGRADE_MAX_INVENTORY_SIZE Increases inventory size Augmente la taille de l’inventaire
DECONTAMINATE_%d_UNIT_AROUND_IT Decontaminate %d unit around it Décontamine %d unités autour d’elle
48 SEED_PRODUCTION Seed Production Production de graines
49 PRODUCE_%s_SEEDS Produce %s seeds Produit %s graines
50 DAY_%d Day [b]%d[/b] Jour [b]%d[/b]
66 TOUGH Tough Solide
67 TOUGH_EFFECT_TEXT Multiplies {score_icon} by [b]{score_multiplier}[/b] and add [b]{growing_time}[/b]{growing_icon} Multiplie {score_icon} par [b]{score_multiplier}[/b] et ajoute [b]{growing_time}[/b]{growing_icon}
68 FERTILE Fertile Fertile
69 FERTILE_EFFECT_TEXT Add [b]{seed_buff}[/b]{seed_icon} to all nearby plant Add [b]{seed_buff}[/b]{seed_icon} to all nearby plant but [b]{score_change}[/b]{score_icon} Ajoute [b]{seed_buff}[/b]{seed_icon} à toutes les plantes autour Ajoute [b]{seed_buff}[/b]{seed_icon} à toutes les plantes autour mais [b]{score_change}[/b]{score_icon}
70 EPHEMERAL Ephemeral Éphémère
71 EPHEMERAL_EFFECT_TEXT Add [b]{seed_number}[/b]{seed_icon} but [b]{lifetime_change}[/b]{lifetime_icon} Ajoute [b]{seed_number}[/b]{seed_icon} mais [b]{lifetime_change}[/b]{lifetime_icon}
72 PURIFICATION Purification Épuration
73 PURIFICATION_EFFECT_TEXT When mature, decontaminate in a radius of [b]{purification_radius}[/b] When mature, create fertile zone in a radius of [b]{purification_radius}[/b] Une fois mature, décontamine dans un rayon de [b]{purification_radius}[/b] Une fois mature, créée une zone fertile dans un rayon de [b]{purification_radius}[/b]
74 COST_%d_ENERGY HURRIED Cost %d energy Hurried Coûte %d d’énergie Pressé
75 HURRIED_EFFECT_TEXT [b]{growing_time_change}[/b]{growing_time_icon} [b]{growing_time_change}[/b]{growing_time_icon}
76 VIVACIOUS Vivacious Vivace
77 VIVACIOUS_EFFECT_TEXT [b]{score_change}[/b]{score_icon} the first day of maturation [b]{score_change}[/b]{score_icon} le premier jour de maturation
78 ROBUST Robust Robuste
79 ROBUST_EFFECT_TEXT [b]+{lifetime_change}[/b]{lifetime_icon} [b]+{lifetime_change}[/b]{lifetime_icon}
80 PROLIFIC Prolific Prolifique
81 PROLIFIC_EFFECT_TEXT [b]+{seeds_change}[/b]{seeds_icon} [b]+{seeds_change}[/b]{seeds_icon}
82 PURE Pure Pure
83 PURE_EFFECT_TEXT Multiplies {score_icon} by [b]{score_multiplier}[/b] if the all the area around is fertile Multiplie {score_icon} par [b]{score_multiplier}[/b] si toute la zone autour est fertile
84 GENEROUS Generous Généreux
85 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
86 PROTECTIVE Protective Protecteur
87 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
88 COST_%d_ENERGY Cost %d energy Coûte %d d'énergie
89 ONE_TIME_USE Single use Usage unique
90 BUILD_%s Build %s Construit %s
91 FORK Fork Fourche
107 PICKAXE_DESC_TEXT Can dig rock and precious materials Peut creuser la roche et des matériaux précieux
108 DIG Dig Creuser
109 OPEN Open Ouvrir
110 %s_SEED %s Seed Graine de %s
111 PLANT_%s_MUST_BE_USED_IN_DECONTAMINATED_ZONE Plant [b]%s[/b]. Must be used in the decontamined zone. Plant [b]%s[/b]. Must be used in the fertile zone. Plante [b]%s[/b]. Doit être utilisée dans la zone décontaminée. Plante [b]%s[/b]. Doit être utilisée dans la zone fertile.
112 PLANT_%s Plant [b]%s[/b] Planter [b]%s[/b]
113 MOVE_WITH_RIGHT_CLICK_OR_WASD Move with right click or WASD Déplace-toi avec le clic droit ou ZQSD
114 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
115 LEFT_CLICK_TO_USE_ITEMS Use an item with left click Utilise un item avec le clic gauche
116 DROP_SEED_WITH_KEY Drop current item with X Drop current item with Q Lâche l'item sélectionné avec X Lâche l'item sélectionné avec A
117 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]
118 TAKE_A_SEED_BY_CLICKING_ON_IT Take a [b]Seed[/b] by clicking on it Prend une [b]Graine[/b] en cliquant dessus
119 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]
133 RECHARGE_STATION_DESC_TEXT [b]You can recharge yourself here.[/b] When recharging, time pass and plants grow. [b]Tu peux te recharger ici.[/b] Pendant la recharge, le temps passe et les plantes grandissent.
134 COMPOST Compost Compost
135 START Start Commencer
136 HELP Help Aide
137 CONTINUE Continue Continuer
138 CHOOSE_A_LANGUAGE Choose a language Choisissez une langue
139 NO_ENERGY_LEFT (no energy left) (pas d'énergie restante)