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:
@@ -17,31 +17,40 @@ 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)
|
||||||
|
|
||||||
val (player, enemies, fallingEnemies) =
|
|
||||||
PlayerAttack.attackEnemies (player, enemies, enemyTree, fallingEnemies)
|
|
||||||
|
|
||||||
val projectiles = #projectiles player
|
|
||||||
val (fallingEnemies, enemies) =
|
|
||||||
PlayerAttack.projectileHitEnemy
|
|
||||||
(projectiles, enemies, enemyTree, fallingEnemies)
|
|
||||||
|
|
||||||
val enemies = Enemy.update
|
|
||||||
(enemies, walls, wallTree, platforms, platformTree, player, graph)
|
|
||||||
|
|
||||||
val fallingEnemies = FallingEnemies.update fallingEnemies
|
|
||||||
|
|
||||||
val mode =
|
|
||||||
{ player = player
|
|
||||||
, walls = walls
|
|
||||||
, wallTree = wallTree
|
|
||||||
, platforms = platforms
|
|
||||||
, platformTree = platformTree
|
|
||||||
, enemies = enemies
|
|
||||||
, graph = graph
|
|
||||||
, fallingEnemies = fallingEnemies
|
|
||||||
}
|
|
||||||
in
|
in
|
||||||
{mode = GameType.LEVEL mode, userKeys = userKeys, saveKeys = false}
|
if #health player > 0 then
|
||||||
|
let
|
||||||
|
val (player, enemies, fallingEnemies) =
|
||||||
|
PlayerAttack.attackEnemies
|
||||||
|
(player, enemies, enemyTree, fallingEnemies)
|
||||||
|
|
||||||
|
val projectiles = #projectiles player
|
||||||
|
val (fallingEnemies, enemies) =
|
||||||
|
PlayerAttack.projectileHitEnemy
|
||||||
|
(projectiles, enemies, enemyTree, fallingEnemies)
|
||||||
|
|
||||||
|
val enemies = Enemy.update
|
||||||
|
(enemies, walls, wallTree, platforms, platformTree, player, graph)
|
||||||
|
|
||||||
|
val fallingEnemies = FallingEnemies.update fallingEnemies
|
||||||
|
|
||||||
|
val mode =
|
||||||
|
{ player = player
|
||||||
|
, walls = walls
|
||||||
|
, wallTree = wallTree
|
||||||
|
, platforms = platforms
|
||||||
|
, platformTree = platformTree
|
||||||
|
, enemies = enemies
|
||||||
|
, graph = graph
|
||||||
|
, fallingEnemies = fallingEnemies
|
||||||
|
}
|
||||||
|
in
|
||||||
|
{mode = GameType.LEVEL mode, userKeys = userKeys, saveKeys = false}
|
||||||
|
end
|
||||||
|
else
|
||||||
|
{ mode = GameType.TITLE (TitleType.initial)
|
||||||
|
, userKeys = userKeys
|
||||||
|
, saveKeys = false
|
||||||
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user