From 498f4c5c1314d76fa6305db93980d745889c4631 Mon Sep 17 00:00:00 2001 From: justin Date: Tue, 21 Feb 2023 11:11:29 +0000 Subject: [PATCH] Add file --- src/Dodge/ListDisplayParams.hs | 65 ++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/Dodge/ListDisplayParams.hs diff --git a/src/Dodge/ListDisplayParams.hs b/src/Dodge/ListDisplayParams.hs new file mode 100644 index 000000000..1797eca29 --- /dev/null +++ b/src/Dodge/ListDisplayParams.hs @@ -0,0 +1,65 @@ +module Dodge.ListDisplayParams where + +import Dodge.Data.CardinalPoint +import SDL (MouseButton (..)) +import Dodge.Data.SelectionList +import Dodge.Data.World +import qualified Data.Map.Strict as M +import Control.Lens + + +defaultListDisplayParams :: ListDisplayParams +defaultListDisplayParams = + ListDisplayParams + { _ldpVerticalGap = 10 + , _ldpScale = 1 + , _ldpPosX = 0 + , _ldpPosY = 0 + , _ldpCursorType = NoCursor + , _ldpWidth = FixedSelectionWidth 15 + } + +invDisplayParams :: World -> ListDisplayParams +invDisplayParams w = + defaultListDisplayParams + & ldpCursorType .~ BorderCursor selcursortype + & ldpWidth .~ FixedSelectionWidth (determineInvSelCursorWidth w) + where + selcursortype + | isexaminesub || ButtonRight `M.member` _mouseButtons (_input w) = [North, South, East, West] + | otherwise = [North, South, West] + isexaminesub = case w ^? hud . hudElement . subInventory of + Just ExamineInventory{} -> True + _ -> False + +secondColumnParams :: ListDisplayParams +secondColumnParams = + defaultListDisplayParams + & ldpPosX .~ subInvX + & ldpPosY .~ 60 + & ldpCursorType .~ BorderCursor [North, South, West] + +subInvX :: Float +subInvX = 9 * fromIntegral topInvW + 50 + +topInvW :: Int +topInvW = 15 + +--thirdColumnParams :: ListDisplayParams +--thirdColumnParams = +-- defaultListDisplayParams +-- & ldpPosX .~ 9 * fromIntegral topInvW + 275 +-- & ldpPosY .~ 60 + +determineInvSelCursorWidth :: World -> Int +determineInvSelCursorWidth w = case _rbOptions w of + NoRightButtonOptions -> topInvW + EquipOptions{} + | ButtonRight `M.member` _mouseButtons (_input w) + && hasnosubinv -> + 47 + | otherwise -> topInvW + where + hasnosubinv = case w ^? hud . hudElement . subInventory of + Just NoSubInventory -> True + _ -> False