From 01bc91e201701bf0a5a19f91d59e2eb12cc38deb Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Fri, 27 Dec 2024 17:32:42 +0000 Subject: [PATCH] return (player, enemies vector) tuple from function to check player-enemy collisions, because we will later want to update both player and enemy in the event that both collide --- fcore/game-update.sml | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/fcore/game-update.sml b/fcore/game-update.sml index 2e124d4..1f7309d 100644 --- a/fcore/game-update.sml +++ b/fcore/game-update.sml @@ -69,8 +69,12 @@ struct let val enemyCollisions = QuadTree.getCollisions (x, y, size, size, 0, 0, 1920, 1080, 0, enemyTree) + + val patches = + checkEnemies (player, enemies, enemyCollisions, []) + val player = Player.withPatches (player, patches) in - checkEnemies (player, enemies, enemyCollisions, []) + (player, enemies) end | ATTACKED amt => if amt = Player.attackedLimit then @@ -79,8 +83,11 @@ struct val enemyCollisions = QuadTree.getCollisions (x, y, size, size, 0, 0, 1920, 1080, 0, enemyTree) val lst = [W_ATTACKED NOT_ATTACKED] + val patches = + checkEnemies (player, enemies, enemyCollisions, lst) + val player = Player.withPatches (player, patches) in - checkEnemies (player, enemies, enemyCollisions, lst) + (player, enemies) end else (* if attacked, don't detect collisions, @@ -89,15 +96,20 @@ struct let val amt = amt + 1 val attacked = ATTACKED amt + val player = Player.withPatches + (player, [W_ATTACKED attacked]) in - [W_ATTACKED attacked] + (player, enemies) end) | MAIN_ATTACKING amt => let val enemyCollisions = QuadTree.getCollisions (x, y, size, size, 0, 0, 1920, 1080, 0, enemyTree) + val patches = + checkEnemiesWhileAttacking (player, enemies, enemyCollisions, []) + val player = Player.withPatches (player, patches) in - checkEnemiesWhileAttacking (player, enemies, enemyCollisions, []) + (player, enemies) end end @@ -109,8 +121,7 @@ struct val player = Player.runPhysicsAndInput (game, input) (* check player-enemy collisions and react *) - val playerPatches = checkPlayerEnemyCollisions (player, game) - val player = Player.withPatches (player, playerPatches) + val (player, enemies) = checkPlayerEnemyCollisions (player, game) in { player = player , walls = walls