feat: déclencher les rencontres depuis la perception réelle dans World (#26) #33
No reviewers
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: jeux/beaulieu-sur-brume#33
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/26-perception-world"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #26
La couche
Perception(portée + ligne de vue) existait et était testée isolément, maisWorldne la consultait jamais : les rencontres ne démarraient qu'au contact (Player._try_move). Cette MR connecte la perception àWorldpour tenir la promesse du jalon — une détection hostile lance initiative et combat en place.Changements
World.evaluate_perception(): pour chaqueWorldEntityhostile, engage le combat (start_encounter) siPerception.should_engage(_grid, ent.cell, player.grid_pos, ent.data.sight_range_m, ent.is_hostile()). Renvoie vrai si une rencontre a démarré. Les entités neutres sont ignorées (déjà géré paris_hostile/should_engage).Player._try_move, position visuelle etgrid_posà nouveau cohérentes) et une fois après l'initialisation de la scène (call_deferred("evaluate_perception")), plutôt que dans une boucle_processpermanente.start_encounterne fait rien horsaccepts_exploration_input()— aucun réengagement pendant une rencontre active._disengaged(par identité d'entité, hors sauvegarde) : un hostile ayant fui ne relance pas immédiatement la rencontre par perception tant qu'il perçoit le héros ; le verrou tombe dès que la portée ou la ligne de vue est rompue, autorisant une nouvelle acquisition. Posé dans_persist_fleeing_enemy.Critères d'acceptation
sight_range_m;start_encounter.Tests
tests/unit/test_world_encounter.gd:test_perception_starts_encounter_without_contact(engagement à vue, non adjacent),test_perception_does_not_engage_through_wall(mur interposé),test_perception_ignores_engagement_during_combat,test_flee_then_no_immediate_reengage_then_break_then_reacquire(régression verrou de désengagement),test_contact_still_engages_locked_fleeing_enemy(filet de sécurité).tests/unit/test_perception.gd.