Fix worldEvent reset space leak

This commit is contained in:
jgk
2021-08-18 13:18:46 +02:00
parent a6f08aef16
commit 910c29a510
12 changed files with 34 additions and 33 deletions
+7 -4
View File
@@ -33,7 +33,7 @@ import Data.Monoid
--import System.Random
update :: World -> World
update = update' . pushSideEffects
update = functionalUpdate . pushSideEffects
pushSideEffects :: World -> World
pushSideEffects w = w
@@ -42,8 +42,8 @@ pushSideEffects w = w
{- |
The update step.
For most menus the only way to change the world is using event handling. -}
update' :: World -> World
update' w = case _menuLayers w of
functionalUpdate :: World -> World
functionalUpdate w = case _menuLayers w of
(TerminalMessage t xs:mls) -> w & menuLayers .~ (TerminalMessage (max (t-1) 0) xs:mls)
(WaitMessage s i: _)
| i < 1 -> w & dbArg _worldEvents
@@ -64,7 +64,7 @@ update' w = case _menuLayers w of
. simpleCrSprings
. zoneCreatures
. updateWalls
. set worldEvents id
. resetWorldEvents
. dbArg _worldEvents
. updateParticles
. updateProjectiles
@@ -88,6 +88,9 @@ update' w = case _menuLayers w of
where
(x,y) = cloudZoneOfPoint $ _clPos cl
resetWorldEvents :: World -> World
resetWorldEvents w = w {_worldEvents = id}
updateCreatureGroups :: World -> World
updateCreatureGroups w = w & creatureGroups %~
IM.mapMaybe (\cgp -> _crGroupUpdate cgp w cgp)