little optimization
This commit is contained in:
parent
5464b3e8bf
commit
fc57805889
1 changed files with 41 additions and 27 deletions
|
@ -556,33 +556,47 @@ drawMap = do
|
|||
drawLoadScreen ud progress
|
||||
_ -> do
|
||||
dt <- getDelta
|
||||
(_, (playerPos, posanims, posActions)) <- yieldSystemT (worldState ud) $ do
|
||||
pc <- efor allEnts $ do
|
||||
with player
|
||||
with pos
|
||||
query pos
|
||||
posanims <- efor allEnts $ do
|
||||
with anim
|
||||
with pos
|
||||
stat <- query anim
|
||||
pos' <- query pos
|
||||
mbnds <- queryMaybe obstacle
|
||||
return (pos', stat, mbnds)
|
||||
posActions <- efor allEnts $ do
|
||||
with objType
|
||||
with objState
|
||||
with objStateTime
|
||||
with objPlayerActivated
|
||||
with pos
|
||||
pos' <- query pos
|
||||
t <- query objType
|
||||
s <- query objState
|
||||
pa <- query objPlayerActivated
|
||||
let maxt = actionTime t s
|
||||
ttl <- query objStateTime
|
||||
return (pos', pa, realToFrac (1 - ttl / maxt))
|
||||
return (head pc, posanims, posActions)
|
||||
let V2 pr pc = playerPos
|
||||
(_, dat) <- yieldSystemT (worldState ud) $ do
|
||||
efor allEnts $ do
|
||||
with pos
|
||||
pos' <- query pos
|
||||
player <- queryMaybe player
|
||||
stat <- queryMaybe anim
|
||||
mbnds <- queryMaybe obstacle
|
||||
t <- queryMaybe objType
|
||||
s <- queryMaybe objState
|
||||
pa <- queryMaybe objPlayerActivated
|
||||
ttl <- queryMaybe objStateTime
|
||||
let maxt = fromMaybe 1 (actionTime <$> t <*> s)
|
||||
first = if isJust player
|
||||
then Just
|
||||
pos'
|
||||
else Nothing
|
||||
secnd = if isJust stat
|
||||
then Just
|
||||
( pos'
|
||||
, fromJust stat
|
||||
, mbnds
|
||||
)
|
||||
else Nothing
|
||||
third = if isJust t && isJust s
|
||||
then Just
|
||||
( pos'
|
||||
, fromMaybe False pa
|
||||
, realToFrac (1 - fromMaybe 0 ttl / maxt)
|
||||
)
|
||||
else Nothing
|
||||
return (first, secnd, third)
|
||||
let ((playerPos:_), posanims, posActions) = Prelude.foldl
|
||||
(\(amppo, ampan, ampac) (mppo, mpan, mpac) ->
|
||||
( if isJust mppo then fromJust mppo : amppo else amppo
|
||||
, if isJust mpan then fromJust mpan : ampan else ampan
|
||||
, if isJust mpac then fromJust mpac : ampac else ampac
|
||||
)
|
||||
)
|
||||
([], [], [])
|
||||
dat
|
||||
V2 pr pc = playerPos
|
||||
MainData _ _ _ _ gr = stateData ud
|
||||
seekGraph = Types.connects (head gr) ++ tail gr
|
||||
room = Prelude.filter (inBounds (fmap floor playerPos) . bounds) seekGraph
|
||||
|
|
Loading…
Reference in a new issue