diff --git a/backend/model/events.go b/backend/model/events.go index 51e00bb..0d1a36f 100644 --- a/backend/model/events.go +++ b/backend/model/events.go @@ -64,8 +64,53 @@ func (x *HistoricalEventAddHfEntityLink) Html() string { return h + " became SOMETHING of " + c } -func (x *HistoricalEventAddHfHfLink) Html() string { return "UNKNWON HistoricalEventAddHfHfLink" } -func (x *HistoricalEventAddHfSiteLink) Html() string { return "UNKNWON HistoricalEventAddHfSiteLink" } +func (x *HistoricalEventAddHfHfLink) Html() string { + h := hf(x.Hfid) + t := hf(x.HfidTarget) + switch x.LinkType { + case HistoricalEventAddHfHfLinkLinkType_Apprentice: + return h + " became the master of " + t + case HistoricalEventAddHfHfLinkLinkType_Deity: + return h + " began worshipping " + t + case HistoricalEventAddHfHfLinkLinkType_FormerMaster: // TODO + return h + " began an apprenticeship under " + t + case HistoricalEventAddHfHfLinkLinkType_Lover: + return h + " became romantically involved with " + t + case HistoricalEventAddHfHfLinkLinkType_Master: + return h + " began an apprenticeship under " + t + case HistoricalEventAddHfHfLinkLinkType_PetOwner: + return h + " became the owner of " + t + case HistoricalEventAddHfHfLinkLinkType_Prisoner: + return h + " imprisoned " + t + case HistoricalEventAddHfHfLinkLinkType_Spouse: + return h + " married " + t + default: + return h + " LINKED TO " + t + } + +} +func (x *HistoricalEventAddHfSiteLink) Html() string { + h := hf(x.Histfig) + c := "" + if x.Civ != -1 { + c = " of " + entity(x.Civ) + } + b := "" + if x.Structure != -1 { + b = " " + structure(x.SiteId, x.Structure) + } + s := site(x.SiteId, "in") + switch x.LinkType { + case HistoricalEventAddHfSiteLinkLinkType_HomeSiteAbstractBuilding: + return h + " took up residence in " + b + c + " " + s + case HistoricalEventAddHfSiteLinkLinkType_Occupation: + return h + " started working at " + b + c + " " + s + case HistoricalEventAddHfSiteLinkLinkType_SeatOfPower: + return h + " ruled from " + b + c + " " + s + default: + return h + " LINKED TO " + s + } +} func (x *HistoricalEventAgreementFormed) Html() string { return "UNKNWON HistoricalEventAgreementFormed" } @@ -74,11 +119,48 @@ func (x *HistoricalEventAgreementRejected) Html() string { return "UNKNWON HistoricalEventAgreementRejected" } func (x *HistoricalEventArtifactClaimFormed) Html() string { - return "UNKNWON HistoricalEventArtifactClaimFormed" + a := artifact(x.ArtifactId) + switch x.Claim { + case HistoricalEventArtifactClaimFormedClaim_Heirloom: + return a + " was made a family heirloom by " + hf(x.HistFigureId) + case HistoricalEventArtifactClaimFormedClaim_Symbol: + p := world.Entities[x.EntityId].Position(x.PositionProfileId).Name_ + e := entity(x.EntityId) + return a + " was made a symbol of the " + p + " by " + e + case HistoricalEventArtifactClaimFormedClaim_Treasure: + c := "" + if x.Circumstance != HistoricalEventArtifactClaimFormedCircumstance_Unknown { + c = x.Circumstance.String() + } + if x.HistFigureId != -1 { + return a + " was claimed by " + hf(x.HistFigureId) + c + } else if x.EntityId != -1 { + return a + " was claimed by " + entity(x.EntityId) + c + } + } + return a + " was claimed" +} +func (x *HistoricalEventArtifactCopied) Html() string { // TODO original + return fmt.Sprintf("%s made a copy of the original %s from %s%s of %s, keeping it within %s%s", + entity(x.DestEntityId), artifact(x.ArtifactId), structure(x.SourceSiteId, x.SourceStructureId), site(x.SourceSiteId, " in "), + entity(x.SourceEntityId), structure(x.DestSiteId, x.DestStructureId), site(x.DestSiteId, " in ")) } -func (x *HistoricalEventArtifactCopied) Html() string { return "UNKNWON HistoricalEventArtifactCopied" } func (x *HistoricalEventArtifactCreated) Html() string { - return "UNKNWON HistoricalEventArtifactCreated" + a := artifact(x.ArtifactId) + h := hf(x.HistFigureId) + s := "" + if x.SiteId != -1 { + s = site(x.SiteId, " in ") + } + if !x.NameOnly { + return h + " created " + a + s + } + switch x.Reason { + case HistoricalEventArtifactCreatedReason_SanctifyHf: + return fmt.Sprintf("%s received its name%s from %s in order to sanctify %s as the item was a favorite possession", a, s, h, hf(x.SanctifyHf)) + default: + return fmt.Sprintf("%s received its name%s from %s after defeating %s", a, s, h, hf(x.Circumstance.Defeated)) // TODO + } } func (x *HistoricalEventArtifactDestroyed) Html() string { return "UNKNWON HistoricalEventArtifactDestroyed" diff --git a/backend/model/extensions.go b/backend/model/extensions.go index 9477f9f..1773547 100644 --- a/backend/model/extensions.go +++ b/backend/model/extensions.go @@ -8,7 +8,7 @@ func (e *Entity) Position(id int) *EntityPosition { return p } } - return nil + return &EntityPosition{Name_: "UNKNOWN POSITION"} } func (p *EntityPosition) GenderName(hf *HistoricalFigure) string { @@ -50,6 +50,13 @@ func containsInt(list []int, id int) bool { var world *DfWorld +func artifact(id int) string { + if x, ok := world.Artifacts[id]; ok { + return fmt.Sprintf(`%s`, x.Id(), x.Name()) + } + return "UNKNOWN ARTIFACT" +} + func entity(id int) string { if x, ok := world.Entities[id]; ok { return fmt.Sprintf(`%s`, x.Id(), x.Name()) @@ -70,3 +77,12 @@ func site(id int, prefix string) string { } return "UNKNOWN SITE" } + +func structure(siteId, structureId int) string { + if x, ok := world.Sites[siteId]; ok { + if y, ok := x.Structures[structureId]; ok { + return fmt.Sprintf(`%s`, siteId, structureId, y.Name()) + } + } + return "UNKNOWN STRUCTURE" +}