1package netwalk23import (4 "charm.land/bubbles/v2/key"5 "github.com/FelineStateMachine/puzzletea/game"6)78type KeyMap struct {9 game.CursorKeyMap10 Rotate key.Binding11 RotateBack key.Binding12 Lock key.Binding13}1415var DefaultKeyMap = KeyMap{16 CursorKeyMap: game.DefaultCursorKeyMap,17 Rotate: key.NewBinding(18 key.WithKeys("space"),19 key.WithHelp("space", "Rotate"),20 ),21 RotateBack: key.NewBinding(22 key.WithKeys("backspace", "shift+space"),23 key.WithHelp("bkspc", "Rotate back"),24 ),25 Lock: key.NewBinding(26 key.WithKeys("enter"),27 key.WithHelp("enter", "Toggle lock"),28 ),29}3031func (m *Model) updateKeyBindings() {32 m.keys.Up.SetEnabled(m.cursor.Y > 0)33 m.keys.Down.SetEnabled(m.cursor.Y < m.puzzle.Size-1)34 m.keys.Left.SetEnabled(m.cursor.X > 0)35 m.keys.Right.SetEnabled(m.cursor.X < m.puzzle.Size-1)3637 current := m.puzzle.Tiles[m.cursor.Y][m.cursor.X]38 canAct := !m.state.solved && isActive(current)39 m.keys.Rotate.SetEnabled(canAct && !current.Locked)40 m.keys.RotateBack.SetEnabled(canAct && !current.Locked)41 m.keys.Lock.SetEnabled(canAct)42}4344func (m Model) GetFullHelp() [][]key.Binding {45 return [][]key.Binding{46 {m.keys.Up, m.keys.Down, m.keys.Left, m.keys.Right},47 {m.keys.Rotate, m.keys.RotateBack, m.keys.Lock},48 }49}