convert whip-attack sprites to new dotscape format

This commit is contained in:
2025-08-09 14:22:04 +01:00
parent 2ee4501c6a
commit 69992b5a8d
16 changed files with 17826 additions and 217 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,167 @@
structure StraightWhip =
struct
fun xToNdc (xOffset, xpos, scale, halfWidth) =
((xpos * scale + xOffset) - halfWidth) / halfWidth
fun yToNdc (yOffset, ypos, scale, halfHeight) =
~(((ypos * scale + yOffset) - halfHeight) / halfHeight)
fun lerp (xOffset: Real32.real, yOffset, scale, windowWidth, windowHeight) =
let
val halfWidth = windowWidth / 2.0
val halfHeight = windowHeight / 2.0
in
#[
xToNdc (xOffset, 0.000000000000000, scale, halfWidth),
yToNdc (yOffset, 2.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 1.000000000000000, scale, halfWidth),
yToNdc (yOffset, 2.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 0.000000000000000, scale, halfWidth),
yToNdc (yOffset, 1.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 0.000000000000000, scale, halfWidth),
yToNdc (yOffset, 1.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 1.000000000000000, scale, halfWidth),
yToNdc (yOffset, 2.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 1.000000000000000, scale, halfWidth),
yToNdc (yOffset, 1.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 1.000000000000000, scale, halfWidth),
yToNdc (yOffset, 1.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 23.000000000000000, scale, halfWidth),
yToNdc (yOffset, 1.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 1.000000000000000, scale, halfWidth),
yToNdc (yOffset, 0.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 1.000000000000000, scale, halfWidth),
yToNdc (yOffset, 0.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 23.000000000000000, scale, halfWidth),
yToNdc (yOffset, 1.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 23.000000000000000, scale, halfWidth),
yToNdc (yOffset, 0.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 1.000000000000000, scale, halfWidth),
yToNdc (yOffset, 2.000000000000000, scale, halfHeight),
0.937254901960784,
0.937254901960784,
0.937254901960784,
xToNdc (xOffset, 23.000000000000000, scale, halfWidth),
yToNdc (yOffset, 2.000000000000000, scale, halfHeight),
0.937254901960784,
0.937254901960784,
0.937254901960784,
xToNdc (xOffset, 1.000000000000000, scale, halfWidth),
yToNdc (yOffset, 1.000000000000000, scale, halfHeight),
0.937254901960784,
0.937254901960784,
0.937254901960784,
xToNdc (xOffset, 1.000000000000000, scale, halfWidth),
yToNdc (yOffset, 1.000000000000000, scale, halfHeight),
0.937254901960784,
0.937254901960784,
0.937254901960784,
xToNdc (xOffset, 23.000000000000000, scale, halfWidth),
yToNdc (yOffset, 2.000000000000000, scale, halfHeight),
0.937254901960784,
0.937254901960784,
0.937254901960784,
xToNdc (xOffset, 23.000000000000000, scale, halfWidth),
yToNdc (yOffset, 1.000000000000000, scale, halfHeight),
0.937254901960784,
0.937254901960784,
0.937254901960784,
xToNdc (xOffset, 1.000000000000000, scale, halfWidth),
yToNdc (yOffset, 3.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 23.000000000000000, scale, halfWidth),
yToNdc (yOffset, 3.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 1.000000000000000, scale, halfWidth),
yToNdc (yOffset, 2.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 1.000000000000000, scale, halfWidth),
yToNdc (yOffset, 2.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 23.000000000000000, scale, halfWidth),
yToNdc (yOffset, 3.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 23.000000000000000, scale, halfWidth),
yToNdc (yOffset, 2.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 23.000000000000000, scale, halfWidth),
yToNdc (yOffset, 2.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 24.000000000000000, scale, halfWidth),
yToNdc (yOffset, 2.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 23.000000000000000, scale, halfWidth),
yToNdc (yOffset, 1.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 23.000000000000000, scale, halfWidth),
yToNdc (yOffset, 1.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 24.000000000000000, scale, halfWidth),
yToNdc (yOffset, 2.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000,
xToNdc (xOffset, 24.000000000000000, scale, halfWidth),
yToNdc (yOffset, 1.000000000000000, scale, halfHeight),
0.000000000000000,
0.000000000000000,
0.000000000000000
]
end
end

View File

