pass player record as argument for enemy filtering functiokns, so enemy can react to player state (position, etc.)
This commit is contained in:
@@ -112,7 +112,8 @@ struct
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
fun getVariantPatches (enemy, walls, wallTree, platforms, platformTree, acc) =
|
fun getVariantPatches
|
||||||
|
(enemy, walls, wallTree, platforms, platformTree, player, acc) =
|
||||||
let
|
let
|
||||||
open EnemyVariants
|
open EnemyVariants
|
||||||
in
|
in
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ struct
|
|||||||
, wallTree
|
, wallTree
|
||||||
, platforms
|
, platforms
|
||||||
, platformTree
|
, platformTree
|
||||||
|
, player
|
||||||
) =
|
) =
|
||||||
let
|
let
|
||||||
val {x, y, health, ...} = enemy
|
val {x, y, health, ...} = enemy
|
||||||
@@ -51,7 +52,7 @@ struct
|
|||||||
|
|
||||||
(* get patches specific to this type of enemy *)
|
(* get patches specific to this type of enemy *)
|
||||||
val patches = EnemyBehaviour.getVariantPatches
|
val patches = EnemyBehaviour.getVariantPatches
|
||||||
(enemy, walls, wallTree, platforms, platformTree, patches)
|
(enemy, walls, wallTree, platforms, platformTree, player, patches)
|
||||||
|
|
||||||
val enemy = EnemyPatch.withPatches (enemy, patches)
|
val enemy = EnemyPatch.withPatches (enemy, patches)
|
||||||
in
|
in
|
||||||
@@ -69,7 +70,7 @@ struct
|
|||||||
|
|
||||||
(* get patches specific to this type of enemy *)
|
(* get patches specific to this type of enemy *)
|
||||||
val patches = EnemyBehaviour.getVariantPatches
|
val patches = EnemyBehaviour.getVariantPatches
|
||||||
(enemy, walls, wallTree, platforms, platformTree, patches)
|
(enemy, walls, wallTree, platforms, platformTree, player, patches)
|
||||||
|
|
||||||
val enemy = EnemyPatch.withPatches (enemy, patches)
|
val enemy = EnemyPatch.withPatches (enemy, patches)
|
||||||
in
|
in
|
||||||
@@ -87,6 +88,7 @@ struct
|
|||||||
, wallTree
|
, wallTree
|
||||||
, platforms
|
, platforms
|
||||||
, platformTree
|
, platformTree
|
||||||
|
, player
|
||||||
) =
|
) =
|
||||||
if pos < 0 then
|
if pos < 0 then
|
||||||
Vector.fromList acc
|
Vector.fromList acc
|
||||||
@@ -94,7 +96,15 @@ struct
|
|||||||
let
|
let
|
||||||
val enemy = Vector.sub (enemies, pos)
|
val enemy = Vector.sub (enemies, pos)
|
||||||
val acc = onCollisionWithProjectile
|
val acc = onCollisionWithProjectile
|
||||||
(enemy, projectileTree, acc, walls, wallTree, platforms, platformTree)
|
( enemy
|
||||||
|
, projectileTree
|
||||||
|
, acc
|
||||||
|
, walls
|
||||||
|
, wallTree
|
||||||
|
, platforms
|
||||||
|
, platformTree
|
||||||
|
, player
|
||||||
|
)
|
||||||
in
|
in
|
||||||
filterProjectileCollisions
|
filterProjectileCollisions
|
||||||
( pos - 1
|
( pos - 1
|
||||||
@@ -105,6 +115,7 @@ struct
|
|||||||
, wallTree
|
, wallTree
|
||||||
, platforms
|
, platforms
|
||||||
, platformTree
|
, platformTree
|
||||||
|
, player
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -121,6 +132,7 @@ struct
|
|||||||
, wallTree
|
, wallTree
|
||||||
, platforms
|
, platforms
|
||||||
, platformTree
|
, platformTree
|
||||||
|
, player
|
||||||
) =
|
) =
|
||||||
if pos < 0 then
|
if pos < 0 then
|
||||||
Vector.fromList acc
|
Vector.fromList acc
|
||||||
@@ -139,6 +151,7 @@ struct
|
|||||||
, wallTree
|
, wallTree
|
||||||
, platforms
|
, platforms
|
||||||
, platformTree
|
, platformTree
|
||||||
|
, player
|
||||||
)
|
)
|
||||||
in
|
in
|
||||||
filterWhenAttacked
|
filterWhenAttacked
|
||||||
@@ -151,6 +164,7 @@ struct
|
|||||||
, wallTree
|
, wallTree
|
||||||
, platforms
|
, platforms
|
||||||
, platformTree
|
, platformTree
|
||||||
|
, player
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,16 @@ struct
|
|||||||
open GameType
|
open GameType
|
||||||
open PlayerPatch
|
open PlayerPatch
|
||||||
|
|
||||||
fun checkCollisions (player, enemies, enemyTree, projectiles, walls, wallTree,
|
fun checkCollisions
|
||||||
platforms, platformTree) =
|
( player
|
||||||
|
, enemies
|
||||||
|
, enemyTree
|
||||||
|
, projectiles
|
||||||
|
, walls
|
||||||
|
, wallTree
|
||||||
|
, platforms
|
||||||
|
, platformTree
|
||||||
|
) =
|
||||||
let
|
let
|
||||||
val {x, y, mainAttack, attacked, ...} = player
|
val {x, y, mainAttack, attacked, ...} = player
|
||||||
val size = Constants.playerSize
|
val size = Constants.playerSize
|
||||||
@@ -26,6 +34,7 @@ struct
|
|||||||
, wallTree
|
, wallTree
|
||||||
, platforms
|
, platforms
|
||||||
, platformTree
|
, platformTree
|
||||||
|
, player
|
||||||
)
|
)
|
||||||
|
|
||||||
(* add collided enemies to player record,
|
(* add collided enemies to player record,
|
||||||
@@ -46,8 +55,16 @@ struct
|
|||||||
(player, enemies, enemyCollisions, [])
|
(player, enemies, enemyCollisions, [])
|
||||||
|
|
||||||
val enemies = Enemy.filterProjectileCollisions
|
val enemies = Enemy.filterProjectileCollisions
|
||||||
(Vector.length enemies - 1, enemies, projectileTree, [],
|
( Vector.length enemies - 1
|
||||||
walls, wallTree, platforms, platformTree)
|
, enemies
|
||||||
|
, projectileTree
|
||||||
|
, []
|
||||||
|
, walls
|
||||||
|
, wallTree
|
||||||
|
, platforms
|
||||||
|
, platformTree
|
||||||
|
, player
|
||||||
|
)
|
||||||
in
|
in
|
||||||
(player, enemies)
|
(player, enemies)
|
||||||
end
|
end
|
||||||
@@ -63,8 +80,16 @@ struct
|
|||||||
(player, enemies, enemyCollisions)
|
(player, enemies, enemyCollisions)
|
||||||
|
|
||||||
val enemies = Enemy.filterProjectileCollisions
|
val enemies = Enemy.filterProjectileCollisions
|
||||||
(Vector.length enemies - 1, enemies, projectileTree, [],
|
( Vector.length enemies - 1
|
||||||
walls, wallTree, platforms, platformTree)
|
, enemies
|
||||||
|
, projectileTree
|
||||||
|
, []
|
||||||
|
, walls
|
||||||
|
, wallTree
|
||||||
|
, platforms
|
||||||
|
, platformTree
|
||||||
|
, player
|
||||||
|
)
|
||||||
in
|
in
|
||||||
(player, enemies)
|
(player, enemies)
|
||||||
end
|
end
|
||||||
@@ -75,8 +100,16 @@ struct
|
|||||||
let
|
let
|
||||||
val player = Player.incrementAttacked (player, amt)
|
val player = Player.incrementAttacked (player, amt)
|
||||||
val enemies = Enemy.filterProjectileCollisions
|
val enemies = Enemy.filterProjectileCollisions
|
||||||
(Vector.length enemies - 1, enemies, projectileTree, [],
|
( Vector.length enemies - 1
|
||||||
walls, wallTree, platforms, platformTree)
|
, enemies
|
||||||
|
, projectileTree
|
||||||
|
, []
|
||||||
|
, walls
|
||||||
|
, wallTree
|
||||||
|
, platforms
|
||||||
|
, platformTree
|
||||||
|
, player
|
||||||
|
)
|
||||||
in
|
in
|
||||||
(player, enemies)
|
(player, enemies)
|
||||||
end)
|
end)
|
||||||
|
|||||||
Reference in New Issue
Block a user