feat: share village needs with helpers
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user