done adding export-collision functionality, including collision message, in functional core. Next: add imperative shell scaffolding

This commit is contained in:
2025-07-13 15:33:32 +01:00
parent de16e816b4
commit 7e96203f92
7 changed files with 15 additions and 56 deletions

View File

@@ -29,6 +29,18 @@ struct
(model, [FILE msg])
end
fun getCollisionMsg (model: app_type) =
let
val {squares, canvasWidth, canvasHeight, modalNum, ...} = model
val exportString =
CollisionTree.toCollisionString (squares, canvasWidth, canvasHeight, modalNum)
val msg = EXPORT_COLLISIONS exportString
val model = AppWith.modalNum (model, 0)
in
(model, [FILE msg])
end
(* unimplemented *)
fun useSquaresInNormalMode (model, squares) = (model, [])

View File

@@ -363,6 +363,7 @@ struct
| KEY_CTRL_S => CommonUpdate.getSaveSquaresMsg model
| KEY_CTRL_L => CommonUpdate.getLoadSquaresMsg model
| KEY_CTRL_E => CommonUpdate.getExportSquaresMsg model
| KEY_CTRL_C => CommonUpdate.getCollisionMsg model
| USE_SQUARES {squares, canvasWidth, canvasHeight} =>
useSquares (model, squares, canvasWidth, canvasHeight)
| SQUARES_LOAD_ERROR => CommonUpdate.squaresLoadError model

View File

@@ -666,7 +666,6 @@ struct
val qtree = buildTree (0, 0, size, squares)
val bintree = merge (qtree, squares)
val scale = if scale = 0 then 1 else scale
val f = toCollisionStringFolder scale
val collisions = BinTree.foldr (f, bintree, [])
val collisions = String.concatWith ",\n" collisions