aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2024-12-14 11:46:48 +0530
committerAkshay Nair <phenax5@gmail.com>2024-12-14 11:54:06 +0530
commit7ab99bd80e30d0cc2cf21e4cda47870821b8fd47 (patch)
treec2fe30dcda461a34beaa740684d613083d144dd1 /src
parent80add34b15855932e9201d7426d9df01aa82c845 (diff)
downloadchelleport-7ab99bd80e30d0cc2cf21e4cda47870821b8fd47.tar.gz
chelleport-7ab99bd80e30d0cc2cf21e4cda47870821b8fd47.zip
Fix sequence generation for grid
Diffstat (limited to 'src')
-rw-r--r--src/Chelleport.hs3
-rw-r--r--src/Chelleport/KeySequence.hs12
2 files changed, 9 insertions, 6 deletions
diff --git a/src/Chelleport.hs b/src/Chelleport.hs
index f34bf27..74c61e7 100644
--- a/src/Chelleport.hs
+++ b/src/Chelleport.hs
@@ -6,7 +6,6 @@ import Chelleport.KeySequence (eventToKeycode, generateKeyCells, isValidKey, nex
import Control.Monad (forM_, unless, void)
import Data.IORef (modifyIORef', newIORef, readIORef)
import Data.List (isPrefixOf)
-import Data.Text (splitOn)
import qualified Data.Text as Text
import qualified SDL
import Unsafe.Coerce (unsafeCoerce)
@@ -34,7 +33,7 @@ initialState _ctx = do
where
rows = 16
columns = 16
- hintKeys = "ABCDEFGIMNOPRSTUVWXYZ"
+ hintKeys = "ABCDEFGHIJKLMNOPRSTUVWXYZ1234567890"
render :: State -> DrawContext -> IO ()
render state ctx = do
diff --git a/src/Chelleport/KeySequence.hs b/src/Chelleport/KeySequence.hs
index 1d118cd..88658f1 100644
--- a/src/Chelleport/KeySequence.hs
+++ b/src/Chelleport/KeySequence.hs
@@ -24,12 +24,16 @@ generateKeyCells :: (Int, Int) -> [Char] -> [[[Char]]]
generateKeyCells (rows, columns) hintKeys =
(\row -> getCellSeq row <$> [1 .. columns]) <$> [1 .. rows]
where
- getCellSeq x y = [getPrefix1 x y, getPrefix2 x y, getKey x y]
- getKey _row col = hintKeys !! (col `mod` (columns `div` 2))
- getPrefix1 _row col
+ getCellSeq row col = [getPrefixHoriz row col, getPrefixVert row col, getKey row col]
+ getKey row col = hintKeys !! index
+ where
+ index = (secRow * (columns `div` 2) + secCol) `mod` length hintKeys
+ secCol = (col - 1) `mod` (columns `div` 2)
+ secRow = (row - 1) `mod` (rows `div` 2)
+ getPrefixHoriz _row col
| col <= (columns `div` 2) = 'H'
| otherwise = 'L'
- getPrefix2 row _col
+ getPrefixVert row _col
| row <= (rows `div` 2) = 'K'
| otherwise = 'J'