horsegen: generate data per region

This commit is contained in:
2026-01-15 13:43:54 -05:00
parent 5b5e008b5e
commit d6fb4b6caf
16 changed files with 1287 additions and 2261 deletions

View File

@@ -15,12 +15,13 @@ import (
func main() {
var (
mdb string
kkOut, goOut string
mdb string
out string
region string
)
flag.StringVar(&mdb, "mdb", os.ExpandEnv(`$USERPROFILE\AppData\LocalLow\Cygames\Umamusume\master\master.mdb`), "`path` to Umamusume master.mdb")
flag.StringVar(&kkOut, "kk", `.\horse`, "existing `dir`ectory for output Koka files")
flag.StringVar(&goOut, "go", `.`, "existing `dir`ectory for output Go files")
flag.StringVar(&out, "o", `.`, "root `dir`ectory for output files")
flag.StringVar(&region, "region", "global", "region the database is for (global, jp)")
flag.Parse()
pctx, stop := signal.NotifyContext(context.Background(), os.Interrupt)
@@ -85,35 +86,44 @@ func main() {
os.Exit(1)
}
if err := os.MkdirAll(filepath.Join(out, "horse", region), 0775); err != nil {
slog.Error("create koka output dir", slog.Any("err", err))
os.Exit(1)
}
if err := os.MkdirAll(filepath.Join(out, "go", region), 0775); err != nil {
slog.Error("create go output dir", slog.Any("err", err))
os.Exit(1)
}
eg, ctx = errgroup.WithContext(pctx)
eg.Go(func() error {
cf, err := os.Create(filepath.Join(kkOut, "character.kk"))
cf, err := os.Create(filepath.Join(out, "horse", region, "character.kk"))
if err != nil {
return err
}
gf, err := os.Create(filepath.Join(goOut, "character.go"))
gf, err := os.Create(filepath.Join(out, "go", region, "character.go"))
if err != nil {
return err
}
slog.Info("write characters")
return ExecCharacter(t, cf, gf, charas, pairs, trios)
return ExecCharacter(t, region, cf, gf, charas, pairs, trios)
})
eg.Go(func() error {
sf, err := os.Create(filepath.Join(kkOut, "skill.kk"))
sf, err := os.Create(filepath.Join(out, "horse", region, "skill.kk"))
if err != nil {
return err
}
gf, err := os.Create(filepath.Join(goOut, "skill_data.go"))
gf, err := os.Create(filepath.Join(out, "go", region, "skill.go"))
slog.Info("write skills")
return ExecSkill(t, sf, gf, sg, skills)
return ExecSkill(t, region, sf, gf, sg, skills)
})
eg.Go(func() error {
sf, err := os.Create(filepath.Join(kkOut, "skill-group.kk"))
sf, err := os.Create(filepath.Join(out, "horse", region, "skill-group.kk"))
if err != nil {
return err
}
slog.Info("write skill groups")
return ExecSkillGroupKK(t, sf, sg, skills)
return ExecSkillGroupKK(t, region, sf, sg, skills)
})
if err := eg.Wait(); err != nil {
slog.Error("generate", slog.Any("err", err))