1package sudokurgb23import "github.com/FelineStateMachine/puzzletea/game"45func (m *Model) screenToGrid(screenX, screenY int) (col, row int, ok bool) {6 ox, oy := m.cachedGridOrigin()7 return game.DynamicGridScreenToCell(8 game.DynamicGridMetrics{Width: gridSize, Height: gridSize, CellWidth: cellWidth},9 ox,10 oy,11 screenX,12 screenY,13 false,14 )15}1617func (m *Model) cachedGridOrigin() (x, y int) {18 if m.originValid {19 return m.originX, m.originY20 }2122 x, y = m.gridOrigin()23 m.originX, m.originY = x, y24 m.originValid = true25 return x, y26}2728func (m *Model) gridOrigin() (x, y int) {29 solved := m.isSolved()30 title := game.TitleBarView("Sudoku RGB", m.modeTitle, solved)31 board := buildBoardBlock(*m, solved)32 x, y = game.DynamicGridOrigin(m.termWidth, m.termHeight, m.View(), title, board.Block)33 return x + board.HintWidth, y + board.HintHeight34}