Files
sml-projects/fcore/enemy-patch.sml

33 lines
923 B
Standard ML

structure EnemyPatch =
struct
datatype enemy_patch =
W_HEALTH of int
| W_X of int
| W_Y of int
| W_X_AXIS of GameType.x_axis
| W_Y_AXIS of GameType.y_axis
fun mkEnemy (id, health, x, y, xAxis, yAxis) =
{id = id, health = health, x = x, y = y, xAxis = xAxis, yAxis = yAxis}
fun withPatch (enemy, patch) =
let
val {id, health, x, y, xAxis, yAxis} = enemy
in
case patch of
W_HEALTH health => mkEnemy (id, health, x, y, xAxis, yAxis)
| W_X x => mkEnemy (id, health, x, y, xAxis, yAxis)
| W_X_AXIS xAxis => mkEnemy (id, health, x, y, xAxis, yAxis)
| W_Y y => mkEnemy (id, health, x, y, xAxis, yAxis)
| W_Y_AXIS yAxis => mkEnemy (id, health, x, y, xAxis, yAxis)
end
fun withPatches (enemy, lst) =
case lst of
hd :: tl =>
let val enemy = withPatch (enemy, hd)
in withPatches (enemy, tl)
end
| [] => enemy
end