more wörk and no pläy

This commit is contained in:
nek0 2019-02-14 00:20:26 +01:00
parent a3d7ba4dd7
commit 3d4e654e66
2 changed files with 27 additions and 18 deletions

View file

@ -117,8 +117,11 @@ updateNPCs imgmat ws rrp dt = do
stat <- query anim
as <- query npcActionState
targetRPs <- case as of
ASWork -> (: filter (\p -> pointType p == Copier) rp)
<$> query npcWorkplace
ASWork ->
let fltrd = filter (\p -> pointType p == Copier) rp
in
((fltrd ++) . replicate (5 * length fltrd)) <$>
query npcWorkplace
ASToilet -> do
let seekRP = filter (\p -> pointType p == Toilet) rp
if null seekRP
@ -225,8 +228,8 @@ updateStats dt =
stat
{ statAttention =
if as == ASWork
then max 0 (conc - 0.2 * dt)
else min 1 (conc + 0.075 * dt)
then max 0 (conc - 0.05 * dt)
else min 1 (conc + 0.1 * dt)
, statBladder =
if food > 0 || drin > 0
then min 1 (blad + 0.3 * dt)
@ -239,7 +242,7 @@ updateStats dt =
doCompare ostat nstat as
| statAttention nstat == 0 = ASRandWalk
| statThirst nstat == 0 = ASDrink
| statHunger nstat == 0 = ASDrink -- TODO: Let them eat
| statHunger nstat == 0 = ASEat -- TODO: Let them eat
| statAttention nstat > statAttention ostat &&
statAttention nstat > 0.75 = ASWork
| statBladder nstat > 0.9 = ASToilet

View file

@ -30,7 +30,7 @@ data Cluster
| ClusterConferenceTable
| ClusterPlant1
| ClusterPlant2
| ClusterToilet
| ClusterToilets
| ClusterWatercooler
| ClusterVending
| ClusterCabinets
@ -154,10 +154,12 @@ clusterMatWithRPs ClusterPlant2 dim _ =
[ [ Just ImgMiscPlant2 ] ]
, clusterPoints ClusterPlant2 dim
)
clusterMatWithRPs ClusterToilet dim _ =
( M.fromLists
[ [ Just ImgEmpty, Just ImgEmptyNoWalk] ]
, clusterPoints ClusterToilet dim
clusterMatWithRPs ClusterToilets dim@(_, h) _ =
let mh = min 3 h
in
( M.fromLists (replicate mh
([ Just ImgEmpty, Just ImgEmptyNoWalk]))
, clusterPoints ClusterToilets dim
)
clusterMatWithRPs ClusterWatercooler dim _ =
( M.fromLists
@ -221,7 +223,7 @@ clusterMatWithRPs ClusterCabinets (h, w) g =
(gf1, Just ImgCabinetSW : lsi, lsr)
)
(g1, [], [])
(reverse [1 .. rh - 1])
(reverse [2 .. rh])
outmat =
(M.fromLists [ses] M.<|> M.fromLists [[ Just ImgCabinetCorner ]])
M.<->
@ -244,7 +246,7 @@ clusterRoom ClusterFlipchart = [Offi]
clusterRoom ClusterConferenceTable = [Offi]
clusterRoom ClusterPlant1 = [Offi]
clusterRoom ClusterPlant2 = [Offi]
clusterRoom ClusterToilet = [Toil]
clusterRoom ClusterToilets = [Toil]
clusterRoom ClusterWatercooler = [Kitc, Offi]
clusterRoom ClusterVending = [Kitc]
clusterRoom ClusterCabinets = [Kitc]
@ -270,16 +272,20 @@ clusterPoints ClusterFlipchart _ =
[ ReachPoint Table (V2 2 1) NW 0
]
clusterPoints ClusterConferenceTable (h, w) =
let mw = max 4 w
mh = max 4 h
let iw = max 4 w
ih = max 4 h
mw = min 7 iw
mh = min 7 ih
in
[ ReachPoint Table (V2 1 c) SE 0 | c <- [2..mw-1] ] ++
[ ReachPoint Table (V2 r 1) NE 0 | r <- [2..mh-1] ] ++
[ ReachPoint Table (V2 r mw) SW 0 | r <- [2..mh-1] ] ++
[ ReachPoint Table (V2 mh c) NW 0 | c <- [2..mw-1] ]
clusterPoints ClusterToilet _ =
[ ReachPoint Toilet (V2 1 1) NE 0
]
clusterPoints ClusterToilets (_, h) =
let mh = min 3 h
in
map (\r -> ReachPoint Toilet (V2 r 1) NE 0)
[1 .. mh]
clusterPoints ClusterWatercooler _ =
[ ReachPoint Drink (V2 2 1) NW 0
]