diff --git a/fcore/game-type.sml b/fcore/game-type.sml index 516af6b..9addadd 100644 --- a/fcore/game-type.sml +++ b/fcore/game-type.sml @@ -23,6 +23,8 @@ sig type defeated_enemies = {angle: int} + type player_projectile = {x: int, y: int} + type player = { yAxis: player_y_axis , xAxis: player_x_axis @@ -57,6 +59,8 @@ sig type game_type = { player: player + , playerProjectiles: player_projectile vector + , playerProjectileTree: QuadTree.t , walls: wall vector , wallTree: QuadTree.t , platforms: platform vector @@ -94,6 +98,8 @@ struct type defeated_enemies = {angle: int} + type player_projectile = {x: int, y: int} + type player = { yAxis: player_y_axis , xAxis: player_x_axis @@ -128,6 +134,8 @@ struct type game_type = { player: player + , playerProjectiles: player_projectile vector + , playerProjectileTree: QuadTree.t , walls: wall vector , wallTree: QuadTree.t , platforms: platform vector @@ -171,6 +179,8 @@ struct val enemyTree = Enemy.generateTree enemies in { player = player + , playerProjectileTree = QuadTree.empty + , playerProjectiles = Vector.fromList [] , walls = walls , wallTree = wallTree , platforms = platforms diff --git a/fcore/game-update.sml b/fcore/game-update.sml index 0a5e6a3..9049fd3 100644 --- a/fcore/game-update.sml +++ b/fcore/game-update.sml @@ -98,7 +98,7 @@ struct (* add collided enemies to player record, * concatenating with the previous enemies defeated *) - val newDefeated = + val newDefeated = Vector.map (fn id => {angle = 360}) enemyCollisions val oldDefeated = #enemies player @@ -150,8 +150,17 @@ struct fun update (game, input) = let - val {player, walls, wallTree, platforms, platformTree, enemies, enemyTree} = - game + val + { player + , playerProjectileTree + , playerProjectiles + , walls + , wallTree + , platforms + , platformTree + , enemies + , enemyTree + } = game val player = Player.runPhysicsAndInput (game, input) @@ -162,6 +171,8 @@ struct val enemyTree = Enemy.generateTree enemies in { player = player + , playerProjectiles = playerProjectiles + , playerProjectileTree = playerProjectileTree , walls = walls , wallTree = wallTree , platforms = platforms