From 6aea049b80d7d7fcff46121b67ec08aa35b0525d Mon Sep 17 00:00:00 2001 From: justin Date: Mon, 25 Nov 2024 22:59:54 +0000 Subject: [PATCH] Unify terminal size determination --- src/Dodge/Render/HUD.hs | 32 +++++++++++++++++--------------- src/Dodge/Update.hs | 13 +++++++------ tags | 34 +++++++++++++++++----------------- 3 files changed, 41 insertions(+), 38 deletions(-) diff --git a/src/Dodge/Render/HUD.hs b/src/Dodge/Render/HUD.hs index 58dd4d76e..6eb1d1b57 100644 --- a/src/Dodge/Render/HUD.hs +++ b/src/Dodge/Render/HUD.hs @@ -4,7 +4,6 @@ module Dodge.Render.HUD ( drawHUD, ) where -import NewInt import Control.Applicative import Control.Lens import Control.Monad @@ -41,6 +40,7 @@ import Dodge.Terminal.Type import Geometry import qualified IntMapHelp as IM import Justify +import NewInt import Picture import SDL (MouseButton (..)) @@ -59,7 +59,7 @@ drawInventory sss w cfig = <> iextra <> drawMouseOver cfig w where - f = fmap (\(x,y,_) -> (x,y)) + f = fmap (\(x, y, _) -> (x, y)) ldp = invDisplayParams w curs = invCursorParams w iextra = fromMaybe mempty $ do @@ -116,9 +116,9 @@ drawMouseOver cfig w = let idp = invDisplayParams w return . translateScreenPos cfig (invDisplayParams w ^. ldpPos) . color (withAlpha 0.1 white) --- . color white + -- . color white $ selSecDrawCursorAt 15 idp curs sss (j, i) --- curs = BoundaryCursor [West] + -- curs = BoundaryCursor [West] curs = BackdropCursor combinvsel = do (j, i) <- @@ -133,11 +133,12 @@ drawMouseOver cfig w = drawDragSelected :: Configuration -> World -> Maybe Picture drawDragSelected cfig w = do ys <- w ^? hud . hudElement . diSelection . _Just . _3 - guard $ not (IS.null ys) && - ( case w ^? hud . hudElement . subInventory of - Just NoSubInventory -> True - _ -> False - ) + guard $ + not (IS.null ys) + && ( case w ^? hud . hudElement . subInventory of + Just NoSubInventory -> True + _ -> False + ) (i, _, _) <- w ^? hud . hudElement . diSelection . _Just sss <- w ^? hud . hudElement . diSections let idp = invDisplayParams w @@ -179,8 +180,9 @@ drawCombineInventory cfig sss w = <> combineInventoryExtra sss msel cfig w where curs = BoundaryCursor [North, South, West] - msel = fmap (\(x,y,_) -> (x,y)) - $ w ^? hud . hudElement . subInventory . ciSelection . _Just + msel = + fmap (\(x, y, _) -> (x, y)) $ + w ^? hud . hudElement . subInventory . ciSelection . _Just drawExamineInventory :: Configuration -> World -> Picture drawExamineInventory cfig w = @@ -228,7 +230,7 @@ yourAugmentedItem f x g w = case you w ^? crManipulation . manObject of j <- w ^? hud . closeItems . ix i . unNInt flit <- w ^? cWorld . lWorld . floorItems . unNIntMap . ix j return . g $ Left flit --- g . Left $ w ^?! hud . closeItems . ix i + -- g . Left $ w ^?! hud . closeItems . ix i Just (SelCloseButton i) -> fromMaybe x $ do j <- w ^? hud . closeButtons . ix i flit <- w ^? cWorld . lWorld . buttons . ix j @@ -245,7 +247,7 @@ drawRBOptions cfig w = fromMaybe mempty $ do i <- w ^? rbOptions . opSel let ae = getEquipmentAllocation w sss <- w ^? hud . hudElement . diSections - (i', j,_) <- w ^? hud . hudElement . diSelection . _Just + (i', j, _) <- w ^? hud . hudElement . diSelection . _Just curpos <- selSecYint i' j sss let ytext = drawListElement 0 1 0 curpos . text midstr = equipAllocString ae @@ -356,11 +358,11 @@ combineInventoryExtra sss msel cfig w = fromMaybe mempty $ do drawTerminalDisplay :: Int -> Configuration -> LWorld -> Picture drawTerminalDisplay tid cfig w = fromMaybe mempty $ do tm <- w ^? terminals . ix tid + let tsize = getMaxLinesTM (tm ^. tmType) + 1 return $ invHead cfig (_tmTitle tm ++ ":T" ++ show tid) <> drawSelectionList secondColumnParams cfig (thesellist tm) - <> color (withAlpha 0.5 green) (drawSelectionListBackground secondColumnParams cfig 15) - -- when changing the 15, change isOverTerminalScreen + <> color (withAlpha 0.5 green) (drawSelectionListBackground secondColumnParams cfig tsize) <> color (dark $ _tmExternalColor tm) (drawTitleBackground cfig) where toselitm (str, col) = SelectionItem [str] 1 True col 0 () diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index 6cedc4073..fd9c392b0 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -47,6 +47,7 @@ import Dodge.Shockwave.Update import Dodge.SmoothScroll import Dodge.SoundLogic import Dodge.Spark +import Dodge.Terminal.Type import Dodge.Tesla.Arc import Dodge.TmTm import Dodge.TractorBeam.Update @@ -315,7 +316,8 @@ updateMouseContextGame :: Configuration -> Universe -> Universe updateMouseContextGame cfig u = case u ^. uvWorld . input . mouseContext of OverInvDrag i _ _ _ -> u & uvWorld . input . mouseContext .~ invdrag i OverInvDragSelect{} -> u - _ -> u & uvWorld . input . mouseContext + _ -> + u & uvWorld . input . mouseContext .~ fromMaybe aimcontext (overinv <|> overcomb <|> overterm) where w = u ^. uvWorld @@ -332,7 +334,7 @@ updateMouseContextGame cfig u = case u ^. uvWorld . input . mouseContext of return $ OverInvDrag i' (Just (i, j)) above bneath overinv = do sss <- w ^? hud . hudElement . diSections - selpos@(i,j) <- inverseSelNumPos cfig (invDisplayParams w) sss mpos + selpos@(i, j) <- inverseSelNumPos cfig (invDisplayParams w) sss mpos case w ^? hud . hudElement . subInventory . ciSelection of Just _ -> do guard (i == 0) @@ -384,7 +386,7 @@ getMenuMouseContext screen u = case screen ^. scOptions of u ^? uvScreenLayers . _head . scSelectionList . ix yi . siIsSelectable isOverTerminalScreen :: Configuration -> Terminal -> Point2 -> Bool -isOverTerminalScreen cfig _ (V2 x y) = +isOverTerminalScreen cfig tm (V2 x y) = x <= xmax && x >= xmin - 5 && y <= ymax + 5 @@ -392,9 +394,8 @@ isOverTerminalScreen cfig _ (V2 x y) = where ldp = secondColumnParams V2 xmin ymax = screenPosAbs cfig (ldp ^. ldpPos) - s = 5 + 15 * (20 * ldp ^. ldpScale + ldp ^. ldpVerticalGap) - -- the 15 is the length of list in the terminal display, don't change - -- without changing drawTerminalDisplay + tsize = fromIntegral $ getMaxLinesTM (tm ^. tmType) + 1 + s = 5 + tsize * (20 * ldp ^. ldpScale + ldp ^. ldpVerticalGap) ymin = ymax - s xmax = xmin + 555 -- HACK drawSelectionListBackground diff --git a/tags b/tags index 3ac9211f7..62d9e1265 100644 --- a/tags +++ b/tags @@ -3350,7 +3350,7 @@ adjustIMZone src/Dodge/Base.hs 77;" f advanceScrollAmount src/Dodge/Update.hs 408;" f advanceSmoothScroll src/Dodge/SmoothScroll.hs 29;" f advanceStepCounter src/Dodge/Creature/Impulse/Movement.hs 45;" f -aimDelaySweep src/Dodge/Render/Picture.hs 233;" f +aimDelaySweep src/Dodge/Render/Picture.hs 235;" f aimStanceInfo src/Dodge/Item/Info.hs 210;" f aimTurn src/Dodge/Creature/YourControl.hs 143;" f aimingMuzzleLength src/Dodge/Creature/HandPos.hs 46;" f @@ -4097,8 +4097,8 @@ drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f drawCarte src/Dodge/Render/HUD/Carte.hs 14;" f drawCircFlare src/Dodge/Flare.hs 25;" f drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f -drawCombFilter src/Dodge/Render/Picture.hs 214;" f -drawCombFilterJump src/Dodge/Render/Picture.hs 157;" f +drawCombFilter src/Dodge/Render/Picture.hs 216;" f +drawCombFilterJump src/Dodge/Render/Picture.hs 159;" f drawCombineInventory src/Dodge/Render/HUD.hs 170;" f drawConcurrentMessage src/Dodge/Render/Picture.hs 62;" f drawCorpse src/Dodge/Corpse/Draw.hs 6;" f @@ -4111,13 +4111,13 @@ drawCursorAt src/Dodge/Render/List.hs 71;" f drawDDATest src/Dodge/Debug/Picture.hs 256;" f drawDoorPaths src/Dodge/Debug/Picture.hs 217;" f drawDoubleLampCover src/Dodge/Prop/Draw.hs 81;" f -drawDrag src/Dodge/Render/Picture.hs 164;" f -drawDragDrop src/Dodge/Render/Picture.hs 175;" f -drawDragPickup src/Dodge/Render/Picture.hs 184;" f -drawDragSelect src/Dodge/Render/Picture.hs 161;" f +drawDrag src/Dodge/Render/Picture.hs 166;" f +drawDragDrop src/Dodge/Render/Picture.hs 177;" f +drawDragPickup src/Dodge/Render/Picture.hs 186;" f +drawDragSelect src/Dodge/Render/Picture.hs 163;" f drawDragSelected src/Dodge/Render/HUD.hs 133;" f drawDragSelecting src/Dodge/Render/HUD.hs 150;" f -drawEmptySet src/Dodge/Render/Picture.hs 112;" f +drawEmptySet src/Dodge/Render/Picture.hs 114;" f drawEnergyBall src/Dodge/EnergyBall/Draw.hs 8;" f drawEquipment src/Dodge/Creature/Picture.hs 140;" f drawExamineInventory src/Dodge/Render/HUD.hs 185;" f @@ -4127,7 +4127,7 @@ drawFlamelet src/Dodge/EnergyBall/Draw.hs 23;" f drawFlare src/Dodge/Flare.hs 12;" f drawFooterText src/Dodge/Render/MenuScreen.hs 74;" f drawForceField src/Dodge/Wall/Draw.hs 11;" f -drawGapPlus src/Dodge/Render/Picture.hs 224;" f +drawGapPlus src/Dodge/Render/Picture.hs 226;" f drawGib src/Dodge/Prop/Draw.hs 28;" f drawHUD src/Dodge/Render/HUD.hs 47;" f drawInputMenu src/Dodge/Render/MenuScreen.hs 21;" f @@ -4145,8 +4145,8 @@ drawListYgapScaleYoff src/Dodge/Render/List.hs 99;" f drawListYoff src/Dodge/Render/List.hs 96;" f drawMachine src/Dodge/Machine/Draw.hs 17;" f drawMapWall src/Dodge/Render/HUD/Carte.hs 33;" f -drawMenuClick src/Dodge/Render/Picture.hs 132;" f -drawMenuCursor src/Dodge/Render/Picture.hs 145;" f +drawMenuClick src/Dodge/Render/Picture.hs 134;" f +drawMenuCursor src/Dodge/Render/Picture.hs 147;" f drawMenuOrHUD src/Dodge/Render/Picture.hs 57;" f drawMenuScreen src/Dodge/Render/MenuScreen.hs 15;" f drawMouseCursor src/Dodge/Render/Picture.hs 73;" f @@ -4159,7 +4159,7 @@ drawOptions src/Dodge/Render/MenuScreen.hs 35;" f drawPathBetween src/Dodge/Debug/Picture.hs 168;" f drawPathEdge src/Dodge/Debug/Picture.hs 222;" f drawPathing src/Dodge/Debug/Picture.hs 384;" f -drawPlus src/Dodge/Render/Picture.hs 129;" f +drawPlus src/Dodge/Render/Picture.hs 131;" f drawPointLabel src/Dodge/Render/Label.hs 13;" f drawProjectile src/Dodge/Projectile/Draw.hs 13;" f drawProp src/Dodge/Prop/Draw.hs 15;" f @@ -4167,11 +4167,11 @@ drawProp' src/Dodge/Prop/Draw.hs 12;" f drawRBOptions src/Dodge/Render/HUD.hs 238;" f drawRadarSweep src/Dodge/RadarSweep/Draw.hs 7;" f drawRemoteShell src/Dodge/Projectile/Draw.hs 30;" f -drawReturn src/Dodge/Render/Picture.hs 118;" f +drawReturn src/Dodge/Render/Picture.hs 120;" f drawRootCursor src/Dodge/Render/HUD.hs 71;" f drawSSCursor src/Dodge/SelectionSections/Draw.hs 31;" f drawSSMultiCursor src/Dodge/SelectionSections/Draw.hs 42;" f -drawSelect src/Dodge/Render/Picture.hs 203;" f +drawSelect src/Dodge/Render/Picture.hs 205;" f drawSelectionList src/Dodge/Render/List.hs 35;" f drawSelectionListBackground src/Dodge/Render/List.hs 51;" f drawSelectionSections src/Dodge/SelectionSections/Draw.hs 17;" f @@ -4184,7 +4184,7 @@ drawShockwave src/Dodge/Shockwave/Draw.hs 7;" f drawSpark src/Dodge/Spark/Draw.hs 6;" f drawStaticBall src/Dodge/EnergyBall/Draw.hs 14;" f drawSubInventory src/Dodge/Render/HUD.hs 162;" f -drawSweep src/Dodge/Render/Picture.hs 240;" f +drawSweep src/Dodge/Render/Picture.hs 242;" f drawSwitch src/Dodge/Button/Draw.hs 15;" f drawSwitchWire src/Dodge/LevelGen/Switch.hs 28;" f drawTargetLaser src/Dodge/Particle/Draw.hs 6;" f @@ -4726,7 +4726,7 @@ launcherCrit src/Dodge/Creature/LauncherCrit.hs 12;" f launcherPic src/Dodge/Item/Draw/SPic.hs 331;" f launcherX src/Dodge/Item/Held/Launcher.hs 32;" f layoutLevelFromSeed src/Dodge/LevelGen.hs 47;" f -ldpVerticalSelection src/Dodge/Update/Input/ScreenLayer.hs 73;" f +ldpVerticalSelection src/Dodge/Update/Input/ScreenLayer.hs 72;" f ldtIL src/Dodge/DoubleTree.hs 149;" f ldtPropagate src/Dodge/DoubleTree.hs 20;" f ldtPropagateFold src/Dodge/DoubleTree.hs 29;" f @@ -5640,7 +5640,7 @@ setOutLinksByType src/Dodge/RoomLink.hs 57;" f setOutLinksPD src/Dodge/RoomLink.hs 77;" f setRBCreatureTargeting src/Dodge/Creature/State.hs 292;" f setSelWhileDragging src/Dodge/Update/Input/InGame.hs 280;" f -setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 104;" f +setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 85;" f setShaderSource src/Shader/Compile.hs 290;" f setShadowLimits src/Dodge/Shadows.hs 11;" f setSoundVolume src/Sound.hs 156;" f