horse, horsegen: generate lobby conversation data
This commit is contained in:
@@ -223,6 +223,18 @@ func main() {
|
||||
Value2: s.ColumnInt32(4),
|
||||
}
|
||||
})
|
||||
convos := load(ctx1, loadgroup, db, "lobby conversations", conversationSQL, func(s *sqlite.Stmt) horse.Conversation {
|
||||
return horse.Conversation{
|
||||
CharacterID: horse.CharacterID(s.ColumnInt(0)),
|
||||
Number: s.ColumnInt(1),
|
||||
Location: horse.LobbyConversationLocationID(s.ColumnInt(2)),
|
||||
LocationName: horse.LobbyConversationLocationID(s.ColumnInt(2)).String(),
|
||||
Chara1: horse.CharacterID(s.ColumnInt(3)),
|
||||
Chara2: horse.CharacterID(s.ColumnInt(4)),
|
||||
Chara3: horse.CharacterID(s.ColumnInt(5)),
|
||||
ConditionType: s.ColumnInt(6),
|
||||
}
|
||||
})
|
||||
|
||||
if err := os.MkdirAll(filepath.Join(out, region), 0775); err != nil {
|
||||
slog.Error("create output dir", slog.Any("err", err))
|
||||
@@ -239,6 +251,7 @@ func main() {
|
||||
writegroup.Go(func() error { return write(ctx2, out, region, "saddle.json", saddles) })
|
||||
writegroup.Go(func() error { return write(ctx2, out, region, "scenario.json", scenarios) })
|
||||
writegroup.Go(func() error { return write(ctx2, out, region, "spark.json", mergesparks(sparks, sparkeffs)) })
|
||||
writegroup.Go(func() error { return write(ctx2, out, region, "conversation.json", convos) })
|
||||
if err := writegroup.Wait(); err != nil {
|
||||
slog.ErrorContext(ctx, "write", slog.Any("err", err))
|
||||
os.Exit(1)
|
||||
@@ -268,6 +281,8 @@ var (
|
||||
sparkSQL string
|
||||
//go:embed sql/spark-effect.sql
|
||||
sparkEffectSQL string
|
||||
//go:embed sql/conversation.sql
|
||||
conversationSQL string
|
||||
)
|
||||
|
||||
func load[T any](ctx context.Context, group *errgroup.Group, db *sqlitex.Pool, kind, sql string, row func(*sqlite.Stmt) T) func() ([]T, error) {
|
||||
|
||||
10
cmd/horsegen/sql/conversation.sql
Normal file
10
cmd/horsegen/sql/conversation.sql
Normal file
@@ -0,0 +1,10 @@
|
||||
SELECT
|
||||
gallery_chara_id,
|
||||
disp_order,
|
||||
pos_id,
|
||||
chara_id_1,
|
||||
chara_id_2,
|
||||
chara_id_3,
|
||||
condition_type
|
||||
FROM home_story_trigger
|
||||
ORDER BY gallery_chara_id, disp_order
|
||||
2274
global/conversation.json
Normal file
2274
global/conversation.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -17,3 +17,43 @@ type AffinityRelation struct {
|
||||
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
|
||||
)
|
||||
|
||||
47
horse/lobbyconversationlocationid_string.go
Normal file
47
horse/lobbyconversationlocationid_string.go
Normal file
@@ -0,0 +1,47 @@
|
||||
// Code generated by "stringer -type LobbyConversationLocationID -trimprefix Lobby -linecomment"; DO NOT EDIT.
|
||||
|
||||
package horse
|
||||
|
||||
import "strconv"
|
||||
|
||||
func _() {
|
||||
// An "invalid array index" compiler error signifies that the constant values have changed.
|
||||
// Re-run the stringer command to generate them again.
|
||||
var x [1]struct{}
|
||||
_ = x[LobbyRightFront1-110]
|
||||
_ = x[LobbyRightFront2-120]
|
||||
_ = x[LobbyRightFront3-130]
|
||||
_ = x[LobbyLeftTable1-210]
|
||||
_ = x[LobbyLeftTable2-220]
|
||||
_ = x[LobbyBackSeat-310]
|
||||
_ = x[LobbyPosters1-410]
|
||||
_ = x[LobbyPosters2-420]
|
||||
_ = x[LobbyPosters3-430]
|
||||
_ = x[LobbySchoolMap1-510]
|
||||
_ = x[LobbySchoolMap2-520]
|
||||
_ = x[LobbySchoolMap3-530]
|
||||
}
|
||||
|
||||
const _LobbyConversationLocationID_name = "right side frontright side frontright side frontleft side tableleft side tablecenter back seatcenter posterscenter posterscenter postersleft side school mapleft side school mapleft side school map"
|
||||
|
||||
var _LobbyConversationLocationID_map = map[LobbyConversationLocationID]string{
|
||||
110: _LobbyConversationLocationID_name[0:16],
|
||||
120: _LobbyConversationLocationID_name[16:32],
|
||||
130: _LobbyConversationLocationID_name[32:48],
|
||||
210: _LobbyConversationLocationID_name[48:63],
|
||||
220: _LobbyConversationLocationID_name[63:78],
|
||||
310: _LobbyConversationLocationID_name[78:94],
|
||||
410: _LobbyConversationLocationID_name[94:108],
|
||||
420: _LobbyConversationLocationID_name[108:122],
|
||||
430: _LobbyConversationLocationID_name[122:136],
|
||||
510: _LobbyConversationLocationID_name[136:156],
|
||||
520: _LobbyConversationLocationID_name[156:176],
|
||||
530: _LobbyConversationLocationID_name[176:196],
|
||||
}
|
||||
|
||||
func (i LobbyConversationLocationID) String() string {
|
||||
if str, ok := _LobbyConversationLocationID_map[i]; ok {
|
||||
return str
|
||||
}
|
||||
return "LobbyConversationLocationID(" + strconv.FormatInt(int64(i), 10) + ")"
|
||||
}
|
||||
Reference in New Issue
Block a user