Plant blinking when about to dye

This commit is contained in:
Altaezio
2026-07-25 12:31:19 +02:00
parent 896a92edfe
commit 657f40dd21
3 changed files with 73 additions and 41 deletions
+7 -4
View File
@@ -47,12 +47,14 @@ func _ready():
await get_tree().create_timer(0.05).timeout await get_tree().create_timer(0.05).timeout
update_nearby_plant() update_nearby_plant()
update_decontamination_area_factor() update_decontamination_area_factor()
if data.day == data.get_lifetime() - 1:
plant_sprite.apply_about_to_dye_effect()
func pointer_text() -> String: func pointer_text() -> String:
return data.plant_name return data.plant_name
func inspect(is_inspected: bool = true): func inspect(is_inspected: bool = true):
plant_sprite.sprite_modulate = MODULATE_INSPECTED_COLOR if is_inspected else default_modulate plant_sprite.set_modulate_color(MODULATE_INSPECTED_COLOR if is_inspected else default_modulate, false)
plant_sprite.display_lifetime_sprite = is_inspected plant_sprite.display_lifetime_sprite = is_inspected
influence_zone.show_influence = is_inspected influence_zone.show_influence = is_inspected
@@ -105,6 +107,9 @@ func _pass_day():
for m in data.mutations: for m in data.mutations:
m._start_day_effect(self) m._start_day_effect(self)
if data.day == data.get_lifetime() - 1:
plant_sprite.apply_about_to_dye_effect()
func _end_pass_day(): func _end_pass_day():
match data.get_state(): match data.get_state():
PlantData.State.MATURE: PlantData.State.MATURE:
@@ -117,9 +122,7 @@ func _end_pass_day():
plant_sprite.update_plant_sprite(data, last_state != data.get_state()) plant_sprite.update_plant_sprite(data, last_state != data.get_state())
func calculate_plant_score( func calculate_plant_score(with_state: PlantData.State = data.get_state()) -> int:
with_state : PlantData.State = data.get_state()
) -> int:
return data.get_score(with_state) return data.get_score(with_state)
func harvest(): func harvest():
+30 -1
View File
@@ -6,6 +6,9 @@ const PLANTED_SEED_POS_Y = 0
const PARTICLES_SCENE: PackedScene = preload("res://common/vfx/particles/effect_particles.tscn") const PARTICLES_SCENE: PackedScene = preload("res://common/vfx/particles/effect_particles.tscn")
const ABOUT_TO_DYE_COLOR := Color("#fca67e")
const ABOUT_TO_DYE_PERIOD := 1.0
signal harvest_animation_finished signal harvest_animation_finished
var last_updated_on_state: PlantData.State = PlantData.State.MATURE var last_updated_on_state: PlantData.State = PlantData.State.MATURE
@@ -14,6 +17,9 @@ var stored_seed_image : Texture = null
var display_lifetime_sprite: bool = false: set = set_display_lifetime_sprite var display_lifetime_sprite: bool = false: set = set_display_lifetime_sprite
var sprite_modulate: Color = Color.WHITE: set = set_sprite_modulate var sprite_modulate: Color = Color.WHITE: set = set_sprite_modulate
var about_to_dye_tween: Tween
var target_modulate_color := Color.WHITE
func setup_plant_sprite(plant_data: PlantData): func setup_plant_sprite(plant_data: PlantData):
set_display_lifetime_sprite() set_display_lifetime_sprite()
%PlantedSeed.texture = PlantTextureBuilder.build_seed_texture(plant_data.plant_name.hash()) %PlantedSeed.texture = PlantTextureBuilder.build_seed_texture(plant_data.plant_name.hash())
@@ -65,7 +71,7 @@ func set_sprite_modulate(c := sprite_modulate):
%Sprite.modulate = c %Sprite.modulate = c
func affect_preview(is_affected: bool = true): func affect_preview(is_affected: bool = true):
sprite_modulate = InspectableEntity.MODULATE_AFFECTED_COLOR if is_affected else Color.WHITE set_modulate_color(InspectableEntity.MODULATE_AFFECTED_COLOR if is_affected else Color.WHITE, true)
func _on_body_entered(body: Node2D) -> void: func _on_body_entered(body: Node2D) -> void:
if body is Player && $AnimationPlayer.current_animation != "player_move": if body is Player && $AnimationPlayer.current_animation != "player_move":
@@ -74,3 +80,26 @@ func _on_body_entered(body: Node2D) -> void:
func play_bump_animation(): func play_bump_animation():
%AnimationPlayer.play("bump") %AnimationPlayer.play("bump")
await %AnimationPlayer.animation_finished await %AnimationPlayer.animation_finished
func set_modulate_color(color: Color, pause_about_to_dye: bool):
target_modulate_color = color
if about_to_dye_tween:
if pause_about_to_dye and about_to_dye_tween.is_running():
about_to_dye_tween.pause()
modulate = target_modulate_color
elif not pause_about_to_dye and not about_to_dye_tween.is_running():
about_to_dye_tween.play()
elif is_node_ready():
%Sprite.modulate = target_modulate_color
func apply_about_to_dye_effect():
if not about_to_dye_tween:
about_to_dye_tween = create_tween()
about_to_dye_tween.tween_property(%Sprite, "modulate:r", ABOUT_TO_DYE_COLOR.r, ABOUT_TO_DYE_PERIOD).from(target_modulate_color.r)
about_to_dye_tween.parallel().tween_property(%Sprite, "modulate:g", ABOUT_TO_DYE_COLOR.g, ABOUT_TO_DYE_PERIOD).from(target_modulate_color.g)
about_to_dye_tween.parallel().tween_property(%Sprite, "modulate:b", ABOUT_TO_DYE_COLOR.b, ABOUT_TO_DYE_PERIOD).from(target_modulate_color.b)
about_to_dye_tween.tween_property(%Sprite, "modulate:r", target_modulate_color.r, ABOUT_TO_DYE_PERIOD).from(ABOUT_TO_DYE_COLOR.r)
about_to_dye_tween.parallel().tween_property(%Sprite, "modulate:g", target_modulate_color.g, ABOUT_TO_DYE_PERIOD).from(ABOUT_TO_DYE_COLOR.g)
about_to_dye_tween.parallel().tween_property(%Sprite, "modulate:b", target_modulate_color.b, ABOUT_TO_DYE_PERIOD).from(ABOUT_TO_DYE_COLOR.b)
about_to_dye_tween.set_loops()
+2 -2
View File
@@ -32,8 +32,8 @@ func set_pause(p):
GameInfo.save_settings() GameInfo.save_settings()
func _input(_event): func _input(_event):
if (SceneManager.actual_scene if ((not SceneManager.actual_scene
and SceneManager.actual_scene.get_scene_id() != "TITLE" or SceneManager.actual_scene.get_scene_id() != "TITLE")
and Input.is_action_just_pressed("pause") and Input.is_action_just_pressed("pause")
and not %Settings.is_visible_in_tree() and not %Settings.is_visible_in_tree()
and not %Controls.is_visible_in_tree() and not %Controls.is_visible_in_tree()