1package app23import (4 "github.com/FelineStateMachine/puzzletea/game"5 "github.com/FelineStateMachine/puzzletea/registry"6 "github.com/FelineStateMachine/puzzletea/resolve"7 sessionflow "github.com/FelineStateMachine/puzzletea/session"8 "github.com/FelineStateMachine/puzzletea/store"910 tea "charm.land/bubbletea/v2"11)1213func (m model) handleSeedConfirm() (model, tea.Cmd) {14 seed := sessionflow.NormalizeSeed(m.seed.input.Value())15 if seed == "" {16 return m, nil17 }1819 selectedMode := m.currentSeedMode()20 name := sessionflow.SeededName(seed)21 if selectedMode.key != "" {22 name = sessionflow.SeededNameForGame(seed, selectedMode.gameType)23 }2425 rec, err := m.store.GetDailyGame(name)26 if err != nil {27 return m.setErrorf("Could not check saved seeded puzzle: %v", err), nil28 }29 if rec != nil {30 var resumed bool31 m, resumed = m.importAndActivateRecord(*rec)32 if resumed {33 if err := sessionflow.ResumeAbandonedDeterministicRecord(m.store, rec); err != nil {34 m = m.setErrorf("%v", err)35 }36 }37 return m, nil38 }3940 var spawner game.SeededSpawner41 var gameType string42 modeTitle := ""43 if selectedMode.key == "" {44 spawner, gameType, modeTitle, err = resolve.SeededMode(seed, registry.Entries())45 if err != nil {46 return m.setErrorf("Could not choose a seeded mode: %v", err), nil47 }48 } else {49 spawner, gameType, modeTitle, err = resolve.SeededModeForGame(seed, selectedMode.gameType, registry.Entries())50 if err != nil {51 return m.setErrorf("Could not choose a seeded mode for %s: %v", selectedMode.gameType, err), nil52 }53 }5455 rng := resolve.RNGFromString(seed)56 cmd := newSessionController(&m).startSeededSpawn(spawner, rng, spawnRequest{57 source: spawnSourceSeed,58 name: name,59 gameType: gameType,60 modeTitle: modeTitle,61 run: store.SeededRunMetadata(seed),62 returnState: playMenuView,63 exitState: mainMenuView,64 })65 return m, cmd66}