From b426ddbdd14daac9c1f58cf550acb35660e486b8 Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Tue, 18 Feb 2025 12:48:55 +0000 Subject: [PATCH] adjustment to player sprite, allowing the inside of the sprite to be a chosen colour --- fcore/player/player-sprite.sml | 198 +++++++++++++++++++-------------- fcore/player/player.sml | 40 ++----- 2 files changed, 126 insertions(+), 112 deletions(-) diff --git a/fcore/player/player-sprite.sml b/fcore/player/player-sprite.sml index 6969a37..f6d3456 100644 --- a/fcore/player/player-sprite.sml +++ b/fcore/player/player-sprite.sml @@ -1,6 +1,6 @@ structure PlayerSprite = struct - fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight) : Real32.real vector = + fun lerp (startX, startY, drawWidth, drawHeight, windowWidth, windowHeight, r, g, b) : Real32.real vector = let val endY = windowHeight - startY val startY = windowHeight - (startY + drawHeight) @@ -8,23 +8,53 @@ struct val windowHeight = windowHeight / 2.0 val windowWidth = windowWidth / 2.0 in - #[ (((startX * (1.0 - 0.3125)) + (endX * 0.3125)) / windowWidth) - 1.0, + #[ (((startX * (1.0 - 0.9375)) + (endX * 0.9375)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.950000047684)) + (endY * 0.950000047684)) / windowHeight) - 1.0, +r, +g, +b, + (((startX * (1.0 - 0.9375)) + (endX * 0.9375)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.25)) + (endY * 0.25)) / windowHeight) - 1.0, +r, +g, +b, + (((startX * (1.0 - 0.0625)) + (endX * 0.0625)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.25)) + (endY * 0.25)) / windowHeight) - 1.0, +r, +g, +b, + (((startX * (1.0 - 0.0625)) + (endX * 0.0625)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.25)) + (endY * 0.25)) / windowHeight) - 1.0, +r, +g, +b, + (((startX * (1.0 - 0.0625)) + (endX * 0.0625)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.950000047684)) + (endY * 0.950000047684)) / windowHeight) - 1.0, +r, +g, +b, + (((startX * (1.0 - 0.9375)) + (endX * 0.9375)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.950000047684)) + (endY * 0.950000047684)) / windowHeight) - 1.0, +r, +g, +b, + (((startX * (1.0 - 0.3125)) + (endX * 0.3125)) / windowWidth) - 1.0, (((startY * (1.0 - 0.0)) + (endY * 0.0)) / windowHeight) - 1.0, 0.0, 0.0, 0.0, (((startX * (1.0 - 0.3125)) + (endX * 0.3125)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.1875)) + (endY * 0.1875)) / windowHeight) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, 0.0, 0.0, 0.0, (((startX * (1.0 - 0.25)) + (endX * 0.25)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.1875)) + (endY * 0.1875)) / windowHeight) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, 0.0, 0.0, 0.0, (((startX * (1.0 - 0.25)) + (endX * 0.25)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.1875)) + (endY * 0.1875)) / windowHeight) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, 0.0, 0.0, 0.0, @@ -44,17 +74,17 @@ struct 0.0, 0.0, (((startX * (1.0 - 0.6875)) + (endX * 0.6875)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.1875)) + (endY * 0.1875)) / windowHeight) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, 0.0, 0.0, 0.0, (((startX * (1.0 - 0.75)) + (endX * 0.75)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.1875)) + (endY * 0.1875)) / windowHeight) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, 0.0, 0.0, 0.0, (((startX * (1.0 - 0.75)) + (endX * 0.75)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.1875)) + (endY * 0.1875)) / windowHeight) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, 0.0, 0.0, 0.0, @@ -67,81 +97,31 @@ struct (((startY * (1.0 - 0.0)) + (endY * 0.0)) / windowHeight) - 1.0, 0.0, 0.0, -0.0, - (((startX * (1.0 - 0.0625)) + (endX * 0.0625)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.25)) + (endY * 0.25)) / windowHeight) - 1.0, -0.0, -0.0, -0.0, - (((startX * (1.0 - 0.9375)) + (endX * 0.9375)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.25)) + (endY * 0.25)) / windowHeight) - 1.0, -0.0, -0.0, -0.0, - (((startX * (1.0 - 0.9375)) + (endX * 0.9375)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.1875)) + (endY * 0.1875)) / windowHeight) - 1.0, -0.0, -0.0, -0.0, - (((startX * (1.0 - 0.9375)) + (endX * 0.9375)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.1875)) + (endY * 0.1875)) / windowHeight) - 1.0, -0.0, -0.0, -0.0, - (((startX * (1.0 - 0.0625)) + (endX * 0.0625)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.1875)) + (endY * 0.1875)) / windowHeight) - 1.0, -0.0, -0.0, -0.0, - (((startX * (1.0 - 0.0625)) + (endX * 0.0625)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.25)) + (endY * 0.25)) / windowHeight) - 1.0, -0.0, -0.0, -0.0, - (((startX * (1.0 - 0.9375)) + (endX * 0.9375)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.9375)) + (endY * 0.9375)) / windowHeight) - 1.0, -0.0, -0.0, -0.0, - (((startX * (1.0 - 1.0)) + (endX * 1.0)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.1875)) + (endY * 0.1875)) / windowHeight) - 1.0, -0.0, -0.0, -0.0, - (((startX * (1.0 - 1.0)) + (endX * 1.0)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.9375)) + (endY * 0.9375)) / windowHeight) - 1.0, -0.0, -0.0, -0.0, - (((startX * (1.0 - 0.9375)) + (endX * 0.9375)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.1875)) + (endY * 0.1875)) / windowHeight) - 1.0, -0.0, -0.0, -0.0, - (((startX * (1.0 - 1.0)) + (endX * 1.0)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.1875)) + (endY * 0.1875)) / windowHeight) - 1.0, -0.0, -0.0, -0.0, - (((startX * (1.0 - 0.9375)) + (endX * 0.9375)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.9375)) + (endY * 0.9375)) / windowHeight) - 1.0, -0.0, -0.0, -0.0, - (((startX * (1.0 - 1.0)) + (endX * 1.0)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.9375)) + (endY * 0.9375)) / windowHeight) - 1.0, -0.0, -0.0, -0.0, - (((startX * (1.0 - 0.0625)) + (endX * 0.0625)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.9375)) + (endY * 0.9375)) / windowHeight) - 1.0, -0.0, -0.0, 0.0, (((startX * (1.0 - 0.0625)) + (endX * 0.0625)) / windowWidth) - 1.0, (((startY * (1.0 - 1.0)) + (endY * 1.0)) / windowHeight) - 1.0, 0.0, 0.0, +0.0, + (((startX * (1.0 - 0.9375)) + (endX * 0.9375)) / windowWidth) - 1.0, + (((startY * (1.0 - 1.0)) + (endY * 1.0)) / windowHeight) - 1.0, +0.0, +0.0, +0.0, + (((startX * (1.0 - 0.9375)) + (endX * 0.9375)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.950000047684)) + (endY * 0.950000047684)) / windowHeight) - 1.0, +0.0, +0.0, +0.0, + (((startX * (1.0 - 0.9375)) + (endX * 0.9375)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.950000047684)) + (endY * 0.950000047684)) / windowHeight) - 1.0, +0.0, +0.0, +0.0, + (((startX * (1.0 - 0.0625)) + (endX * 0.0625)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.950000047684)) + (endY * 0.950000047684)) / windowHeight) - 1.0, +0.0, +0.0, 0.0, (((startX * (1.0 - 0.0625)) + (endX * 0.0625)) / windowWidth) - 1.0, (((startY * (1.0 - 1.0)) + (endY * 1.0)) / windowHeight) - 1.0, @@ -154,12 +134,57 @@ struct 0.0, 0.0, (((startX * (1.0 - 1.0)) + (endX * 1.0)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.9375)) + (endY * 0.9375)) / windowHeight) - 1.0, + (((startY * (1.0 - 0.25)) + (endY * 0.25)) / windowHeight) - 1.0, 0.0, 0.0, 0.0, - (((startX * (1.0 - 0.0)) + (endX * 0.0)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.1875)) + (endY * 0.1875)) / windowHeight) - 1.0, + (((startX * (1.0 - 0.9375)) + (endX * 0.9375)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.25)) + (endY * 0.25)) / windowHeight) - 1.0, +0.0, +0.0, +0.0, + (((startX * (1.0 - 0.9375)) + (endX * 0.9375)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.25)) + (endY * 0.25)) / windowHeight) - 1.0, +0.0, +0.0, +0.0, + (((startX * (1.0 - 0.9375)) + (endX * 0.9375)) / windowWidth) - 1.0, + (((startY * (1.0 - 1.0)) + (endY * 1.0)) / windowHeight) - 1.0, +0.0, +0.0, +0.0, + (((startX * (1.0 - 1.0)) + (endX * 1.0)) / windowWidth) - 1.0, + (((startY * (1.0 - 1.0)) + (endY * 1.0)) / windowHeight) - 1.0, +0.0, +0.0, +0.0, + (((startX * (1.0 - 1.0)) + (endX * 1.0)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.25)) + (endY * 0.25)) / windowHeight) - 1.0, +0.0, +0.0, +0.0, + (((startX * (1.0 - 0.0625)) + (endX * 0.0625)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.25)) + (endY * 0.25)) / windowHeight) - 1.0, +0.0, +0.0, +0.0, + (((startX * (1.0 - 0.0625)) + (endX * 0.0625)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, +0.0, +0.0, +0.0, + (((startX * (1.0 - 0.0625)) + (endX * 0.0625)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, +0.0, +0.0, +0.0, + (((startX * (1.0 - 1.0)) + (endX * 1.0)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, +0.0, +0.0, +0.0, + (((startX * (1.0 - 1.0)) + (endX * 1.0)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.25)) + (endY * 0.25)) / windowHeight) - 1.0, 0.0, 0.0, 0.0, @@ -172,18 +197,23 @@ struct (((startY * (1.0 - 1.0)) + (endY * 1.0)) / windowHeight) - 1.0, 0.0, 0.0, +0.0, + (((startX * (1.0 - 0.0625)) + (endX * 0.0625)) / windowWidth) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, +0.0, +0.0, 0.0, (((startX * (1.0 - 0.0)) + (endX * 0.0)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.1875)) + (endY * 0.1875)) / windowHeight) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, 0.0, 0.0, 0.0, (((startX * (1.0 - 0.0625)) + (endX * 0.0625)) / windowWidth) - 1.0, - (((startY * (1.0 - 0.1875)) + (endY * 0.1875)) / windowHeight) - 1.0, + (((startY * (1.0 - 0.200000017881)) + (endY * 0.200000017881)) / windowHeight) - 1.0, 0.0, 0.0, 0.0, - (((startX * (1.0 - 0.0625)) + (endX * 0.0625)) / windowWidth) - 1.0, + (((startX * (1.0 - 0.0)) + (endX * 0.0)) / windowWidth) - 1.0, (((startY * (1.0 - 1.0)) + (endY * 1.0)) / windowHeight) - 1.0, 0.0, 0.0, diff --git a/fcore/player/player.sml b/fcore/player/player.sml index cf4532e..61410d7 100644 --- a/fcore/player/player.sml +++ b/fcore/player/player.sml @@ -496,34 +496,18 @@ struct (* block is placeholder asset *) fun helpGetDrawVec (x, y, realWidth, realHeight, width, height, attacked, mainAttack) = - case mainAttack of - MAIN_NOT_ATTACKING => - (case attacked of - NOT_ATTACKED => - PlayerSprite.lerp (x, y, realWidth, realHeight, width, height) - | ATTACKED amt => - if amt mod 5 = 0 then - PlayerSprite.lerp (x, y, realWidth, realHeight, width, height) - else - PlayerSprite.lerp (x, y, realWidth, realHeight, width, height)) - | MAIN_THROWING => - (case attacked of - NOT_ATTACKED => - PlayerSprite.lerp (x, y, realWidth, realHeight, width, height) - | ATTACKED amt => - if amt mod 5 = 0 then - PlayerSprite.lerp (x, y, realWidth, realHeight, width, height) - else - PlayerSprite.lerp (x, y, realWidth, realHeight, width, height)) - | MAIN_ATTACKING _ => - (case attacked of - NOT_ATTACKED => - PlayerSprite.lerp (x, y, realWidth, realHeight, width, height) - | ATTACKED amt => - if amt mod 5 = 0 then - PlayerSprite.lerp (x, y, realWidth, realHeight, width, height) - else - PlayerSprite.lerp (x, y, realWidth, realHeight, width, height)) + let + val (r, g, b) = + case attacked of + NOT_ATTACKED => (1.0, 1.0, 1.0) + | ATTACKED amt => + if amt mod 5 = 0 then + (1.0, 1.0, 1.0) + else + (1.0, 0.75, 0.75) + in + PlayerSprite.lerp (x, y, realWidth, realHeight, width, height, r, g, b) + end fun getDrawVec (player: player, width, height) = let