@@ -46,7 +46,7 @@ struct
FACING_RIGHT =>
PlayerStandingRight.lerp (rx, ry, dw, dh, ww, wh, 1.0, 1.0, 1.0)
| FACING_LEFT =>
PlayerStandingLeft.lerp (rx, ry, dw, dh, ww, wh, 1.0, 1.0, 1.0)
PlayerStandLeft.lerp (rx, ry, 4.0, ww, wh)
fun getWhenOnGround (player, rx, ry, dw, dh, ww, wh) =
case #xAxis player of
@@ -146,21 +146,43 @@ struct
fun helpGet
(player: player, rx, ry, drawWidth, drawHeight, windowWidth, windowHeight) =
case #attacked player of
NOT_ATTACKED =>
getWhenNotAttacked
(player, rx, ry, drawWidth, drawHeight, windowWidth, windowHeight)
| ATTACKED amt =>
getWhenAttacked
( player
, amt
, rx
, ry
, drawWidth
, drawHeight
, windowWidth
, windowHeight
)
case #mainAttack player of
MAIN_ATTACKING amt =>
let
val data = (rx, ry, 4.0, windowWidth, windowHeight)
in
if amt <= 3 then
PlayerAttackLeft1.lerp data
else if amt <= 7 then
PlayerAttackLeft2.lerp data
else if amt <= 9 then
PlayerAttackLeft3.lerp data
else
let
val playerVec = PlayerAttackLeft4.lerp data
val rx = rx - Real32.fromInt Constants.playerWidth + 25.0
val ry = ry + (Real32.fromInt Constants.playerHeight / 2.0) + 7.0
val whipVec = StraightWhip.lerp (rx, ry, 4.0, windowWidth, windowHeight)
in
Vector.concat [playerVec, whipVec]
end
end
| _ =>
case #attacked player of
NOT_ATTACKED =>
getWhenNotAttacked
(player, rx, ry, drawWidth, drawHeight, windowWidth, windowHeight)
| ATTACKED amt =>
getWhenAttacked
( player
, amt
, rx
, ry
, drawWidth
, drawHeight
, windowWidth
, windowHeight
)
fun get (player: player, width, height) =
let

View File

