From 291a35f5383432f99cced2aa415fe441d3b60a03 Mon Sep 17 00:00:00 2001 From: justin Date: Sun, 31 Aug 2025 11:47:45 +0100 Subject: [PATCH] Cleanup, add a slight border to ideal camera zoom --- src/Dodge/Creature/Impulse/UseItem.hs | 3 ++- src/Dodge/Debug/Terminal.hs | 17 +++++++++++------ src/Dodge/Update/Camera.hs | 4 +++- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/Dodge/Creature/Impulse/UseItem.hs b/src/Dodge/Creature/Impulse/UseItem.hs index 66815ea7b..6514a4d97 100644 --- a/src/Dodge/Creature/Impulse/UseItem.hs +++ b/src/Dodge/Creature/Impulse/UseItem.hs @@ -19,7 +19,8 @@ import Dodge.Item.Location useItem :: Int -> Int -> World -> Maybe World useItem invid pt w = fmap (worldEventFlags . at InventoryChange ?~ ()) $ do cr <- w ^? cWorld . lWorld . creatures . ix 0 - itmloc <- invIndents ((\k -> w ^?! cWorld . lWorld . items . ix k) <$> _crInv cr) ^? ix invid . _2 + itmloc <- invIndents ((\k -> w ^?! cWorld . lWorld . items . ix k) <$> _crInv cr) + ^? ix invid . _2 useItemLoc cr itmloc pt w useItemLoc :: Creature -> LocationDT OItem -> Int -> World -> Maybe World diff --git a/src/Dodge/Debug/Terminal.hs b/src/Dodge/Debug/Terminal.hs index 90b5ba981..87e097e76 100644 --- a/src/Dodge/Debug/Terminal.hs +++ b/src/Dodge/Debug/Terminal.hs @@ -1,7 +1,9 @@ +{-# LANGUAGE LambdaCase #-} {-# LANGUAGE TupleSections #-} module Dodge.Debug.Terminal where +import Dodge.Inventory import Data.Foldable --import Dodge.Item.Location.Initialize import Control.Applicative @@ -13,14 +15,12 @@ import Dodge.Creature import Dodge.Data.Universe import Dodge.Inventory.Add import Dodge.Item ---import Dodge.Menu.PushPop ---import qualified IntMapHelp as IM import LensHelp import MaybeHelp import Text.Read (readMaybe) applyTerminalString :: [String] -> Universe -> Universe -applyTerminalString ss = case ss of +applyTerminalString = \case [] -> id [s] -> applyTerminalCommand s (s : ss') -> applyTerminalCommandArguments s ss' @@ -28,11 +28,16 @@ applyTerminalString ss = case ss of applyTerminalCommand :: String -> Universe -> Universe applyTerminalCommand s = case s of "NOCLIP" -> uvConfig . debug_booleans . at Noclip %~ toggleJust - "GODON" -> uvWorld . cWorld . lWorld . creatures . ix 0 . crType . avatarMaterial .~ Crystal - "GODOFF" -> uvWorld . cWorld . lWorld . creatures . ix 0 . crType . avatarMaterial .~ Flesh + "GODON" -> uvWorld . cWorld . lWorld . creatures . ix 0 . crType . avatarMaterial + .~ Crystal + "GODOFF" -> uvWorld . cWorld . lWorld . creatures . ix 0 . crType . avatarMaterial + .~ Flesh + "CLEAR" -> \uv -> uv & uvWorld %~ destroyAllInvItems + (uv ^?! uvWorld . cWorld . lWorld . creatures . ix 0) x -> fromMaybe (g x) $ do (ibt, n) <- parseItem [x] - return $ uvWorld %~ flip (foldl' (&)) (replicate n ( createItemYou (itemFromBase ibt))) + return $ uvWorld + %~ flip (foldl' (&)) (replicate n ( createItemYou (itemFromBase ibt))) where g xs = uvWorld %~ \w -> foldl' (flip createItemYou) w (inventoryX xs) diff --git a/src/Dodge/Update/Camera.hs b/src/Dodge/Update/Camera.hs index 5a8d78f77..96ffdf479 100644 --- a/src/Dodge/Update/Camera.hs +++ b/src/Dodge/Update/Camera.hs @@ -127,7 +127,9 @@ moveZoomCamera cfig theinput cr w campos = | curZoom > idealZoom + 0.01 = ((zoomOutSpeed -1) * curZoom + idealZoom) / zoomOutSpeed | curZoom < idealZoom - 0.01 = ((zoomInSpeed -1) * curZoom + idealZoom) / zoomInSpeed | otherwise = idealZoom - wallZoom = min4 (campos ^. camBoundDist) + wallZoom = min4 (f (campos ^. camBoundDist)) + f (a,b,c,d) = (a+bordersize,b-bordersize,c+bordersize,d-bordersize) + bordersize = 20 min4 (a, b, c, d) = minimum [hh / maxd a, hh / maxd (- b), hw / maxd c, hw / maxd (- d)] maxd = max distFromEqmnt distFromEqmnt = viewDistanceFromItems cr