Get rid of world hammers

This commit is contained in:
2023-01-16 01:52:12 +00:00
parent 43e3c1fe4c
commit 5810c2262a
9 changed files with 40 additions and 86 deletions
+1 -1
View File
@@ -94,7 +94,7 @@ bulletSpawn bu = case _buSpawn bu of
BulSpark -> Nothing
BulFlak -> Just (makeFlak bu)
BulFrag -> Just makeFragBullets
BulGas -> Just (flip makeGasCloud (V2 0 0))
BulGas -> Just (`makeGasCloud` V2 0 0)
BulBall IncBall -> Just incBallAt
BulBall ConcBall -> Just $ \p -> cWorld . lWorld . shockwaves .:~ concBall p
BulBall TeslaBall -> Just makeStaticBall
+9 -26
View File
@@ -2,10 +2,10 @@
module Dodge.Combine (
toggleCombineInv,
enterCombineInv,
combineListSelection,
picsToSelectable,
combineList,
) where
import SelectionIntMap
import Dodge.Data.Combine
import Dodge.Item.Display
import Color
@@ -108,29 +108,12 @@ toggleCombineInv w = case w ^. hud . hudElement of
_ -> w & enterCombineInv
enterCombineInv :: World -> World
enterCombineInv w = w & hud . hudElement . subInventory .~ CombineInventory
(combineListSelection w mi "" False)
enterCombineInv w = w & hud . hudElement . subInventory .~ CombineInventory sm
where
mi = 0 <$ listToMaybe (combineList w)
combineListSelection :: World -> Maybe Int -> String -> Bool -> SelectionIntMap CombinableItem
combineListSelection w mi regex x = SelectionIntMap
{ _smItems = combineList w
, _smSelPos = mi
, _smLength = length (combineList w)
, _smRegex = regex
, _smRegexInput = x
, _smShownItems = IM.fromAscList $ zip [0..] (combineList w)
}
picsToSelectable :: Int -> [String] -> SelectionItem ()
picsToSelectable wdth pics =
SelectionItem
{ _siPictures = pics
, _siHeight = length pics
, _siIsSelectable = True
, _siWidth = wdth
, _siColor = white
, _siOffX = 0
, _siPayload = ()
sm = initialSelPos $ SelectionIntMap
{ _smItems = combineList w
, _smSelPos = Nothing
, _smRegex = ""
, _smRegexInput = False
, _smShownItems = IM.fromAscList $ zip [0..] (combineList w)
}
-14
View File
@@ -5,7 +5,6 @@
module Dodge.Data.Input where
import Control.Lens
import qualified Data.Map.Strict as M
import Dodge.Data.CWorld
import Geometry.Data
import SDL (MouseButton, Scancode)
@@ -14,13 +13,6 @@ data PressType = InitialPress
| LongPress
deriving (Eq,Show)
data MouseButtonInfo = MouseButtonInfo
{ _mbHeldDown :: Bool
, _mbFlags :: [MouseButtonFlag]
}
data MouseButtonFlag
= PressedStartRewind
data Input = Input
{ _mousePos :: Point2
, _mouseMoving :: Bool
@@ -28,7 +20,6 @@ data Input = Input
, _mouseButtons :: M.Map MouseButton Bool -- shortpress False, repeatpress True
, _scrollAmount :: Int
, _previousScrollAmount :: Int
, _hammers :: M.Map WorldHammer HammerPosition
, _lLine :: (Point2, Point2)
, _rLine :: (Point2, Point2)
, _lrLine :: (Point2, Point2)
@@ -39,9 +30,4 @@ data Input = Input
, _scrollTestValue :: Float
}
data WorldHammer
= SubInvHam
| DoubleMouseHam
deriving (Eq, Ord, Show, Read, Enum, Bounded)
makeLenses ''Input
-1
View File
@@ -33,7 +33,6 @@ data SelectionList a = SelectionList
data SelectionIntMap a = SelectionIntMap
{ _smItems :: [SelectionItem a]
, _smSelPos :: Maybe Int
, _smLength :: Int
, _smRegex :: String
, _smRegexInput :: Bool
, _smShownItems :: IntMap (SelectionItem a)
-5
View File
@@ -3,7 +3,6 @@ module Dodge.Default.World where
--import Dodge.Data.SelectionList
import Data.Graph.Inductive.Graph hiding ((&))
import qualified Data.Map as M
import qualified Data.Set as S
import Dodge.Data.World
import Geometry.Data
import Geometry.Polygon
@@ -21,7 +20,6 @@ defaultInput =
, _mouseMoving = False
, _scrollAmount = 0
, _previousScrollAmount = 0
, _hammers = defaultWorldHammers
, _lrLine = (0, 0)
, _lLine = (0, 0)
, _rLine = (0, 0)
@@ -154,9 +152,6 @@ defaultHUD =
, _closeObjects = []
}
defaultWorldHammers :: M.Map WorldHammer HammerPosition
defaultWorldHammers = M.fromSet (const HammerUp) $ S.fromList [minBound .. maxBound]
--youLight :: TempLightSource
--youLight = TLS
-- { _tlsParam = LSParam
+13 -2
View File
@@ -6,7 +6,6 @@ module Dodge.Render.HUD (
import SelectionIntMap
import Dodge.Data.Combine
import Dodge.Default.SelectionList
import Dodge.Combine
import Dodge.Creature.Info
import Control.Lens
import qualified Data.Map.Strict as M
@@ -90,7 +89,7 @@ drawSubInventory subinv cfig w = case subinv of
let mi = _smSelPos sl
in titledSub'
cfig
("COMBINE")
"COMBINE"
sl
<> combineInventoryExtra sl mi cfig w
@@ -445,6 +444,18 @@ mainListCursor c = openCursorAt 120 c 5 0
textSelItems :: [String] -> [SelectionItem ()]
textSelItems = map (picsToSelectable 15 . (: []))
picsToSelectable :: Int -> [String] -> SelectionItem ()
picsToSelectable wdth pics =
SelectionItem
{ _siPictures = pics
, _siHeight = length pics
, _siIsSelectable = True
, _siWidth = wdth
, _siColor = white
, _siOffX = 0
, _siPayload = ()
}
openCursorAt ::
-- | Width
Float ->
+2 -4
View File
@@ -1,12 +1,10 @@
module Dodge.SelectionList where
--import Color
--import Dodge.WindowLayout
import Color
import Regex
import Dodge.Data.Universe
import LensHelp
--import Data.Maybe
import Data.Maybe
getAvailableListLines :: ListDisplayParams -> Configuration -> Int
getAvailableListLines ldps cfig = floor ((dToBot - vgap) / itmHeight)
@@ -42,7 +40,7 @@ moveSelectionListSelection :: Int -> SelectionList a -> SelectionList a
moveSelectionListSelection yi sl = sl & slSelPos %~ f
where
f x | maxsel == 0 = Nothing
| x == Nothing = Just 0
| isNothing x = Just 0
| otherwise = fmap ((`mod` maxsel) . subtract yi) x
maxsel = case _slRegex sl of
"" -> length (_slItems sl)
-5
View File
@@ -24,7 +24,6 @@ import Dodge.DrWdWd
import Dodge.EnergyBall
import Dodge.Flame
import Dodge.Flare
import Dodge.Hammer
import Dodge.InputFocus
import Dodge.Inventory
import Dodge.Item.Location
@@ -261,7 +260,6 @@ functionalUpdate w =
checkEndGame
. over uvWorld (cWorld . lWorld . lClock +~ 1)
. over uvWorld updateWorldSelect'
. moveHammersUp
. over uvWorld updateDistortions
. over uvWorld updateCreatureSoundPositions
. over uvWorld ppEvents
@@ -355,9 +353,6 @@ updatePastWorlds w = w & pastWorlds %~ (forceFoldable . take 100 . ((w ^. lWorld
--updatePastWorlds w = w & pastWorlds .~ []
moveHammersUp :: Universe -> Universe
moveHammersUp = uvWorld . input . hammers %~ M.map moveHammerUp
doWorldEvents :: World -> World
doWorldEvents w = foldl'
(flip doWdWd)
+15 -28
View File
@@ -3,6 +3,8 @@ module Dodge.Update.UsingInput (
updateUsingInput,
) where
import Dodge.Combine
import SelectionIntMap
import Dodge.Data.Combine
import Dodge.Data.SelectionList
import Control.Lens
@@ -27,46 +29,32 @@ updateUsingInput w = case w ^. hud . hudElement of
pressedMBEffects :: SubInventory -> M.Map MouseButton Bool -> World -> World
pressedMBEffects subinv pkeys w = case subinv of
NoSubInventory
| ButtonLeft `M.member` pkeys && w ^?! input . hammers . ix SubInvHam /= HammerUp ->
w & input . hammers . ix SubInvHam .~ HammerDown
| otherwise -> pressedMBEffectsNoInventory pkeys w
NoSubInventory -> pressedMBEffectsNoInventory pkeys w
CombineInventory SelectionIntMap {_smSelPos = mi, _smRegexInput = False}
| pkeys ^? ix ButtonLeft == Just False ->
maybeexitcombine (maybe id doCombine mi w) & input . hammers . ix SubInvHam .~ HammerDown
| lbinitialpress -> maybeexitcombine (maybe id doCombine mi w)
CombineInventory SelectionIntMap {_smRegexInput = True}
| pkeys ^? ix ButtonLeft == Just False
-> w & hud . hudElement . subInventory . subInvMap . smRegexInput .~ False
| lbinitialpress -> w & hud . hudElement . subInventory . subInvMap . smRegexInput .~ False
DisplayTerminal tmid
| pkeys ^? ix ButtonLeft == Just False && inTermFocus w ->
| lbinitialpress && inTermFocus w ->
doTerminalEffectLB (w ^?! cWorld . lWorld . terminals . ix tmid) w
& input . hammers . ix SubInvHam .~ HammerDown
| pkeys ^? ix ButtonLeft == Just False ->
| lbinitialpress ->
w & cWorld . lWorld . terminals . ix tmid . tmInput . tiFocus %~ const True
& input . hammers . ix SubInvHam .~ HammerDown
_
| ButtonLeft `M.member` pkeys ->
w & input . hammers . ix SubInvHam .~ HammerDown
_ -> w
where
maybeexitcombine
| ButtonRight `M.member` _mouseButtons (_input w) = id
| otherwise = hud . hudElement . subInventory .~ NoSubInventory
lbinitialpress = pkeys ^? ix ButtonLeft == Just False
maybeexitcombine w'
| ButtonRight `M.member` _mouseButtons (_input w)
= (hud . hudElement . subInventory . subInvMap %~ setShownIntMap)
$ (hud . hudElement . subInventory . subInvMap . smItems .~ combineList w') w'
| otherwise = w' & hud . hudElement . subInventory .~ NoSubInventory
pressedMBEffectsNoInventory :: M.Map MouseButton Bool -> World -> World
pressedMBEffectsNoInventory pkeys w
| isDown ButtonLeft && isDown ButtonRight && inTopInv =
useItem (you w) w & input . hammers . ix DoubleMouseHam .~ HammerDown
| isDown ButtonLeft && inTopInv
&& w ^?! input . hammers . ix DoubleMouseHam == HammerUp =
useLeftItem 0 w
| isDown ButtonLeft && inTopInv =
w & input . hammers . ix DoubleMouseHam .~ HammerDown
| isDown ButtonRight && inTopInv = w
| isDown ButtonLeft && isDown ButtonRight && inTopInv = useItem (you w) w
| isDown ButtonLeft && inTopInv = useLeftItem 0 w
| isDown ButtonMiddle =
w & cWorld . camPos . camRot -~ rotation
& input . clickMousePos .~ _mousePos (_input w)
| isDown ButtonLeft = w & input . hammers . ix DoubleMouseHam .~ HammerDown
| otherwise = w
where
inTopInv = case w ^. hud . hudElement of
@@ -81,7 +69,6 @@ doCombine :: Int -> World -> World
doCombine i w = case w ^? hud . hudElement . subInventory . subInvMap . smShownItems . ix i . siPayload of
Nothing -> w
Just (CombinableItem is it _) ->
-- set (hud . hudElement) (DisplayInventory NoSubInventory)
selectinv --enterCombineInv
. createPutItem it
$ foldr (rmInvItem 0) w (sort is)