using System; using UnityEngine; namespace IdleSpectator; public enum HappinessPresentationTier { Signal, Ambient, Aggregate } public enum HappinessContextRequirement { None, RequiresRelatedActor, RelatedOptional } public enum HappinessLifePolicy { ActivityOnly, ProjectToLife } public enum HappinessOverlapPolicy { Independent, CanonicalMilestone, MergeSameOccurrence, Continuation } /// /// How a happiness relates to camera hold. /// Hold = onset claim (require live status); Offset = end-ping FixedDwell when status is gone. /// public enum HappinessStatusOverlapKind { None, Hold, Offset } public enum HappinessRelationRole { None, DeceasedChild, DeceasedLover, DeceasedBestFriend, DeceasedFamily, Newborn, Lover, BestFriend, GiftPartner, ConversationPartner, Robber, Victim } public enum HappinessSourceHook { ChangeHappiness, DeathEvent, BirthEvent, Harness, AggregateSummary } /// Authored catalog row for one happiness effect id. public sealed class HappinessCatalogEntry { public string Id = ""; public HappinessPresentationTier Presentation = HappinessPresentationTier.Signal; public HappinessContextRequirement Context = HappinessContextRequirement.None; public HappinessLifePolicy Life = HappinessLifePolicy.ActivityOnly; public HappinessOverlapPolicy Overlap = HappinessOverlapPolicy.Independent; public HappinessRelationRole RelationRole = HappinessRelationRole.None; public string InterestCategory = ""; public float EventStrength = 40f; public string CanonicalMilestoneKey = ""; public string StatusOverlapId = ""; public HappinessStatusOverlapKind StatusOverlapKind = HappinessStatusOverlapKind.None; public string[] VariantsWithRelated = Array.Empty(); public string[] VariantsWithoutRelated = Array.Empty(); public bool IsFallback; } /// Normalized happiness/emotion occurrence for Activity, Life, and future spectator interest. public sealed class HappinessOccurrence { /// Monotonic id for . public ulong Sequence; public string EffectId = ""; public int Amount; public long SubjectId; public string SubjectName = ""; public string SubjectSpecies = ""; public long RelatedId; public string RelatedName = ""; public string RelatedSpecies = ""; public HappinessRelationRole RelationRole = HappinessRelationRole.None; public Vector3 Position; public double WorldTime; public string DateLabel = ""; public HappinessSourceHook SourceHook = HappinessSourceHook.ChangeHappiness; public string CorrelationKey = ""; public bool SuppressedByPsychopath; public bool Applied; public HappinessPresentationTier Presentation = HappinessPresentationTier.Signal; public HappinessLifePolicy Life = HappinessLifePolicy.ActivityOnly; public HappinessOverlapPolicy Overlap = HappinessOverlapPolicy.Independent; public HappinessContextRequirement Context = HappinessContextRequirement.None; public string InterestCategory = ""; public string CanonicalMilestoneKey = ""; public string StatusOverlapId = ""; public HappinessStatusOverlapKind StatusOverlapKind = HappinessStatusOverlapKind.None; public int SampledCount = 1; public int TotalAffectedCount = 1; public string CivEventKey = ""; public string PlainClause = ""; public string RichClause = ""; public string FactLine = ""; public bool WroteActivityRing; public bool WroteLife; public bool Merged; }