Refactor crPos to be a V3

This commit is contained in:
2025-10-10 13:47:31 +01:00
parent 98ece551c7
commit 49fb982877
58 changed files with 375 additions and 307 deletions
+6 -5
View File
@@ -2,6 +2,7 @@
module Dodge.Machine.Update (updateMachine) where
import Linear
import Control.Monad
import Data.List (partition)
import Data.Maybe
@@ -61,7 +62,7 @@ updateTurret rotSpeed mc w =
| elecDam < 10 = updateFiringStatus . doTurn
| otherwise = id
mcid = _mcID mc
ypos = _crPos $ you w
ypos = you w ^. crPos . _xy
mcpos = _mcPos mc
seesYou = hasLOSIndirect mcpos ypos w
(elecDams, dams) = partition isElectrical $ _mcDamage mc
@@ -122,7 +123,7 @@ mcPlaySound mc w = case _mcType mc of
w
_ -> w
where
d = max 0 (dist (_crPos $ you w) (_mcPos mc) - 100)
d = max 0 (dist ( you w ^. crPos . _xy) (_mcPos mc) - 100)
mid = _mcID mc
mcApplyDamage :: [Damage] -> Machine -> World -> World
@@ -156,9 +157,9 @@ mcNoItemsTest mc ps w
falsetog = mc ^? mcType . _McProxSensor . proxToggle . _Just == Just False
notog =
null (mc ^? mcType . _McProxSensor . proxToggle . _Just)
&& pointInPoly (cr ^. crPos) qs
&& pointInPoly (cr ^. crPos . _xy) qs
t =
((cr ^. crInv == mempty) || not (pointInPoly (cr ^. crPos) qs))
((cr ^. crInv == mempty) || not (pointInPoly (cr ^. crPos . _xy) qs))
&& not (any ((`pointInPoly` qs) . _flItPos) (w ^. cWorld . lWorld . floorItems))
cr = w ^?! cWorld . lWorld . creatures . ix 0
mcsenslens = cWorld . lWorld . machines . ix (_mcID mc) . mcType . _McProxSensor
@@ -170,7 +171,7 @@ mcNoItemsTest mc ps w
mcProximitySensorUpdate ::
Machine -> ProximitySensor -> ProximityRequirement -> World -> World
mcProximitySensorUpdate mc sens pr w
| truetog || dist (_crPos ycr) (_mcPos mc) > 40 = w
| truetog || dist (ycr ^. crPos . _xy) (_mcPos mc) > 40 = w
| mcProxTest w pr =
w
& mcsenslens . proxToggle ?~ True