save grid to custom format

This commit is contained in:
2025-07-12 06:03:59 +01:00
parent 04bb7a18c0
commit eb0b8d31b2
6 changed files with 41 additions and 15 deletions

View File

@@ -3,12 +3,12 @@ struct
open AppType
fun updateSquares (squares, newX, newY, item) =
let
val yAxis = Vector.sub (squares, newX)
val yAxis = Vector.update (yAxis, newY, item)
in
Vector.update (squares, newX, yAxis)
end
let
val yAxis = Vector.sub (squares, newX)
val yAxis = Vector.update (yAxis, newY, item)
in
Vector.update (squares, newX, yAxis)
end
fun changeSquaresSize (squares, newCanvasWidth, newCanvasHeight) =
let

View File

@@ -1,8 +1,22 @@
structure CommonUpdate =
struct
(* unimplemented *)
fun getSaveSquaresMsg model = (model, [])
open AppType
open DrawMessage
open FileMessage
open InputMessage
open UpdateMessage
fun getSaveSquaresMsg (model: app_type) =
let
val {canvasWidth, canvasHeight, squares, ...} = model
val str = CollisionTree.toString (squares, canvasWidth, canvasHeight)
val msg = SAVE_SQUARES str
in
(model, [FILE msg])
end
(* unimplemented *)
fun getLoadSquaresMsg model = (model, [])
fun getExportSquaresMsg model = (model, [])

View File

@@ -520,19 +520,25 @@ struct
, Int.toString b
, " "
, Int.toString a
, " }"
, " } "
]
in
item :: acc
end
fun toString (squares, size) =
fun toString (squares, canvasWidth, canvasHeight) =
let
val size = Int.max (canvasWidth, canvasHeight)
val qtree = buildTree (0, 0, size, squares)
val bintree = merge (qtree, squares)
val vec = BinTree.foldr (toStringFolder, bintree, [])
val initial = ["}"]
val acc = BinTree.foldr (toStringFolder, bintree, initial)
val acc =
String.concat
[Int.toString canvasWidth, " ", Int.toString canvasHeight, " { "]
:: acc
in
Vector.concat vec
String.concat acc
end
end