This commit is contained in:
2025-05-31 13:34:41 +01:00
parent b1c3cf5045
commit 3553ee5bbf
4 changed files with 121 additions and 119 deletions
+1 -1
View File
@@ -55,7 +55,7 @@ followImpulse cr w imp = case imp of
( hitCr cid'
, crMvAbsolute (10 *.* normalizeV (posFromID cid' -.- cpos)) $ cr & crMeleeCooldown .~ 20
)
RandomTurn a -> (randGen .~ snd (rr a), cr & crDir +~ (fst $ rr a))
RandomTurn a -> (randGen .~ snd (rr a), cr & crDir +~ fst (rr a))
MakeSound sid -> (soundStart (CrSound (_crID cr)) (_crPos cr) sid Nothing, cr)
DropItem -> undefined
ChangeStrategy strat -> crup $ cr & crActionPlan . apStrategy .~ strat
+78 -62
View File
@@ -29,6 +29,13 @@ fixedCoordPictures u =
<> displayFrameTicks u
<> aimDelaySweep (u ^. uvWorld)
<> drawMouseCursor u
<> ( toTopLeft cfig . translate (1.3 * halfWidth cfig) 0
. drawList
. take 50
. drop (u ^. uvDebugMessageOffset)
. map text
$ foldMap (`_debugMessage` u) (_uvDebug u) -- other debug pics in extraPics
)
where
cfig = _uvConfig u
hw = halfWidth cfig
@@ -80,30 +87,30 @@ mouseCursorType :: Universe -> Picture
mouseCursorType u = case u ^. uvWorld . input . mouseContext of
NoMouseContext -> drawEmptySet 5
MouseAiming -> rotate a (drawPlus 5)
MouseMenuClick {} -> drawMenuClick 5
MouseMenuClick{} -> drawMenuClick 5
MouseMenuCursor -> drawMenuCursor 5
MouseInGame -> drawPlus 5
OverInvDrag 0 (Just (3,_)) _ _ -> drawDragDrop 5
OverInvDrag 0 (Just (3, _)) _ _ -> drawDragDrop 5
OverInvDrag 0 Nothing _ _ -> drawDragDrop 5
OverInvDrag 0 (Just (0,_)) _ _ -> drawDrag 5
OverInvDrag 0 (Just (0, _)) _ _ -> drawDrag 5
OverInvDrag 0 _ _ _ -> drawEmptySet 5
OverInvDrag 3 (Just (3,_)) _ _ -> drawDrag 5
OverInvDrag 3 (Just (0,_)) _ _ -> drawDragPickup 5
OverInvDrag 3 (Just (1,_)) _ _ -> drawDragPickup 5
OverInvDrag 3 (Just (3, _)) _ _ -> drawDrag 5
OverInvDrag 3 (Just (0, _)) _ _ -> drawDragPickup 5
OverInvDrag 3 (Just (1, _)) _ _ -> drawDragPickup 5
OverInvDrag 3 Nothing _ _ -> drawDragPickup 5
OverInvDrag 3 _ _ _ -> drawEmptySet 5
OverInvDrag {} -> drawEmptySet 5
OverInvDragSelect {} -> drawDragSelect 5
OverInvSelect (-1,_) | selsec == Just (-1) -> drawJumpDown 5
OverInvSelect (2,_) | selsec == Just 2-> drawJumpDown 5
OverInvSelect {} -> drawSelect 5
OverCombFiltInv {} -> drawCombFilter 5
OverCombSelect {} -> drawSelect 5
OverCombFilter {} -> drawJumpDown 5
OverCombCombine {} -> drawGapPlus 5
OverCombEscape -> rotate (pi/4) $ drawPlus 5
OverTerminalReturn {} -> drawReturn 5
OverTerminalEscape -> rotate (pi/4) $ drawPlus 5
OverInvDrag{} -> drawEmptySet 5
OverInvDragSelect{} -> drawDragSelect 5
OverInvSelect (-1, _) | selsec == Just (-1) -> drawJumpDown 5
OverInvSelect (2, _) | selsec == Just 2 -> drawJumpDown 5
OverInvSelect{} -> drawSelect 5
OverCombFiltInv{} -> drawCombFilter 5
OverCombSelect{} -> drawSelect 5
OverCombFilter{} -> drawJumpDown 5
OverCombCombine{} -> drawGapPlus 5
OverCombEscape -> rotate (pi / 4) $ drawPlus 5
OverTerminalReturn{} -> drawReturn 5
OverTerminalEscape -> rotate (pi / 4) $ drawPlus 5
where
w = u ^. uvWorld
selsec = u ^? uvWorld . hud . hudElement . diSelection . _Just . _1
@@ -114,32 +121,36 @@ mouseCursorType u = case u ^. uvWorld . input . mouseContext of
- w ^. wCam . camRot
drawEmptySet :: Float -> Picture
drawEmptySet x = fold
[line [V2 x x,V2 (-x) (-x)]
,circle x
]
drawEmptySet x =
fold
[ line [V2 x x, V2 (- x) (- x)]
, circle x
]
drawReturn :: Float -> Picture
drawReturn x = fold
[line [V2 0 0, V2 y y]
,line [V2 0 0, V2 y (-y)]
,line [V2 0 0, V2 (2*y) 0]
,line [V2 (2*y) 0, V2 (2*y) (2*x)]
]
drawReturn x =
fold
[ line [V2 0 0, V2 y y]
, line [V2 0 0, V2 y (- y)]
, line [V2 0 0, V2 (2 * y) 0]
, line [V2 (2 * y) 0, V2 (2 * y) (2 * x)]
]
where
y = 0.7 * x
--drawReturn = scale 0.1 0.1 . translate (-50) (-100) $ text [toEnum 153]
drawPlus :: Float -> Picture
drawPlus x = fold [line [V2 (- x) 0, V2 x 0], line [V2 0 (- x), V2 0 x]]
drawMenuClick :: Float -> Picture
drawMenuClick z = fold
[ line [V2 y 0, V2 x 0]
, line [V2 ny 0, V2 nx 0]
, line [V2 0 ny , V2 0 nx]
, line [V2 0 y , V2 0 x]
]
drawMenuClick z =
fold
[ line [V2 y 0, V2 x 0]
, line [V2 ny 0, V2 nx 0]
, line [V2 0 ny, V2 0 nx]
, line [V2 0 y, V2 0 x]
]
where
x = 0.5 * z
y = x + z
@@ -147,12 +158,13 @@ drawMenuClick z = fold
nx = - x
drawMenuCursor :: Float -> Picture
drawMenuCursor z = fold
[ line [V2 y 0, V2 x 0]
, line [V2 ny 0, V2 nx 0]
, line [V2 0 ny , V2 0 nx]
, line [V2 0 y , V2 0 x]
]
drawMenuCursor z =
fold
[ line [V2 y 0, V2 x 0]
, line [V2 ny 0, V2 nx 0]
, line [V2 0 ny, V2 0 nx]
, line [V2 0 y, V2 0 x]
]
where
x = z
y = x + z
@@ -160,37 +172,39 @@ drawMenuCursor z = fold
nx = - x
drawJumpDown :: Float -> Picture
drawJumpDown x = rotate (0.25*pi)
$ fold [line [V2 0 0, V2 x 0], line [V2 0 0, V2 0 x]]
drawJumpDown x =
rotate (0.25 * pi) $
fold [line [V2 0 0, V2 x 0], line [V2 0 0, V2 0 x]]
drawDragSelect :: Float -> Picture
drawDragSelect x = polygonWire $ rectWH (0.5 * x) x
drawDrag :: Float -> Picture
drawDrag x = line [V2 0 y,V2 0 z]
<> line [V2 0 (-y),V2 0 (-z)]
<> line [V2 (-w) (z-w), V2 0 z, V2 w (z-w)]
<> line [V2 (-w) (w-z), V2 0 (-z), V2 w (w-z)]
<> drawSelect 5
drawDrag x =
line [V2 0 y, V2 0 z]
<> line [V2 0 (- y), V2 0 (- z)]
<> line [V2 (- w) (z - w), V2 0 z, V2 w (z - w)]
<> line [V2 (- w) (w - z), V2 0 (- z), V2 w (w - z)]
<> drawSelect 5
where
z = 1.5 * x
y = 0.5 * x
w = 0.3 * x
drawDragDrop :: Float -> Picture
drawDragDrop x =
line (fmap (+V2 z (-x)) [V2 (-x) x,V2 0 x,V2 0 (-x)])
<> line (fmap (+V2 z (-x)) [V2 (-y) (y-x), V2 0 (-x), V2 y (y-x)])
<> drawSelect 5
drawDragDrop x =
line (fmap (+ V2 z (- x)) [V2 (- x) x, V2 0 x, V2 0 (- x)])
<> line (fmap (+ V2 z (- x)) [V2 (- y) (y - x), V2 0 (- x), V2 y (y - x)])
<> drawSelect 5
where
z = 1.5 * x
y = 0.7 * x
drawDragPickup :: Float -> Picture
drawDragPickup x =
line [V2 (-0.5 *x) 0, V2 (-z) 0, V2 (-z) z]
<> line [V2 (-(z+y)) (z-y), V2 (-z) z, V2 (y-z) (z-y)]
<> drawSelect 5
drawDragPickup x =
line [V2 (-0.5 * x) 0, V2 (- z) 0, V2 (- z) z]
<> line [V2 (- (z + y)) (z - y), V2 (- z) z, V2 (y - z) (z - y)]
<> drawSelect 5
where
z = 1.5 * x
y = 0.7 * x
@@ -207,18 +221,20 @@ drawDragPickup x =
drawSelect :: Float -> Picture
drawSelect x = polygonWire $ rectWH (0.5 * x) (0.5 * x)
-- line [V2 (-x) 0, V2 0 0]
--drawSelect x = line
--drawSelect x = line
-- [ V2 x x
-- , V2 0 x
-- , V2 0 (-x)
-- , V2 x (-x)
-- ] <>
-- ] <>
-- line [V2 (-x) 0, V2 0 0]
drawCombFilter :: Float -> Picture
drawCombFilter x = rotate (0.25*pi)
$ fold [line [V2 (- x) 0, V2 x 0], line [V2 0 (- x), V2 0 0]]
drawCombFilter x =
rotate (0.25 * pi) $
fold [line [V2 (- x) 0, V2 x 0], line [V2 0 (- x), V2 0 0]]
--drawDoublePlus :: Float -> Picture
--drawDoublePlus x = fold [line [V2 (- (1.5*x)) 0, V2 (1.5*x) 0]
@@ -238,9 +254,9 @@ drawGapPlus x =
aimDelaySweep :: World -> Picture
aimDelaySweep w = fold $ do
cr <- w ^? cWorld . lWorld . creatures . ix 0
-- aimstatus <- cr ^? crStance . posture
-- guard (aimstatus == Aiming)
Aiming {} <- cr ^? crStance . posture
-- aimstatus <- cr ^? crStance . posture
-- guard (aimstatus == Aiming)
Aiming{} <- cr ^? crStance . posture
return $ drawAimSweep cr w
drawAimSweep :: Creature -> World -> Picture
+1 -13
View File
@@ -5,13 +5,11 @@ module Dodge.Render.ShapePicture (
import Control.Lens
import Data.Foldable
import Data.Strict.Tuple
import Dodge.Base
import Dodge.Creature.Picture
import Dodge.Data.Universe
import Dodge.Debug.Picture
import Dodge.Draw
import Dodge.RadarBlip
import Dodge.Render.List
import Dodge.Render.Picture
import Geometry
import qualified IntMapHelp as IM
@@ -99,16 +97,7 @@ extraPics cfig u =
<> foldMap ppDraw (_pressPlates lw)
<> viewClipBounds cfig w
<> debugDraw cfig w
<> foldMap (`_debugPic` u) (_uvDebug u)
<> setLayer
FixedCoordLayer
( toTopLeft cfig . translate (1.3 * halfWidth cfig) 0
. drawList
. take 50
. drop (u ^. uvDebugMessageOffset)
. map text
$ foldMap (`_debugMessage` u) (_uvDebug u)
)
<> foldMap (`_debugPic` u) (_uvDebug u) -- debug messages are in fixed coord pics
where
w = u ^. uvWorld
lw = w ^. cWorld . lWorld
@@ -132,4 +121,3 @@ mcSPic :: LWorld -> Machine -> SPic
mcSPic lw mc =
uncurryV translateSPxy (_mcPos mc) $
rotateSP (_mcDir mc) (drawMachine lw mc)