From e280274ed0ae548db61c9658621f6f718141c444 Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Sun, 12 Jan 2025 13:07:32 +0000 Subject: [PATCH] add xAxis and yAxis fields to enemy type --- fcore/enemy.sml | 18 +++++++++++++----- fcore/game-type.sml | 33 ++++++++++++++++++++++++++++----- 2 files changed, 41 insertions(+), 10 deletions(-) diff --git a/fcore/enemy.sml b/fcore/enemy.sml index 3408d23..6e31223 100644 --- a/fcore/enemy.sml +++ b/fcore/enemy.sml @@ -4,7 +4,7 @@ struct * to adjust enemy data on collision with projectile *) fun onCollisionWithProjectile (enemy, projectileTree, acc) = let - val {x, y, health, id} = enemy + val {x, y, health, id, xAxis, yAxis} = enemy val size = Constants.enemySize val ww = Constants.worldWidth @@ -18,7 +18,13 @@ struct (* filter out if decrementing health by one = 0 *) acc else - {health = health - 1, x = x, y = y, id = id} :: acc + { health = health - 1 + , x = x + , y = y + , id = id + , xAxis = xAxis + , yAxis = yAxis + } :: acc else enemy :: acc end @@ -28,7 +34,8 @@ struct acc else let - val {id, x, y, health = _} = Vector.sub (enemyVec, pos) + val {id, x, y, health = _, xAxis = _, yAxis = _} = + Vector.sub (enemyVec, pos) val size = Constants.enemySize val ww = Constants.worldWidth @@ -46,7 +53,7 @@ struct let val mid = low + ((high - low) div 2) val enemy = Vector.sub (vec, mid) - val {id = curNum, x = _, y = _, health = _} = enemy + val {id = curNum, x = _, y = _, health = _, xAxis = _, yAxis = _} = enemy in if curNum = findNum then enemy else if curNum < findNum then helpFind (findNum, vec, mid + 1, high) @@ -56,8 +63,9 @@ struct fun find (findNum, vec) = helpFind (findNum, vec, 0, Vector.length vec - 1) - fun helpGetDrawVec ({x, y, id = _, health = _}, width, height) = + fun helpGetDrawVec (enemy, width, height) = let + val {x, y, id = _, health = _, xAxis = _, yAxis = _} = enemy val wratio = width / Constants.worldWidthReal val hratio = height / Constants.worldHeightReal in diff --git a/fcore/game-type.sml b/fcore/game-type.sml index 920d46a..189beef 100644 --- a/fcore/game-type.sml +++ b/fcore/game-type.sml @@ -61,7 +61,8 @@ sig | W_CHARGE of int | W_PROJECTILES of player_projectile vector - type enemy = {id: int, health: int, x: int, y: int} + type enemy = + {id: int, health: int, x: int, y: int, xAxis: x_axis, yAxis: y_axis} type game_type = { player: player @@ -139,7 +140,8 @@ struct | W_CHARGE of int | W_PROJECTILES of player_projectile vector - type enemy = {id: int, health: int, x: int, y: int} + type enemy = + {id: int, health: int, x: int, y: int, xAxis: x_axis, yAxis: y_axis} type game_type = { player: player @@ -179,9 +181,30 @@ struct val platforms = Vector.fromList [plat1] val platformTree = Platform.generateTree platforms - val enemy1 = {id = 1, x = 300, y = 945, health = 5} - val enemy2 = {id = 2, x = 555, y = 945, health = 5} - val enemy3 = {id = 3, x = 979, y = 945, health = 5} + val enemy1 = + { id = 1 + , x = 300 + , y = 945 + , health = 5 + , xAxis = STAY_STILL + , yAxis = ON_GROUND + } + val enemy2 = + { id = 2 + , x = 555 + , y = 945 + , health = 5 + , xAxis = STAY_STILL + , yAxis = ON_GROUND + } + val enemy3 = + { id = 3 + , x = 979 + , y = 945 + , health = 5 + , xAxis = STAY_STILL + , yAxis = ON_GROUND + } val enemies = Vector.fromList [enemy1, enemy2, enemy3] in { player = player