tracer/src/Load.hs

569 lines
20 KiB
Haskell
Raw Normal View History

module Load where
import Affection as A
import qualified SDL
import Graphics.Rendering.OpenGL.GL.FlushFinish (finish)
import Control.Concurrent (forkIO)
import Control.Concurrent.MVar
2020-05-05 07:13:39 +00:00
import Control.Monad
2022-08-04 16:13:53 +00:00
import Control.Monad.Trans.Resource (ResIO)
import qualified Data.Map as M
2018-07-19 02:51:07 +00:00
import qualified Data.Text as T
import Data.Ecstasy
import Data.Maybe
2022-02-18 20:34:02 +00:00
import qualified Data.Set as S
2019-10-28 17:20:34 +00:00
import Data.String
import System.Exit (exitFailure)
import NanoVG hiding (V2(..))
2022-02-18 20:34:02 +00:00
import NanoVG.Internal.Image
-- internal imports
2018-10-12 12:26:06 +00:00
import Menu.Connect
import Types
import Util
2020-05-05 07:13:39 +00:00
loadLoad :: UserData -> Affection ()
loadLoad ud = do
2018-07-06 15:17:12 +00:00
ad <- A.get
2020-05-05 07:13:39 +00:00
wState <- liftIO $ readMVar (worldState ud)
curWin <- liftIO $ readMVar (window ud)
tContext <- liftIO $ readMVar (threadContext ud)
let progress = (0, "Starting up")
2020-05-05 08:26:16 +00:00
void $ liftIO $ putMVar (stateProgress ud) progress
_ <- liftIO $ createFont (nano ud) "bedstead"
(FileName "assets/font/Bedstead-Semicondensed.ttf")
_ <- liftIO $ forkIO $
loadFork
2020-05-05 07:13:39 +00:00
wState
(fromJust curWin)
(fromJust tContext)
(nano ud)
2020-05-05 07:13:39 +00:00
(stateMVar ud)
(stateProgress ud)
2022-08-04 16:13:53 +00:00
SDL.glMakeCurrent (fromJust curWin) (acContext $ head $ glContext ad)
2020-05-05 07:13:39 +00:00
void $ liftIO $ swapMVar (state ud) Load
void $ liftIO $ swapMVar (assetFonts ud) (M.fromList
[ (FontBedstead, "bedstead")
]
)
loadFork
2022-08-04 16:13:53 +00:00
:: SystemState Entity (AffectionState (AffectionData) ResIO)
2018-07-03 14:19:27 +00:00
-> SDL.Window
-> SDL.GLContext
-> Context
2018-08-10 06:58:26 +00:00
-> MVar
2022-08-04 16:13:53 +00:00
( SystemState Entity (AffectionState (AffectionData) ResIO)
2018-08-10 06:58:26 +00:00
, StateData
)
2018-07-19 02:51:07 +00:00
-> MVar (Float, T.Text)
-> IO ()
2018-07-03 14:19:27 +00:00
loadFork ws win glc nvg future progress = do
2019-02-14 21:31:00 +00:00
let stateSteps = 57
increment = 1 / stateSteps
SDL.glMakeCurrent win glc
2018-10-08 21:36:52 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading icon \"conntroller_blue\""
)))
2022-02-18 20:34:02 +00:00
mcontrblue <- createImage nvg (FileName "assets/icons/controller_blue.png") (S.singleton ImagePremultiplied)
2018-10-08 21:36:52 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
2019-02-11 15:11:27 +00:00
, "Loading icon \"controller_blue\""
2018-10-08 21:36:52 +00:00
)))
2022-02-18 20:34:02 +00:00
mcontrgreen <- createImage nvg (FileName "assets/icons/controller_green.png") (S.singleton ImagePremultiplied)
2018-10-12 12:26:06 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
2019-02-11 15:11:27 +00:00
, "Loading icon \"controller_green\""
)))
2022-02-18 20:34:02 +00:00
mkbdblue <- createImage nvg (FileName "assets/icons/keyboard_blue.png") (S.singleton ImagePremultiplied)
2019-02-11 15:11:27 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading icon \"keyboard_blue\""
)))
2022-02-18 20:34:02 +00:00
mkbdgreen <- createImage nvg (FileName "assets/icons/keyboard_green.png") (S.singleton ImagePremultiplied)
2019-02-11 15:11:27 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading icon \"keyboard_green\""
2018-10-12 12:26:06 +00:00
)))
2022-02-18 20:34:02 +00:00
marrow <- createImage nvg (FileName "assets/icons/arrow.png") (S.singleton ImagePremultiplied)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"wall_asc\""
)))
2022-02-18 20:34:02 +00:00
mwallasc <- createImage nvg (FileName "assets/walls/wall_asc.png") (S.singleton ImagePremultiplied)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"wall_desc\""
)))
2022-02-18 20:34:02 +00:00
mwalldesc <- createImage nvg (FileName "assets/walls/wall_desc.png") (S.singleton ImagePremultiplied)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"wall_corner_n\""
)))
2022-02-18 20:34:02 +00:00
mwallcornern <- createImage nvg (FileName "assets/walls/wall_corner_n.png") (S.singleton ImagePremultiplied)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"wall_corner_e\""
)))
2022-02-18 20:34:02 +00:00
mwallcornere <- createImage nvg (FileName "assets/walls/wall_corner_e.png") (S.singleton ImagePremultiplied)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"wall_corner_s\""
)))
2022-02-18 20:34:02 +00:00
mwallcorners <- createImage nvg (FileName "assets/walls/wall_corner_s.png") (S.singleton ImagePremultiplied)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"wall_corner_w\""
)))
2022-02-18 20:34:02 +00:00
mwallcornerw <- createImage nvg (FileName "assets/walls/wall_corner_w.png") (S.singleton ImagePremultiplied)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"wall_t_ne\""
)))
2022-02-18 20:34:02 +00:00
mwalltne <- createImage nvg (FileName "assets/walls/wall_t_ne.png") (S.singleton ImagePremultiplied)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"wall_t_se\""
)))
2022-02-18 20:34:02 +00:00
mwalltse <- createImage nvg (FileName "assets/walls/wall_t_se.png") (S.singleton ImagePremultiplied)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"wall_t_sw\""
)))
2022-02-18 20:34:02 +00:00
mwalltsw <- createImage nvg (FileName "assets/walls/wall_t_sw.png") (S.singleton ImagePremultiplied)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"wall_t_nw\""
)))
2022-02-18 20:34:02 +00:00
mwalltnw <- createImage nvg (FileName "assets/walls/wall_t_nw.png") (S.singleton ImagePremultiplied)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"wall_cross\""
)))
2022-02-18 20:34:02 +00:00
mwallcross <- createImage nvg (FileName "assets/walls/wall_cross.png") (S.singleton ImagePremultiplied)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"box1\""
)))
2022-02-18 20:34:02 +00:00
mmiscbox1 <- createImage nvg (FileName "assets/misc/box1.png") (S.singleton ImagePremultiplied)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"tableSW\""
2018-07-19 02:51:07 +00:00
)))
2022-02-18 20:34:02 +00:00
mtableSW <- createImage nvg (FileName "assets/table/tableSW.png") (S.singleton ImagePremultiplied)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"tableSE\""
2018-07-19 02:51:07 +00:00
)))
2022-02-18 20:34:02 +00:00
mtableSE <- createImage nvg (FileName "assets/table/tableSE.png") (S.singleton ImagePremultiplied)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"tableNE\""
2018-07-19 02:51:07 +00:00
)))
2022-02-18 20:34:02 +00:00
mtableNE <- createImage nvg (FileName "assets/table/tableNE.png") (S.singleton ImagePremultiplied)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"tableNW\""
2018-07-19 02:51:07 +00:00
)))
2022-02-18 20:34:02 +00:00
mtableNW <- createImage nvg (FileName "assets/table/tableNW.png") (S.singleton ImagePremultiplied)
2018-07-30 19:10:42 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"tableC1\""
)))
2022-02-18 20:34:02 +00:00
mtablec1 <- createImage nvg (FileName "assets/table/tablec1.png") (S.singleton ImagePremultiplied)
2018-07-30 19:10:42 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"tableC2\""
)))
2022-02-18 20:34:02 +00:00
mtablec2 <- createImage nvg (FileName "assets/table/tablec2.png") (S.singleton ImagePremultiplied)
2018-07-30 19:10:42 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"tableC3\""
)))
2022-02-18 20:34:02 +00:00
mtablec3 <- createImage nvg (FileName "assets/table/tablec3.png") (S.singleton ImagePremultiplied)
2018-07-30 19:10:42 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"tableC4\""
)))
2022-02-18 20:34:02 +00:00
mtablec4 <- createImage nvg (FileName "assets/table/tablec4.png") (S.singleton ImagePremultiplied)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"tableCorner\""
)))
2022-02-18 20:34:02 +00:00
mtableC <- createImage nvg (FileName "assets/table/tableCorner.png") (S.singleton ImagePremultiplied)
2018-07-30 13:34:45 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"flipchart\""
)))
2022-02-18 20:34:02 +00:00
mmiscFlipchart <- createImage nvg (FileName "assets/misc/flipchart.png") (S.singleton ImagePremultiplied)
2018-07-31 11:30:17 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"plant1\""
)))
2022-02-18 20:34:02 +00:00
mmiscPlant1 <- createImage nvg (FileName "assets/misc/plant1.png") (S.singleton ImagePremultiplied)
2018-07-31 20:59:25 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"plant2\""
)))
2022-02-18 20:34:02 +00:00
mmiscPlant2 <- createImage nvg (FileName "assets/misc/plant2.png") (S.singleton ImagePremultiplied)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
2018-08-07 12:04:49 +00:00
, "Loading asset \"watercooler\""
2018-07-19 02:51:07 +00:00
)))
2022-02-18 20:34:02 +00:00
mmiscWatercooler <- createImage nvg (FileName "assets/misc/watercooler.png") (S.singleton ImagePremultiplied)
2019-01-10 17:31:36 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"vending machine\""
)))
2022-02-18 20:34:02 +00:00
mmiscVending <- createImage nvg (FileName "assets/misc/vending.png") (S.singleton ImagePremultiplied)
2019-01-14 03:00:34 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
2019-01-15 04:28:09 +00:00
, "Loading asset \"Cabinet with Coffee machine SW\""
2019-01-14 03:00:34 +00:00
)))
2022-02-18 20:34:02 +00:00
mcabCoffeeSW <- createImage nvg (FileName "assets/cabinet/cabCoffeeSW.png") (S.singleton ImagePremultiplied)
2019-01-15 04:28:09 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"Cabinet with Coffee machine SE\""
)))
2022-02-18 20:34:02 +00:00
mcabCoffeeSE <- createImage nvg (FileName "assets/cabinet/cabCoffeeSE.png") (S.singleton ImagePremultiplied)
2019-01-15 04:28:09 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"Cabinet with sink SW\""
)))
2022-02-18 20:34:02 +00:00
mcabSinkSW <- createImage nvg (FileName "assets/cabinet/cabSinkSW.png") (S.singleton ImagePremultiplied)
2019-01-15 04:28:09 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"Cabinet with sink SE\""
)))
2022-02-18 20:34:02 +00:00
mcabSinkSE <- createImage nvg (FileName "assets/cabinet/cabSinkSE.png") (S.singleton ImagePremultiplied)
2019-01-15 04:28:09 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"Cabinet with stove SW\""
)))
2022-02-18 20:34:02 +00:00
mcabStoveSW <- createImage nvg (FileName "assets/cabinet/cabStoveSW.png") (S.singleton ImagePremultiplied)
2019-01-15 04:28:09 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"Cabinet with stove SE\""
)))
2022-02-18 20:34:02 +00:00
mcabStoveSE <- createImage nvg (FileName "assets/cabinet/cabStoveSE.png") (S.singleton ImagePremultiplied)
2019-01-14 03:00:34 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"cabinet SW\""
)))
2022-02-18 20:34:02 +00:00
mcabinetSW <- createImage nvg (FileName "assets/cabinet/cabinetSW.png") (S.singleton ImagePremultiplied)
2019-01-15 04:28:09 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"cabinet SE\""
)))
2022-02-18 20:34:02 +00:00
mcabinetSE <- createImage nvg (FileName "assets/cabinet/cabinetSE.png") (S.singleton ImagePremultiplied)
2019-01-15 04:28:09 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading asset \"cabinet corner\""
)))
2022-02-18 20:34:02 +00:00
mcabinetCorner <- createImage nvg (FileName "assets/cabinet/cabinetCorner.png") (S.singleton ImagePremultiplied)
2018-10-08 21:36:52 +00:00
let micons =
2019-02-11 23:11:53 +00:00
[ mcontrblue, mcontrgreen, mkbdblue, mkbdgreen, marrow
2018-10-08 21:36:52 +00:00
]
when (any isNothing micons) $ do
liftIO $logIO Error "Failed to load icon assets"
exitFailure
2018-08-07 12:04:49 +00:00
let mimgs =
[ mwallasc, mwalldesc
, mwallcornern, mwallcornere, mwallcorners, mwallcornerw
, mwalltne, mwalltse, mwalltsw, mwalltnw, mwallcross
, mmiscbox1
, mtableSW, mtableNW, mtableNE, mtableSE, mtableC
2018-08-07 12:04:49 +00:00
, mtablec1, mtablec2, mtablec3, mtablec4
, mmiscFlipchart
, mmiscPlant1, mmiscPlant2
2019-01-10 17:31:36 +00:00
, mmiscWatercooler, mmiscVending
2019-01-18 18:02:45 +00:00
, mcabCoffeeSW, mcabCoffeeSE
2019-01-15 04:28:09 +00:00
, mcabSinkSW, mcabSinkSE
, mcabStoveSW, mcabStoveSE
, mcabinetSW, mcabinetSE, mcabinetCorner
]
when (any isNothing mimgs) $ do
liftIO $logIO Error "Failed to load image assets"
exitFailure
2018-08-07 12:04:49 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading Animation \"intruder: standing\""
)))
-- playerImgs <- loadPlayerSprite "assets/intruder.png" 64 74 nvg
-- (zipWith (\a b -> (a, [b])) [0..] $ [ImgIntrE .. ImgIntrN] ++ [ImgIntrNE])
2018-07-21 04:43:26 +00:00
let imgs = zipWith (\a b -> (a, fromJust b))
[ ImgWallAsc
2019-01-15 04:28:09 +00:00
.. ImgCabinetCorner
2018-07-21 04:43:26 +00:00
]
mimgs
2018-10-08 21:36:52 +00:00
icons = zipWith (\a b -> (a, fromJust b))
[ IconContrBlue
2018-10-12 12:26:06 +00:00
.. IconArrow
2018-10-08 21:36:52 +00:00
]
micons
directions = [E .. N] ++ [NE]
standIds var = map (AnimId var "standing") directions
walkIds var = map (AnimId var "walking") directions
standConfigs = map
2018-07-21 04:43:26 +00:00
(\i -> AnimationConfig (0, i * 74) (64, 74) (64, 0) 1 0 APLoop)
2019-02-14 21:31:00 +00:00
[0 .. length (standIds AnimIntruder) - 1]
walkConfigs = map
2018-07-21 04:43:26 +00:00
(\i -> AnimationConfig (64, i * 74) (64, 74) (64, 0) 6 1.5 APLoop)
2019-02-14 21:31:00 +00:00
[0 .. length (walkIds AnimIntruder) - 1]
playerStanding <- loadAnimationSprites "assets/intruder.png" nvg
2019-02-14 21:31:00 +00:00
(zip (standIds AnimIntruder) standConfigs)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading Animation \"intruder: walking\""
)))
playerWalking <- loadAnimationSprites "assets/intruder.png" nvg
2019-02-14 21:31:00 +00:00
(zip (walkIds AnimIntruder) walkConfigs)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading Animation \"jdoem: standing\""
)))
jdoemStanding <- loadAnimationSprites "assets/jdoem.png" nvg
2019-02-14 21:31:00 +00:00
(zip (standIds AnimJDoeM) standConfigs)
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading Animation \"jdoem: walking\""
)))
jdoemWalking <- loadAnimationSprites "assets/jdoem.png" nvg
2019-02-14 21:31:00 +00:00
(zip (walkIds AnimJDoeM) walkConfigs)
2020-01-26 17:07:40 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading Animation \"policem: standing\""
)))
policemStanding <- loadAnimationSprites "assets/policem.png" nvg
(zip (standIds AnimPoliceM) standConfigs)
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading Animation \"policem: walking\""
)))
policemWalking <- loadAnimationSprites "assets/policem.png" nvg
(zip (walkIds AnimPoliceM) walkConfigs)
2018-07-21 04:43:26 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading Animation \"copier: stand\""
)))
copierStand <- loadAnimationSprites "assets/misc/copier.png" nvg $ zip
2019-02-14 21:31:00 +00:00
(map (\name -> AnimId AnimCopier name N) ["closed", "open"])
2018-07-21 04:43:26 +00:00
(map
(\i -> AnimationConfig (0, i * 74) (64, 74) (0, 0) 1 0 APLoop)
[0, 1]
)
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading Animation \"copier: copy\""
)))
2018-07-30 12:34:46 +00:00
copierCopy <- loadAnimationSprites "assets/misc/copier.png" nvg
2019-02-14 21:31:00 +00:00
[ ( AnimId AnimCopier "copy" N
, AnimationConfig (64, 0) (64, 74) (64, 0) 4 1 APLoop
2018-07-21 04:43:26 +00:00
)
]
2018-07-30 12:34:46 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
2019-02-09 14:19:16 +00:00
, "Loading Animation \"cornerComputer: off\""
2018-07-30 12:34:46 +00:00
)))
2019-02-09 14:19:16 +00:00
cornerComputerOff <- loadAnimationSprites "assets/misc/tableCornerComputer.png" nvg
2019-02-14 21:31:00 +00:00
[ ( AnimId AnimComputer "off" N
2018-07-30 12:34:46 +00:00
, AnimationConfig (0, 0) (64, 74) (64, 0) 2 2 APLoop
)
]
2018-08-12 04:28:31 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
2019-02-09 14:19:16 +00:00
, "Loading Animation \"cornerComputer: on\""
2018-08-12 04:28:31 +00:00
)))
2019-02-09 14:19:16 +00:00
cornerComputerOn <- loadAnimationSprites "assets/misc/tableCornerComputer.png" nvg
2019-02-14 21:31:00 +00:00
[ ( AnimId AnimComputer "on" N
2018-08-12 04:28:31 +00:00
, AnimationConfig (128, 0) (64, 74) (0, 0) 1 0 APLoop
)
]
2018-08-11 09:51:20 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
2019-02-09 14:19:16 +00:00
, "Loading Animation \"cornerComputer: hack\""
2018-08-11 09:51:20 +00:00
)))
2019-02-09 14:19:16 +00:00
cornerComputerHack <- loadAnimationSprites "assets/misc/tableCornerComputer.png" nvg
2019-02-14 21:31:00 +00:00
[ ( AnimId AnimComputer "hack" N
2018-08-11 09:51:20 +00:00
, AnimationConfig (0, 74) (64, 74) (64, 0) 4 2 APLoop
)
]
2019-02-09 14:19:16 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading Animation \"neComputer: off\""
)))
neComputerOff <- loadAnimationSprites "assets/misc/tableSWComputer.png" nvg
2019-02-14 21:31:00 +00:00
[ ( AnimId AnimComputer "off" NE
2019-02-09 14:19:16 +00:00
, AnimationConfig (0, 0) (64, 74) (64, 0) 2 2 APLoop
)
]
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading Animation \"neComputer: on\""
)))
neComputerOn <- loadAnimationSprites "assets/misc/tableSWComputer.png" nvg
2019-02-14 21:31:00 +00:00
[ ( AnimId AnimComputer "on" NE
2019-02-09 14:19:16 +00:00
, AnimationConfig (128, 0) (64, 74) (0, 0) 1 0 APLoop
)
]
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading Animation \"neComputer: hack\""
)))
neComputerHack <- loadAnimationSprites "assets/misc/tableSWComputer.png" nvg
2019-02-14 21:31:00 +00:00
[ ( AnimId AnimComputer "hack" NE
2019-02-09 14:19:16 +00:00
, AnimationConfig (0, 74) (64, 74) (64, 0) 4 2 APLoop
)
]
2019-02-09 21:39:42 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading Animation \"nwComputer: off\""
)))
nwComputerOff <- loadAnimationSprites "assets/misc/tableSEComputer.png" nvg
2019-02-14 21:31:00 +00:00
[ ( AnimId AnimComputer "off" NW
2019-02-09 21:39:42 +00:00
, AnimationConfig (0, 0) (64, 74) (64, 0) 2 2 APLoop
)
]
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading Animation \"nwComputer: on\""
)))
nwComputerOn <- loadAnimationSprites "assets/misc/tableSEComputer.png" nvg
2019-02-14 21:31:00 +00:00
[ ( AnimId AnimComputer "on" NW
2019-02-09 21:39:42 +00:00
, AnimationConfig (128, 0) (64, 74) (0, 0) 1 0 APLoop
)
]
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading Animation \"nwComputer: hack\""
)))
nwComputerHack <- loadAnimationSprites "assets/misc/tableSEComputer.png" nvg
2019-02-14 21:31:00 +00:00
[ ( AnimId AnimComputer "hack" NW
2019-02-09 21:39:42 +00:00
, AnimationConfig (0, 74) (64, 74) (64, 0) 4 2 APLoop
)
]
2018-07-31 20:59:25 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading Animation \"toilet: free\""
)))
toiletFree <- loadAnimationSprites "assets/misc/toilet.png" nvg
2019-02-14 21:31:00 +00:00
[ ( AnimId AnimToilet "free" N
2018-07-31 20:59:25 +00:00
, AnimationConfig (0, 0) (64, 74) (0, 0) 1 0 APLoop
)
]
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading Animation \"toilet: occupied\""
)))
toiletOccupied <- loadAnimationSprites "assets/misc/toilet.png" nvg
2019-02-14 21:31:00 +00:00
[ ( AnimId AnimToilet "occupied" N
2018-07-31 20:59:25 +00:00
, AnimationConfig (64, 0) (64, 74) (0, 0) 1 0 APLoop
)
]
2019-02-16 19:38:00 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading Animation \"neDoor0: open\""
)))
neDoor0open <- loadAnimationSprites "assets/doors/door_desc_0.png" nvg
[ ( AnimId AnimDoor0 "open" NE
2019-02-18 18:14:41 +00:00
, AnimationConfig (0, 0) (64, 74) (0, 74) 5 0.25 APOnce
2019-02-16 19:38:00 +00:00
)
]
2019-02-14 21:31:00 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading Animation \"neDoor0: shut\""
)))
2019-02-16 19:38:00 +00:00
neDoor0shut <- loadAnimationSprites "assets/doors/door_desc_0.png" nvg
2019-02-14 21:31:00 +00:00
[ ( AnimId AnimDoor0 "shut" NE
2019-02-18 18:14:41 +00:00
, AnimationConfig (0, 4*74) (64, 74) (0, -74) 5 0.25 APOnce
2019-02-16 19:38:00 +00:00
)
]
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading Animation \"nwDoor0: open\""
)))
nwDoor0open <- loadAnimationSprites "assets/doors/door_asc_0.png" nvg
[ ( AnimId AnimDoor0 "open" NW
2019-02-18 18:14:41 +00:00
, AnimationConfig (0, 0) (64, 74) (0, 74) 5 0.25 APOnce
2019-02-14 21:31:00 +00:00
)
]
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Loading Animation \"nwDoor0: shut\""
)))
2019-02-16 19:38:00 +00:00
nwDoor0shut <- loadAnimationSprites "assets/doors/door_asc_0.png" nvg
2019-02-14 21:31:00 +00:00
[ ( AnimId AnimDoor0 "shut" NW
2019-02-18 18:14:41 +00:00
, AnimationConfig (0, 4*74) (64, 74) (0, -74) 5 0.25 APOnce
2019-02-14 21:31:00 +00:00
)
]
2018-07-19 02:51:07 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
2020-05-05 08:26:16 +00:00
, "GL_Finish"
2018-07-19 02:51:07 +00:00
)))
finish
2020-05-05 08:26:16 +00:00
modifyMVar_ progress (return . (\(p, _) ->
( p + increment
, "Handing over"
)))
putMVar future
( ws
, LoadData
{ loadAssetImages = M.fromList imgs
, loadAssetAnims = M.fromList
2018-07-21 04:43:26 +00:00
( playerStanding ++
playerWalking ++
jdoemStanding ++
jdoemWalking ++
2020-01-26 17:07:40 +00:00
policemStanding ++
policemWalking ++
2018-07-21 04:43:26 +00:00
copierStand ++
2018-07-30 12:34:46 +00:00
copierCopy ++
2019-02-09 14:19:16 +00:00
cornerComputerOff ++
cornerComputerOn ++
cornerComputerHack ++
neComputerOff ++
neComputerOn ++
neComputerHack ++
2019-02-09 21:39:42 +00:00
nwComputerOff ++
nwComputerOn ++
nwComputerHack ++
2018-07-31 20:59:25 +00:00
toiletFree ++
2019-02-14 21:31:00 +00:00
toiletOccupied ++
neDoor0shut ++
2019-02-16 19:38:00 +00:00
neDoor0open ++
nwDoor0shut ++
nwDoor0open
2018-07-21 04:43:26 +00:00
)
2018-10-08 21:36:52 +00:00
, loadAssetIcons = M.fromList icons
}
)
2020-05-05 07:13:39 +00:00
drawLoad :: UserData -> Affection ()
drawLoad ud = do
progress <- liftIO $ readMVar (stateProgress ud)
liftIO $ do
2019-10-28 17:20:34 +00:00
logIO A.Verbose ("LoadProgress: " <> fromString (show progress))
drawLoadScreen ud progress
2020-05-05 07:13:39 +00:00
updateLoad :: UserData -> Double -> Affection ()
updateLoad ud _ = do
mwsld <- liftIO $ tryTakeMVar (stateMVar ud)
case mwsld of
Just (_, ld) -> do
liftIO $ logIO A.Debug "loaded assets, entering menu"
2020-05-05 07:13:39 +00:00
void $ liftIO $ swapMVar (assetImages ud) (loadAssetImages ld)
void $ liftIO $ swapMVar (assetAnimations ud) (loadAssetAnims ld)
void $ liftIO $ swapMVar (assetIcons ud) (loadAssetIcons ld)
void $ liftIO $ swapMVar (stateData ud) None
2018-10-08 21:36:52 +00:00
-- loadMap
2020-05-05 07:13:39 +00:00
loadMenu ud
2018-07-03 14:19:27 +00:00
Nothing ->
return ()