From f29c200a276fee10f8520ba3ed624e37b671987d Mon Sep 17 00:00:00 2001 From: justin Date: Fri, 26 Nov 2021 18:56:37 +0000 Subject: [PATCH] Make rewind gun mostly work; todo sound, dropping item, perhaps more --- src/Dodge/Creature.hs | 1 + src/Dodge/Creature/YourControl.hs | 2 +- src/Dodge/Data.hs | 3 ++- src/Dodge/Default/World.hs | 1 + src/Dodge/Item/Weapon/Utility.hs | 15 +++++++++++++-- src/Dodge/Update/UsingInput.hs | 2 +- 6 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/Dodge/Creature.hs b/src/Dodge/Creature.hs index b6923f42d..b98af8c3e 100644 --- a/src/Dodge/Creature.hs +++ b/src/Dodge/Creature.hs @@ -164,6 +164,7 @@ startCr = defaultCreature startInvList :: [Item] startInvList = [ rewindGun + , pistol ] startInventory :: IM.IntMap Item startInventory = IM.fromList $ zip [0..defaultInvSize -1] $ startInvList ++ repeat NoItem diff --git a/src/Dodge/Creature/YourControl.hs b/src/Dodge/Creature/YourControl.hs index e24235fdb..db9ee9b3c 100644 --- a/src/Dodge/Creature/YourControl.hs +++ b/src/Dodge/Creature/YourControl.hs @@ -18,7 +18,7 @@ yourControl -> World -> (Endo World, Maybe Creature) yourControl cr w = - ( Endo updateUsingInput + ( Endo updateUsingInput , Just . mouseActionsCr (_mouseButtons w) $ wasdWithAiming w speed 0 cr ) where diff --git a/src/Dodge/Data.hs b/src/Dodge/Data.hs index f5ca4c4fd..347b15fc0 100644 --- a/src/Dodge/Data.hs +++ b/src/Dodge/Data.hs @@ -55,6 +55,7 @@ type CRUpdate = Creature -> World -> (Endo World, Maybe Creature) data World = World { _keys :: !(S.Set Scancode) , _mouseButtons :: !(S.Set MouseButton) + , _mousePos :: !Point2 , _cameraCenter :: !Point2 , _cameraRot :: !Float , _cameraZoom :: !Float @@ -78,7 +79,6 @@ data World = World , _floorItems :: IM.IntMap FloorItem , _floorTiles :: [(Point3,Point3)] , _randGen :: StdGen - , _mousePos :: !Point2 , _testString :: World -> [String] , _modifications :: IM.IntMap Modification , _yourID :: !Int @@ -116,6 +116,7 @@ data World = World , _preloadData :: PreloadData , _savedWorlds :: M.Map SaveSlot World , _rewindWorlds :: [World] + , _rewinding :: Bool , _frameClock :: Int } diff --git a/src/Dodge/Default/World.hs b/src/Dodge/Default/World.hs index ce64228d9..1603079a2 100644 --- a/src/Dodge/Default/World.hs +++ b/src/Dodge/Default/World.hs @@ -85,6 +85,7 @@ defaultWorld = World , _frameClock = 0 , _worldBounds = defaultBounds , _rewindWorlds = [] + , _rewinding = False } youLight :: TempLightSource youLight = diff --git a/src/Dodge/Item/Weapon/Utility.hs b/src/Dodge/Item/Weapon/Utility.hs index 0bdd160f7..c21292349 100644 --- a/src/Dodge/Item/Weapon/Utility.hs +++ b/src/Dodge/Item/Weapon/Utility.hs @@ -32,9 +32,20 @@ rewindEffect iteff cr invid w = w & rewindWorlds %~ (take 100 . (w' : )) useRewindGun :: Item -> Creature -> World -> World useRewindGun it cr w = case _rewindWorlds w of - (_:w':ws) -> w' & keys .~ _keys w - & mouseButtons .~ _mouseButtons w + (w':[]) -> w' + & upbuts + & rewindWorlds .~ [] + & rewinding .~ True + & lClickHammer .~ HammerUp + where + upbuts = (keys .~ _keys w) . (mouseButtons .~ _mouseButtons w) + (_:w':ws) -> w' + & upbuts & rewindWorlds .~ ws + & rewinding .~ True + & lClickHammer .~ HammerUp + where + upbuts = (keys .~ _keys w) . (mouseButtons .~ _mouseButtons w) _ -> w shrinkGun :: Item diff --git a/src/Dodge/Update/UsingInput.hs b/src/Dodge/Update/UsingInput.hs index e0db145ef..4990769d5 100644 --- a/src/Dodge/Update/UsingInput.hs +++ b/src/Dodge/Update/UsingInput.hs @@ -18,7 +18,7 @@ updateUsingInput w = if _carteDisplay w updatePressedButtons :: S.Set MouseButton -> World -> World updatePressedButtons pkeys w - | lbPressed && rbPressed + | lbPressed && rbPressed = useItem (_yourID w) w & lClickHammer .~ HammerDown | lbPressed && canLeftClick = useLeftItem (_yourID w) w | lbPressed = w