make enemies move per loop (calling update EnemyMap by calling EnemyBehaviour)
This commit is contained in:
@@ -1,16 +1,44 @@
|
||||
structure Enemy =
|
||||
struct
|
||||
(* - Updating state of enemies per loop - *)
|
||||
(*
|
||||
structure UpdateEnemies = MakeGapMapMapper (struct
|
||||
structure Pair = EnemyPair
|
||||
|
||||
type env = {walls: wall vector, wallTree: QuadTree.t, platforms: platform
|
||||
vector, platformTree: QuadTree.t}
|
||||
|
||||
(enemy, walls, wallTree, platforms, platformTree, player, graph) =
|
||||
end)
|
||||
*)
|
||||
structure UpdateEnemies =
|
||||
MakeGapMapMapper
|
||||
(struct
|
||||
structure Pair = EnemyPair
|
||||
|
||||
type env =
|
||||
{ walls: Wall.t vector
|
||||
, wallTree: QuadTree.t
|
||||
, platforms: Platform.t vector
|
||||
, platformTree: QuadTree.t
|
||||
, player: PlayerType.player
|
||||
, graph: PlatSet.elem vector vector
|
||||
}
|
||||
|
||||
type state = EnemyMap.t
|
||||
|
||||
fun map (enemy, env) =
|
||||
let
|
||||
val {walls, wallTree, platforms, platformTree, player, graph} = env
|
||||
in
|
||||
EnemyBehaviour.updateEnemyState
|
||||
(enemy, walls, wallTree, platforms, platformTree, player, graph)
|
||||
end
|
||||
end)
|
||||
|
||||
fun update (enemies, walls, wallTree, platforms, platformTree, player, graph) =
|
||||
let
|
||||
val env =
|
||||
{ walls = walls
|
||||
, wallTree = wallTree
|
||||
, platforms = platforms
|
||||
, platformTree = platformTree
|
||||
, player = player
|
||||
, graph = graph
|
||||
}
|
||||
in
|
||||
UpdateEnemies.map (enemies, env)
|
||||
end
|
||||
|
||||
(* - Generating enemy tree - *)
|
||||
structure EnemyTree =
|
||||
|
||||
@@ -16,31 +16,16 @@ struct
|
||||
val enemyTree = Enemy.generateTree enemies
|
||||
val player = Player.runPhysicsAndInput (game, input, enemyTree)
|
||||
|
||||
val projectiles = #projectiles player
|
||||
val projectileTree = Projectile.generateTree projectiles
|
||||
val enemies = Enemy.update
|
||||
(enemies, walls, wallTree, platforms, platformTree, player, graph)
|
||||
|
||||
(* update state of falling enemies and possibly filter *)
|
||||
(* todo: use enemy map
|
||||
val fallingEnemies = FallingEnemies.updateList
|
||||
(Vector.length fallingEnemies - 1, fallingEnemies, player, [])
|
||||
|
||||
val (enemies, fallingEnemies) = Enemy.updateEnemyList
|
||||
( Vector.length enemies - 1
|
||||
, enemies
|
||||
, projectiles
|
||||
, projectileTree
|
||||
, walls
|
||||
, wallTree
|
||||
, platforms
|
||||
, platformTree
|
||||
, player
|
||||
, graph
|
||||
, []
|
||||
, fallingEnemies
|
||||
)
|
||||
|
||||
val fallingEnemies = Vector.fromList fallingEnemies
|
||||
*)
|
||||
(* update state of falling enemies and possibly filter *)
|
||||
(* todo: use enemy map
|
||||
val fallingEnemies = FallingEnemies.updateList
|
||||
(Vector.length fallingEnemies - 1, fallingEnemies, player, [])
|
||||
|
||||
val fallingEnemies = Vector.fromList fallingEnemies
|
||||
*)
|
||||
in
|
||||
{ player = player
|
||||
, walls = walls
|
||||
|
||||
Reference in New Issue
Block a user