make enemies move per loop (calling update EnemyMap by calling EnemyBehaviour)

This commit is contained in:
2025-02-14 10:43:27 +00:00
parent 46a1836ae2
commit e00db5d8a3
3 changed files with 48 additions and 35 deletions

View File

@@ -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 =