1package nurikabe23import (4 "charm.land/bubbles/v2/key"5 "github.com/FelineStateMachine/puzzletea/game"6)78type KeyMap struct {9 game.CursorKeyMap10 SetSea key.Binding11 SetIsland key.Binding12 Clear key.Binding13}1415var DefaultKeyMap = KeyMap{16 CursorKeyMap: game.DefaultCursorKeyMap,17 SetSea: key.NewBinding(18 key.WithKeys("x"),19 key.WithHelp("x", "Sea"),20 ),21 SetIsland: key.NewBinding(22 key.WithKeys("z"),23 key.WithHelp("z", "Island"),24 ),25 Clear: key.NewBinding(26 key.WithKeys("backspace", "delete"),27 key.WithHelp("bkspc", "Clear"),28 ),29}3031func (m *Model) updateKeyBindings() {32 m.keys.Up.SetEnabled(m.cursor.Y > 0)33 m.keys.Down.SetEnabled(m.cursor.Y < m.height-1)34 m.keys.Left.SetEnabled(m.cursor.X > 0)35 m.keys.Right.SetEnabled(m.cursor.X < m.width-1)3637 locked := isClueCell(m.clues, m.cursor.X, m.cursor.Y) || m.solved38 m.keys.SetSea.SetEnabled(!locked)39 m.keys.SetIsland.SetEnabled(!locked)40 m.keys.Clear.SetEnabled(!locked)41}4243func (m Model) GetFullHelp() [][]key.Binding {44 return [][]key.Binding{45 {m.keys.Up, m.keys.Down, m.keys.Left, m.keys.Right},46 {m.keys.SetSea, m.keys.SetIsland, m.keys.Clear},47 }48}