aboutsummaryrefslogtreecommitdiff
path: root/internal/player
diff options
context:
space:
mode:
Diffstat (limited to 'internal/player')
-rw-r--r--internal/player/store.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/internal/player/store.go b/internal/player/store.go
index bc5db11..2691d71 100644
--- a/internal/player/store.go
+++ b/internal/player/store.go
@@ -149,3 +149,27 @@ func (s *AccountStore) FindCharacter(name string) (string, error) {
}
return "", fmt.Errorf("character not found: %s", name)
}
+
+// ListCharacterNames returns the stem (character name) of every
+// data/players/characters/*.yaml file. Used by room-ID migration to walk and
+// rewrite offline characters. Online characters are excluded by the caller
+// (their in-memory state is updated directly).
+func (s *AccountStore) ListCharacterNames() ([]string, error) {
+ dir := filepath.Join(s.dataDir, "players", "characters")
+ entries, err := os.ReadDir(dir)
+ if err != nil {
+ return nil, err
+ }
+ var names []string
+ for _, e := range entries {
+ if e.IsDir() {
+ continue
+ }
+ name := strings.TrimSuffix(e.Name(), ".yaml")
+ if name == "" {
+ continue
+ }
+ names = append(names, name)
+ }
+ return names, nil
+}