Compose D&D enemy event production family

This commit is contained in:
2026-08-03 21:01:23 +00:00
parent a92d2c0885
commit b722131d57
7 changed files with 195 additions and 6 deletions

View File

@@ -70,6 +70,27 @@ func appendCombatTurnLists(values []dnd.CombatTurnList) (dnd.CombatTurnList, err
return combined, nil
}
func appendEnemyEventLists(values []dnd.EnemyEventList) (dnd.EnemyEventList, error) {
count := 0
present := false
for _, value := range values {
if value.Events != nil {
present = true
}
count += len(value.Events)
}
if !present {
return dnd.EnemyEventList{}, nil
}
combined := dnd.EnemyEventList{Events: make([]dnd.EnemyEvent, 0, count)}
for _, value := range values {
for _, event := range value.Events {
combined.Events = append(combined.Events, cloneEnemyEvent(event))
}
}
return combined, nil
}
func appendItemEventLists(values []dnd.ItemEventList) (dnd.ItemEventList, error) {
count := 0
present := false
@@ -137,6 +158,12 @@ func cloneCombatTurn(value dnd.CombatTurn) dnd.CombatTurn {
return clone
}
func cloneEnemyEvent(value dnd.EnemyEvent) dnd.EnemyEvent {
clone := value
clone.SourceRefs = cloneSourceRefs(value.SourceRefs)
return clone
}
func cloneItemEvent(value dnd.ItemEvent) dnd.ItemEvent {
clone := value
if value.Quantity != nil {