make player's heatth decrement when attacked, and when player's health reaches 0, boot player back to title screen

This commit is contained in:
2025-03-21 10:58:10 +00:00
parent f784244e81
commit da86e79115
2 changed files with 40 additions and 40 deletions

View File

@@ -17,9 +17,12 @@ struct
val enemyTree = Enemy.generateTree enemies val enemyTree = Enemy.generateTree enemies
val player = Player.checkEnemyCollisions (player, enemies, enemyTree) val player = Player.checkEnemyCollisions (player, enemies, enemyTree)
in
if #health player > 0 then
let
val (player, enemies, fallingEnemies) = val (player, enemies, fallingEnemies) =
PlayerAttack.attackEnemies (player, enemies, enemyTree, fallingEnemies) PlayerAttack.attackEnemies
(player, enemies, enemyTree, fallingEnemies)
val projectiles = #projectiles player val projectiles = #projectiles player
val (fallingEnemies, enemies) = val (fallingEnemies, enemies) =
@@ -44,4 +47,10 @@ struct
in in
{mode = GameType.LEVEL mode, userKeys = userKeys, saveKeys = false} {mode = GameType.LEVEL mode, userKeys = userKeys, saveKeys = false}
end end
else
{ mode = GameType.TITLE (TitleType.initial)
, userKeys = userKeys
, saveKeys = false
}
end
end end

View File

@@ -309,18 +309,18 @@ struct
val newRecoil = RECOIL_RIGHT 0 val newRecoil = RECOIL_RIGHT 0
val newAttacked = ATTACKED 0 val newAttacked = ATTACKED 0
in in
W_RECOIL newRecoil :: W_ATTACKED newAttacked W_HEALTH (#health player - 1) :: W_RECOIL newRecoil
:: W_FACING FACING_LEFT :: W_Y_AXIS FALLING :: W_ATTACKED newAttacked :: W_FACING FACING_LEFT
:: W_X_AXIS STAY_STILL :: acc :: W_Y_AXIS FALLING :: W_X_AXIS STAY_STILL :: acc
end end
else else
let let
val newRecoil = RECOIL_LEFT 0 val newRecoil = RECOIL_LEFT 0
val newAttacked = ATTACKED 0 val newAttacked = ATTACKED 0
in in
W_RECOIL newRecoil :: W_ATTACKED newAttacked W_HEALTH (#health player - 1) :: W_RECOIL newRecoil
:: W_FACING FACING_RIGHT :: W_Y_AXIS FALLING :: W_ATTACKED newAttacked :: W_FACING FACING_RIGHT
:: W_X_AXIS STAY_STILL :: acc :: W_Y_AXIS FALLING :: W_X_AXIS STAY_STILL :: acc
end end
fun fold (enemyID, (enemies, player: player), patches) = fun fold (enemyID, (enemies, player: player), patches) =
@@ -353,15 +353,6 @@ struct
end end
end) end)
structure AttackEnemies =
MakeQuadTreeFold
(struct
type env = unit
type state = defeated_enemies list
fun fold (_, (), defeatedList) = {angle = 1} :: defeatedList
end)
fun runPhysicsAndInput (game: LevelType.level_type, input) = fun runPhysicsAndInput (game: LevelType.level_type, input) =
let let
val player = #player game val player = #player game