60 lines
2.3 KiB
Go
60 lines
2.3 KiB
Go
package horse
|
|
|
|
type CharacterID int16
|
|
|
|
type Character struct {
|
|
ID CharacterID `json:"chara_id"`
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
func (c Character) String() string {
|
|
return c.Name
|
|
}
|
|
|
|
type AffinityRelation struct {
|
|
IDA int `json:"chara_a"`
|
|
IDB int `json:"chara_b"`
|
|
IDC int `json:"chara_c,omitzero"`
|
|
Affinity int `json:"affinity"`
|
|
}
|
|
|
|
// Conversation describes a lobby conversation.
|
|
type Conversation struct {
|
|
// CharacterID is the ID of the character who has the conversation as
|
|
// a gallery entry.
|
|
CharacterID CharacterID `json:"chara_id"`
|
|
// Number is the conversation number within the character's gallery.
|
|
Number int `json:"number"`
|
|
// Location is the ID of the location the conversation occurs in the lobby.
|
|
Location LobbyConversationLocationID `json:"location"`
|
|
// LocationName is the name of the lobby location, for convenience.
|
|
LocationName string `json:"location_name"`
|
|
// Chara1 is the first conversation participant ID.
|
|
// It does not necessarily match CharacterID.
|
|
Chara1 CharacterID `json:"chara_1"`
|
|
// Chara2 is the second conversation participant ID.
|
|
Chara2 CharacterID `json:"chara_2,omitzero"`
|
|
// Chara3 is the third conversation participant ID.
|
|
Chara3 CharacterID `json:"chara_3,omitzero"`
|
|
// ConditionType is a complete mystery to me.
|
|
ConditionType int `json:"condition_type"`
|
|
}
|
|
|
|
type LobbyConversationLocationID int
|
|
|
|
//go:generate go run golang.org/x/tools/cmd/stringer@v0.41.0 -type LobbyConversationLocationID -trimprefix Lobby -linecomment
|
|
const (
|
|
LobbyRightFront1 LobbyConversationLocationID = 110 // right side front
|
|
LobbyRightFront2 LobbyConversationLocationID = 120 // right side front
|
|
LobbyRightFront3 LobbyConversationLocationID = 130 // right side front
|
|
LobbyLeftTable1 LobbyConversationLocationID = 210 // left side table
|
|
LobbyLeftTable2 LobbyConversationLocationID = 220 // left side table
|
|
LobbyBackSeat LobbyConversationLocationID = 310 // center back seat
|
|
LobbyPosters1 LobbyConversationLocationID = 410 // center posters
|
|
LobbyPosters2 LobbyConversationLocationID = 420 // center posters
|
|
LobbyPosters3 LobbyConversationLocationID = 430 // center posters
|
|
LobbySchoolMap1 LobbyConversationLocationID = 510 // left side school map
|
|
LobbySchoolMap2 LobbyConversationLocationID = 520 // left side school map
|
|
LobbySchoolMap3 LobbyConversationLocationID = 530 // left side school map
|
|
)
|