@@ -6,166 +6,89 @@ struct
(* right frames *)
val rf1 =
#[ {x = 64, y = ~15}
, {x = 64, y = 2}
, {x = 64, y = 18}
, {x = 49, y = 25}
]
#[ ]
val rf2 =
#[ {x = 66, y = ~15}
, {x = 65, y = 2}
, {x = 64, y = 18}
, {x = 49, y = 25}
]
#[ ]
val rf3 =
#[ {x = 67, y = ~15}
, {x = 66, y = 2}
, {x = 64, y = 18}
, {x = 49, y = 25}
]
#[ ]
val rf4 =
#[ {x = 70, y = ~15}
, {x = 68, y = 2}
, {x = 64, y = 18}
, {x = 49, y = 25}
]
#[ ]
val rf5 =
#[ {x = 73, y = ~15}
, {x = 70, y = 2}
, {x = 64, y = 18}
, {x = 49, y = 25}
#[
]
val rf6 =
#[ {x = 77, y = ~15}
, {x = 73, y = 2}
, {x = 64, y = 18}
, {x = 49, y = 25}
]
#[ ]
val rf7 =
#[ {x = 83, y = ~15}
, {x = 75, y = 2}
, {x = 64, y = 18}
, {x = 49, y = 25}
]
#[ ]
val rf8 =
#[ {x = 85, y = ~15}
, {x = 77, y = 2}
, {x = 64, y = 18}
, {x = 49, y = 25}
]
#[ ]
val rf9 =
#[ {x = 87, y = ~5}
, {x = 79, y = 6}
, {x = 64, y = 18}
, {x = 49, y = 25}
]
#[ ]
val rf10 =
#[ {x = 91, y = ~3}
, {x = 79, y = 3}
, {x = 64, y = 18}
, {x = 49, y = 25}
]
#[ ]
val rf11 =
#[ {x = 96, y = 5}
, {x = 80, y = 10}
, {x = 64, y = 15}
, {x = 49, y = 25}
]
#[ ]
val rf12 =
#[ {x = 96, y = 10}
, {x = 80, y = 15}
, {x = 64, y = 20}
, {x = 49, y = 25}
#[
]
val rf13 =
#[ {x = 96, y = 15}
, {x = 80, y = 20}
, {x = 64, y = 23}
, {x = 49, y = 25}
#[
]
val rf14 =
#[ {x = 112, y = 25}
, {x = 96, y = 28}
, {x = 80, y = 25}
, {x = 64, y = 22}
, {x = 49, y = 25}
#[
]
val rf15 =
#[ {x = 112, y = 25}
, {x = 96, y = 23}
, {x = 80, y = 25}
, {x = 64, y = 23}
, {x = 49, y = 25}
#[
]
val rf16 =
#[ {x = 112, y = 25}
, {x = 96, y = 28}
, {x = 80, y = 25}
, {x = 64, y = 25}
, {x = 49, y = 25}
#[
]
val rf17 =
#[ {x = 112, y = 31}
, {x = 96, y = 29}
, {x = 80, y = 27}
, {x = 64, y = 27}
, {x = 49, y = 25}
#[
]
val rf18 =
#[ {x = 96, y = 31}
, {x = 80, y = 29}
, {x = 64, y = 27}
, {x = 49, y = 25}
#[
]
val rf19 =
#[ {x = 99, y = 33}
, {x = 80, y = 29}
, {x = 64, y = 27}
, {x = 49, y = 25}
#[
]
val rf20 =
#[ {x = 80, y = 33}
, {x = 64, y = 29}
, {x = 49, y = 25}
#[
]
val rf21 =
#[ {x = 83, y = 35}
, {x = 64, y = 29}
, {x = 49, y = 25}
#[
]
val rf22 =
#[ {x = 64, y = 31}
, {x = 49, y = 25}
#[
]
val rf23 =
#[ {x = 67, y = 34}
, {x = 49, y = 25}
#[
]
val rf24 =
#[ {x = 49, y = 25} ]
#[]
val rightFrames = #[
rf1, rf2, rf3, rf4, rf5, rf6, rf7, rf8, rf9, rf10, rf11, rf12, rf13, rf14,
@@ -174,166 +97,98 @@ struct
(* left frames *)
val lf1 =
#[ {x = ~15, y = ~15}
, {x = ~15, y = 2}
, {x = ~15, y = 18}
, {x = ~1, y = 25}
]
#[ ]
val lf2 =
#[ {x = ~17, y = ~15}
, {x = ~16, y = 2}
, {x = ~15, y = 18}
, {x = ~1, y = 25}
#[
]
val lf3 =
#[ {x = ~18, y = ~15}
, {x = ~17, y = 2}
, {x = ~15, y = 18}
, {x = ~1, y = 25}
#[
]
val lf4 =
#[ {x = ~21, y = ~15}
, {x = ~19, y = 2}
, {x = ~15, y = 18}
, {x = ~1, y = 25}
#[
]
val lf5 =
#[ {x = ~24, y = ~15}
, {x = ~21, y = 2}
, {x = ~15, y = 18}
, {x = ~1, y = 25}
#[
]
val lf6 =
#[ {x = ~28, y = ~15}
, {x = ~24, y = 2}
, {x = ~15, y = 18}
, {x = ~1, y = 25}
#[
]
val lf7 =
#[ {x = ~34, y = ~15}
, {x = ~28, y = 2}
, {x = ~15, y = 18}
, {x = ~1, y = 25}
#[
]
val lf8 =
#[ {x = ~36, y = ~15}
, {x = ~30, y = 2}
, {x = ~15, y = 18}
, {x = ~1, y = 25}
#[
]
val lf9 =
#[ {x = ~38, y = ~5}
, {x = ~32, y = 6}
, {x = ~15, y = 18}
, {x = ~1, y = 25}
#[
]
val lf10 =
#[ {x = ~42, y = ~3}
, {x = ~33, y = 3}
, {x = ~15, y = 18}
, {x = ~1, y = 25}
#[
]
val lf11 =
#[ {x = ~47, y = 5}
, {x = ~34, y = 10}
, {x = ~15, y = 15}
, {x = ~1, y = 25}
#[
]
val lf12 =
#[ {x = ~47, y = 10}
, {x = ~34, y = 15}
, {x = ~15, y = 20}
, {x = ~1, y = 25}
#[
]
val lf13 =
#[ {x = ~47, y = 15}
, {x = ~32, y = 20}
, {x = ~15, y = 23}
, {x = ~1, y = 25}
#[
]
val lf14 =
#[ {x = ~63, y = 25}
, {x = ~47, y = 28}
, {x = ~32, y = 25}
, {x = ~15, y = 22}
, {x = ~1, y = 25}
#[
]
val lf15 =
#[ {x = ~63, y = 25}
, {x = ~47, y = 23}
, {x = ~32, y = 25}
, {x = ~15, y = 23}
, {x = ~1, y = 25}
#[
]
val lf16 =
#[ {x = ~63, y = 25}
, {x = ~47, y = 28}
, {x = ~32, y = 25}
, {x = ~15, y = 25}
, {x = ~1, y = 25}
#[
]
val lf17 =
#[ {x = ~63, y = 31}
, {x = ~47, y = 29}
, {x = ~32, y = 27}
, {x = ~15, y = 27}
, {x = ~1, y = 25}
#[
]
val lf18 =
#[ {x = ~47, y = 31}
, {x = ~32, y = 29}
, {x = ~15, y = 27}
, {x = ~1, y = 25}
#[
]
val lf19 =
#[ {x = ~50, y = 33}
, {x = ~32, y = 29}
, {x = ~15, y = 27}
, {x = ~1, y = 25}
#[
]
val lf20 =
#[ {x = ~32, y = 33}
, {x = ~15, y = 29}
, {x = ~1, y = 25}
#[
]
val lf21 =
#[ {x = ~35, y = 35}
, {x = ~15, y = 29}
, {x = ~1, y = 25}
#[
]
val lf22 =
#[ {x = ~15, y = 31}
, {x = ~1, y = 25}
#[
]
val lf23 =
#[ {x = ~18, y = 34}
, {x = ~1, y = 25}
#[
]
val lf24 =
#[ {x = ~1, y = 25} ]
#[]
val leftFrames = #[
lf1, lf2, lf3, lf4, lf5, lf6, lf7, lf8, lf9, lf10, lf11, lf12, lf13, lf14,