git-subtree-dir: game-sml git-subtree-mainline:aa5357714dgit-subtree-split:113c3e67ab
56 lines
1.6 KiB
Standard ML
56 lines
1.6 KiB
Standard ML
structure LevelUpdate =
|
|
struct
|
|
fun update (level, input, userKeys, time) =
|
|
let
|
|
val
|
|
{ player
|
|
, walls
|
|
, wallTree
|
|
, platforms
|
|
, platformTree
|
|
, enemies
|
|
, graph
|
|
, fallingEnemies
|
|
} = level
|
|
|
|
val player = Player.runPhysicsAndInput (level, input, time)
|
|
|
|
val enemyTree = Enemy.generateTree enemies
|
|
val player = Player.checkEnemyCollisions (player, enemies, enemyTree)
|
|
in
|
|
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, time)
|
|
|
|
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
|