Dev de la démo

* Modification de l'apparence de l'UI des dialogues
* Changement de l'ordre de déblocage des mutations
* Ajout d'une confirmation pour l'abandon
* Ajout de la scène de fin avec la base Boréa, en tant que fin de démo
* Modification des icône de durée de vie, temps de pousse, et de mort
* Ajout d'un icône au dessus du joueur quand il n'a plus d'énergie
* Amélioration des dialogues du jeu
* Changement du modèle du téléphone
* Ajout de cellule d'énergie et de cellule de talion trouvable sur la carte
* Il est à nouveau possible de se recharger après la fin d'une région
* Buff des mutations ancien sociale et solide
* Modification de la mutation fertile (ne donne de gain de graine qu'à la maturation)
* Ajout d'une récupération automatique des graines
* Ajout de deux cartons de tutoriel ainsi qu'une option pour les revoir dans l'aide de jeu
* Amélioration générale du tutoriel
* Ajout d'un écran titre digne de ce nom
* Lors de l'arrivée à destination, ne téléporte plus le joueur sur une map vide, mais directement dans les lieux de cinématique
* Ajout graphique de plus de pattern de mousse et de roche
* Le talion apparait maintenant sur toute la carte
* La roche peut désormais apparaitre sur la zone de départ
* Ajout dud modificateur de région Canyon
* Equilibrage général
* Fix de bugs en tout genre
This commit is contained in:
2026-05-27 19:13:32 +02:00
parent 7764943714
commit 7b09f2ba7c
289 changed files with 8802 additions and 1520 deletions

View File

@@ -6,6 +6,7 @@ const MAX_REACH = 100
const HOLDING_ITEM_SPRITE_SIZE = 20.
const TURN_ANIMATION_MINIMUM_THRESHOLD = 0.2
const SPEED = 350
const JUST_DROPPED_ITEM_UPDATE_INTERVAL = 1.
signal player_updated(player: Player)
signal upgraded
@@ -30,15 +31,22 @@ var instruction : Instruction = null :
if instruction and is_node_ready():
instruction.spawn_indicator(self)
var just_dropped_item_objects : Array = []
var last_just_dropped_item_objects_updated := 0.
var elapsed_time := 0.
@onready var preview_zone : ActionZone = await setup_action_zone(Vector2.ZERO, null)
@onready var action_zone : ActionZone = await setup_action_zone(Vector2.ZERO, null)
func _ready():
data = GameInfo.game_data.player_data
data.updated.connect(_on_data_changed)
data.inventory.updated.connect(_on_inventory_updated)
player_updated.emit(self)
Pointer.player = self
setup_preview_zone(data.inventory.get_item())
%NoEnergyLeftIcon.visible = data.energy == 0
func appear(with_falling_animation = true):
if with_falling_animation:
@@ -70,6 +78,7 @@ func _end_pass_day():
controlling_player = true
func _process(delta):
elapsed_time += delta
last_action_area_movement_timer += delta
if controlling_player:
@@ -99,12 +108,39 @@ func _process(delta):
elif velocity != Vector2.ZERO and %MovementAudioStreamPlayer.playing == false:
%MovementAudioStreamPlayer.play()
# print("-----")
# print(elapsed_time)
# print(last_just_dropped_item_objects_updated)
if elapsed_time > last_just_dropped_item_objects_updated + JUST_DROPPED_ITEM_UPDATE_INTERVAL:
update_just_dropped_item_objects()
take_surrounding_seeds()
move_and_slide()
func _on_data_changed(pd : PlayerData):
%NoEnergyLeftIcon.visible = pd.energy == 0
func _on_inventory_updated(_inventory: Inventory):
setup_preview_zone(data.inventory.get_item())
emit_signal("player_updated", self)
func update_just_dropped_item_objects():
last_just_dropped_item_objects_updated = elapsed_time
var overlapping_areas = (%InteractArea2D as Area2D).get_overlapping_areas()
just_dropped_item_objects = just_dropped_item_objects.filter(
func (i : ItemObject): return i in overlapping_areas
)
func take_surrounding_seeds():
var overlapping_areas = (%InteractArea2D as Area2D).get_overlapping_areas()
if not data.inventory.is_full():
for area in overlapping_areas:
if area is ItemObject and not area in just_dropped_item_objects:
area.interact(self)
return
func calculate_direction_instruction_direction() -> Vector2:
if (
instruction
@@ -189,7 +225,8 @@ func drop_item():
var item_to_drop : Item = data.inventory.pop_item(ind_to_drop)
if item_to_drop and item_to_drop.type != Item.ItemType.TOOL_ITEM:
terrain.drop_item(item_to_drop, global_position)
var dropped_item_object = terrain.drop_item(item_to_drop, global_position)
just_dropped_item_objects.append(dropped_item_object)
AudioManager.play_sfx("Drop")
region.save()

View File

@@ -10,7 +10,7 @@ const DEFAULT_INVENTORY_SIZE = 3
@export var energy : int = DEFAULT_MAX_ENERGY :
set(v):
energy = v
energy = min(v,max_energy)
updated.emit(self)
@export var inventory := Inventory.new(DEFAULT_INVENTORY_SIZE)