Add dummy options above more options in option menus

This commit is contained in:
2022-12-24 12:14:10 +00:00
parent acb085e3b4
commit 5fb455b9e9
+8 -2
View File
@@ -62,13 +62,19 @@ optionsToSelections maxlines u allops pmo = sits
where
offset = u ^?! uvScreenLayers . _head . scOffset
ops | maxlines >= length allops = allops
| otherwise = take (maxlines - 2) (drop offset allops) ++ [cycleOptionsOption]
| otherwise = take (maxlines - 2) (drop offset allops ++ repeat dummyMenuOption) ++ [cycleOptionsOption]
maxOptionLength = 3 + maximum (0 : map (optionValueOffset u) ops)
sits = case pmo of
NoPositionedMenuOption -> map (menuOptionToSelectionItem u maxOptionLength) ops
TopMenuOption mo -> map (menuOptionToSelectionItem u maxOptionLength) (mo : ops)
BottomMenuOption mo -> map (menuOptionToSelectionItem u maxOptionLength) (ops ++ [mo])
cycleOptionsOption = Toggle cycleOptions (const (MODString "MORE OPTIONS"))
cycleOptionsOption = Toggle cycleOptions (const (MODString ("MORE OPTIONS " ++ show n ++ "/" ++ show m)))
l = length allops
m = div (max 1 (l - 1)) (maxlines - 2) + 1
n = div (offset + 1) (maxlines - 2) + 1
dummyMenuOption :: MenuOption
dummyMenuOption = Toggle id (const $ MODBlockedString "")
cycleOptions :: Universe -> Universe
cycleOptions u = fromMaybe u $ do