feat: share village needs with helpers

This commit is contained in:
Rijad Zuzo
2026-07-16 12:13:54 +02:00
parent 0332c57a89
commit d6e6a63048
17 changed files with 716 additions and 41 deletions
+3 -3
View File
@@ -127,11 +127,9 @@ func generate_npcs() -> void:
npc_random.randf_range(1.0, 10.0),
npc_random
)
npc.debug_logs = debug_logs
npcs.append(npc)
wander_random_sources[i] = _create_random_source(i, 1)
var home_count := home_positions.size()
if home_count > 0:
for i in range(npcs.size()):
@@ -632,7 +630,9 @@ func try_communicate_at_shared_activity(speaker_id: int, listener_id: int) -> bo
if not _can_communicate_at_shared_activity(speaker, listener):
return false
var known_event_ids := event_knowledge_system.get_communicable_event_ids(
speaker.id, _get_lasting_event_ids(speaker.id)
speaker.id,
_get_lasting_event_ids(speaker.id),
opportunity_system.get_open_trigger_event_id()
)
for event_id in known_event_ids:
var event := event_log.get_by_id(event_id)
+8 -2
View File
@@ -109,8 +109,14 @@ func get_retained_event_ids(
return _get_ranked_event_ids(knower_id, lasting_event_ids, false, max_count)
func get_communicable_event_ids(knower_id: int, lasting_event_ids: Array[int]) -> Array[int]:
return _get_ranked_event_ids(knower_id, lasting_event_ids, true, 0)
func get_communicable_event_ids(
knower_id: int, lasting_event_ids: Array[int], preferred_event_id: int = -1
) -> Array[int]:
var event_ids := _get_ranked_event_ids(knower_id, lasting_event_ids, true, 0)
if preferred_event_id in event_ids:
event_ids.erase(preferred_event_id)
event_ids.push_front(preferred_event_id)
return event_ids
func _get_ranked_event_ids(
@@ -99,6 +99,15 @@ func get_open_opportunity() -> OpportunityStateRecord:
return open_records[0] if not open_records.is_empty() else null
func get_open_trigger_event_id() -> int:
var opportunity := get_open_opportunity()
return (
opportunity.get_trigger_event_id()
if opportunity != null
else OpportunityStateRecord.NO_EVENT_ID
)
func get_latest() -> OpportunityStateRecord:
var sorted := get_all_sorted()
return sorted[-1] if not sorted.is_empty() else null