Files
notarius/internal/modules/dnd/register/evidence.go

108 lines
3.9 KiB
Go

package register
import (
"gitea.maximumdirect.net/eric/notarius/internal/core/source"
"gitea.maximumdirect.net/eric/notarius/internal/framework/pipeline"
"gitea.maximumdirect.net/eric/notarius/internal/modules/dnd"
)
func registerEvidence(registry *pipeline.ArtifactEvidenceRegistry) error {
return runRegistrations([]registration{
{name: "spells evidence", register: func() error { return pipeline.RegisterArtifactEvidence(registry, dnd.SpellListKind, spellEvidence) }},
{name: "npc registry evidence", register: func() error { return pipeline.RegisterArtifactEvidence(registry, dnd.NPCRegistryKind, npcEvidence) }},
{name: "combat turns evidence", register: func() error {
return pipeline.RegisterArtifactEvidence(registry, dnd.CombatTurnListKind, combatTurnEvidence)
}},
{name: "enemy events evidence", register: func() error {
return pipeline.RegisterArtifactEvidence(registry, dnd.EnemyEventListKind, enemyEventEvidence)
}},
{name: "item events evidence", register: func() error {
return pipeline.RegisterArtifactEvidence(registry, dnd.ItemEventListKind, itemEventEvidence)
}},
{name: "npc interactions evidence", register: func() error {
return pipeline.RegisterArtifactEvidence(registry, dnd.NPCInteractionListKind, npcInteractionEvidence)
}},
{name: "scene descriptions evidence", register: func() error {
return pipeline.RegisterArtifactEvidence(registry, dnd.SceneDescriptionListKind, sceneDescriptionEvidence)
}},
{name: "locations evidence", register: func() error {
return pipeline.RegisterArtifactEvidence(registry, dnd.LocationListKind, locationEvidence)
}},
{name: "location occurrences evidence", register: func() error {
return pipeline.RegisterArtifactEvidence(registry, dnd.LocationOccurrenceListKind, locationOccurrenceEvidence)
}},
})
}
func spellEvidence(value dnd.SpellList) []source.SourceRef {
var refs []source.SourceRef
for _, record := range value.SpellCasts {
refs = append(refs, record.SourceRefs...)
}
return append([]source.SourceRef(nil), refs...)
}
func npcEvidence(value dnd.NPCRegistry) []source.SourceRef {
var refs []source.SourceRef
for _, record := range value.NPCs {
refs = append(refs, record.SourceRefs...)
}
return append([]source.SourceRef(nil), refs...)
}
func combatTurnEvidence(value dnd.CombatTurnList) []source.SourceRef {
var refs []source.SourceRef
for _, record := range value.CombatTurns {
refs = append(refs, record.SourceRefs...)
}
return append([]source.SourceRef(nil), refs...)
}
func enemyEventEvidence(value dnd.EnemyEventList) []source.SourceRef {
var refs []source.SourceRef
for _, record := range value.Events {
refs = append(refs, record.SourceRefs...)
}
return append([]source.SourceRef(nil), refs...)
}
func itemEventEvidence(value dnd.ItemEventList) []source.SourceRef {
var refs []source.SourceRef
for _, record := range value.Events {
refs = append(refs, record.SourceRefs...)
}
return append([]source.SourceRef(nil), refs...)
}
func npcInteractionEvidence(value dnd.NPCInteractionList) []source.SourceRef {
var refs []source.SourceRef
for _, record := range value.Interactions {
refs = append(refs, record.SourceRefs...)
}
return append([]source.SourceRef(nil), refs...)
}
func sceneDescriptionEvidence(value dnd.SceneDescriptionList) []source.SourceRef {
refs := make([]source.SourceRef, 0, len(value.Scenes))
for _, record := range value.Scenes {
refs = append(refs, record.SourceRef)
}
return refs
}
func locationEvidence(value dnd.LocationList) []source.SourceRef {
var refs []source.SourceRef
for _, location := range value.Locations {
refs = append(refs, location.SourceRefs...)
}
return append([]source.SourceRef(nil), refs...)
}
func locationOccurrenceEvidence(value dnd.LocationOccurrenceList) []source.SourceRef {
var refs []source.SourceRef
for _, occurrence := range value.Occurrences {
refs = append(refs, occurrence.SourceRefs...)
}
return append([]source.SourceRef(nil), refs...)
}