First implementation of doors that lerp position/float pairs
This commit is contained in:
+7
-7
@@ -72,15 +72,15 @@ doorLerp dr w = case newlerp of
|
||||
wlposs x = (dr ^. drFootPrint) & each . each %~ shiftPointBy (p2a x)
|
||||
clerp = dr ^. drLerp
|
||||
newlerp
|
||||
| toOpen && clerp < 1 = Just . min 1 $ clerp + 0.1
|
||||
| clerp > 0 = Just . max 1 $ clerp - 0.1
|
||||
| toOpen && clerp < 1 = Just . min 1 $ clerp + speed
|
||||
| clerp > 0 && not toOpen = Just . max 0 $ clerp - speed
|
||||
| otherwise = Nothing
|
||||
toOpen = doWdBl (_drTrigger dr) w
|
||||
mvDir
|
||||
| toOpen && _drStatus dr == DoorOpen = Nothing -- Not sure why necessary
|
||||
| toOpen && dist dpos dop > 0.5 = Just $ vecBetweenSpeed speed dpos dop
|
||||
| dist dpos dcp > 0.5 = Just $ vecBetweenSpeed speed dpos dcp
|
||||
| otherwise = Nothing
|
||||
-- mvDir
|
||||
-- | toOpen && _drStatus dr == DoorOpen = Nothing -- Not sure why necessary
|
||||
-- | toOpen && dist dpos dop > 0.5 = Just $ vecBetweenSpeed speed dpos dop
|
||||
-- | dist dpos dcp > 0.5 = Just $ vecBetweenSpeed speed dpos dcp
|
||||
-- | otherwise = Nothing
|
||||
speed = _drSpeed dr
|
||||
drid = _drID dr
|
||||
moveUpdate = playSound . setStatus
|
||||
|
||||
@@ -4,6 +4,7 @@ module Dodge.Placement.PlaceSpot.TriggerDoor (
|
||||
updateDoorEdges,
|
||||
) where
|
||||
|
||||
import Linear
|
||||
import Dodge.Data.GenWorld
|
||||
import qualified Data.IntSet as IS
|
||||
import Data.List
|
||||
@@ -91,11 +92,17 @@ plSlideDoor dr wl eo shiftOffset a b gw =
|
||||
{ _drID = drid
|
||||
, _drWallIDs = IS.fromList wlids
|
||||
, _drStatus = DoorClosed
|
||||
, _drMech = DoorMechanism
|
||||
-- , _drMech = DoorMechanism
|
||||
, _drMech = DoorLerp
|
||||
, _drPos = (a, b)
|
||||
, _drOpenPos = (shiftLeft a, shiftLeft b)
|
||||
, _drClosePos = (a, b)
|
||||
, _drZeroPos = (a, 0)
|
||||
, _drOnePos = (shiftLeft a, 0)
|
||||
, _drLerp = 0
|
||||
, _drFootPrint = IM.fromList $ zip wlids $ rectanglePairs 9 0 (b-a)
|
||||
, _drObstacleType = eo
|
||||
, _drSpeed = 1 / distance a (shiftLeft a)
|
||||
}
|
||||
addDoorWalls w' = foldl' (addDoorWall eo drid wl) w' $ zip wlids pairs
|
||||
pairs = rectanglePairs 9 a b
|
||||
|
||||
Reference in New Issue
Block a user