diff --git a/assets/chunks/0_0_0.dcf b/assets/chunks/0_0_0.dcf index aa2959c7..8c91ef16 100644 Binary files a/assets/chunks/0_0_0.dcf and b/assets/chunks/0_0_0.dcf differ diff --git a/assets/chunks/2_0_0.dcf b/assets/chunks/2_0_0.dcf new file mode 100644 index 00000000..51ef0e9c Binary files /dev/null and b/assets/chunks/2_0_0.dcf differ diff --git a/assets/meshes/chunks/chunk_0_0_0_0.dmf b/assets/meshes/chunks/chunk_0_0_0_0.dmf index 1271d94d..0454d8ab 100644 Binary files a/assets/meshes/chunks/chunk_0_0_0_0.dmf and b/assets/meshes/chunks/chunk_0_0_0_0.dmf differ diff --git a/assets/meshes/chunks/chunk_2_0_0_0.dmf b/assets/meshes/chunks/chunk_2_0_0_0.dmf new file mode 100644 index 00000000..53ea64dd Binary files /dev/null and b/assets/meshes/chunks/chunk_2_0_0_0.dmf differ diff --git a/assets/models/chunks/chunk_2_0_0_0.json b/assets/models/chunks/chunk_2_0_0_0.json new file mode 100644 index 00000000..8b720701 --- /dev/null +++ b/assets/models/chunks/chunk_2_0_0_0.json @@ -0,0 +1,10 @@ +{ + "mesh": "meshes/chunks/chunk_2_0_0_0.dmf", + "color": [ + 255, + 255, + 255, + 255 + ], + "texture": "tiles.png" +} \ No newline at end of file diff --git a/assetsraw/chunks/chunk_0_0_0.json b/assetsraw/chunks/chunk_0_0_0.json index 78d4c53e..c84b7cdd 100644 --- a/assetsraw/chunks/chunk_0_0_0.json +++ b/assetsraw/chunks/chunk_0_0_0.json @@ -636,778 +636,58 @@ 5, 0 ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 6, - 5, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 7, - 5, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 8, - 5, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 9, - 5, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 10, - 5, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 11, - 5, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 12, - 5, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 13, - 5, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 14, - 5, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 15, - 5, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 0, - 6, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 1, - 6, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 2, - 6, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 3, - 6, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 4, - 6, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 5, - 6, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 6, - 6, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 7, - 6, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 8, - 6, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 9, - 6, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 10, - 6, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 11, - 6, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 12, - 6, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 13, - 6, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 14, - 6, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 15, - 6, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 0, - 7, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 1, - 7, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 2, - 7, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 3, - 7, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 4, - 7, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 5, - 7, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 6, - 7, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 7, - 7, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 8, - 7, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 9, - 7, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 10, - 7, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 11, - 7, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 12, - 7, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 13, - 7, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 14, - 7, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 15, - 7, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 0, - 8, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 1, - 8, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 2, - 8, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 3, - 8, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 4, - 8, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 5, - 8, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 6, - 8, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 7, - 8, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 8, - 8, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 9, - 8, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 10, - 8, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 11, - 8, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 12, - 8, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 13, - 8, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 14, - 8, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 15, - 8, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 0, - 9, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 1, - 9, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 2, - 9, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 3, - 9, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 4, - 9, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 5, - 9, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 6, - 9, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 7, - 9, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 8, - 9, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 9, - 9, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 10, - 9, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 11, - 9, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 12, - 9, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 13, - 9, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 14, - 9, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 15, - 9, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 0, - 10, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 1, - 10, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 2, - 10, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 3, - 10, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 4, - 10, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 5, - 10, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 6, - 10, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 7, - 10, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 8, - 10, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 9, - 10, - 0 - ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 10, - 10, - 0 - ], "type": 6, "tile": 0 }, { "pos": [ - 11, + 6, + 5, + 0 + ], + "type": 2, + "tile": 0 + }, + { + "pos": [ + 7, + 5, + 0 + ], + "type": 2, + "tile": 0 + }, + { + "pos": [ + 8, + 5, + 0 + ], + "type": 2, + "tile": 0 + }, + { + "pos": [ + 9, + 5, + 0 + ], + "type": 2, + "tile": 0 + }, + { + "pos": [ 10, + 5, + 0 + ], + "type": 2, + "tile": 0 + }, + { + "pos": [ + 11, + 5, 0 ], "type": 2, @@ -1416,12 +696,534 @@ { "pos": [ 12, - 10, + 5, 0 ], "type": 7, "tile": 0 }, + { + "pos": [ + 13, + 5, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 5, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 5, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 0, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 1, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 6, + 0 + ], + "type": 3, + "tile": 0 + }, + { + "pos": [ + 12, + 6, + 0 + ], + "type": 5, + "tile": 0 + }, + { + "pos": [ + 13, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 0, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 1, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 7, + 0 + ], + "type": 3, + "tile": 0 + }, + { + "pos": [ + 12, + 7, + 0 + ], + "type": 5, + "tile": 0 + }, + { + "pos": [ + 13, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 0, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 1, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 8, + 0 + ], + "type": 3, + "tile": 0 + }, + { + "pos": [ + 12, + 8, + 0 + ], + "type": 5, + "tile": 0 + }, + { + "pos": [ + 13, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 0, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 1, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 9, + 0 + ], + "type": 8, + "tile": 0 + }, + { + "pos": [ + 6, + 9, + 0 + ], + "type": 4, + "tile": 0 + }, + { + "pos": [ + 7, + 9, + 0 + ], + "type": 4, + "tile": 0 + }, + { + "pos": [ + 8, + 9, + 0 + ], + "type": 4, + "tile": 0 + }, + { + "pos": [ + 9, + 9, + 0 + ], + "type": 8, + "tile": 0 + }, + { + "pos": [ + 12, + 9, + 0 + ], + "type": 5, + "tile": 0 + }, + { + "pos": [ + 13, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 0, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 1, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 6, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 7, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 8, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 9, + 10, + 0 + ], + "type": 3, + "tile": 0 + }, + { + "pos": [ + 12, + 10, + 0 + ], + "type": 5, + "tile": 0 + }, { "pos": [ 13, @@ -1536,15 +1338,6 @@ 11, 0 ], - "type": 1, - "tile": 0 - }, - { - "pos": [ - 10, - 11, - 0 - ], "type": 3, "tile": 0 }, @@ -1671,7 +1464,7 @@ 12, 0 ], - "type": 1, + "type": 8, "tile": 0 }, { @@ -1680,7 +1473,7 @@ 12, 0 ], - "type": 8, + "type": 4, "tile": 0 }, { @@ -2160,6 +1953,213 @@ "type": 1, "tile": 0 }, + { + "pos": [ + 6, + 6, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 7, + 6, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 8, + 6, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 9, + 6, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 6, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 6, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 6, + 7, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 7, + 7, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 8, + 7, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 9, + 7, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 7, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 7, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 6, + 8, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 7, + 8, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 8, + 8, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 9, + 8, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 8, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 8, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 9, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 9, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 10, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 10, + 1 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 11, + 1 + ], + "type": 1, + "tile": 0 + }, { "pos": [ 11, diff --git a/assetsraw/chunks/chunk_2_0_0.json b/assetsraw/chunks/chunk_2_0_0.json new file mode 100644 index 00000000..558b76ca --- /dev/null +++ b/assetsraw/chunks/chunk_2_0_0.json @@ -0,0 +1,2273 @@ +{ + "tiles": [ + { + "pos": [ + 0, + 0, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 1, + 0, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 0, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 0, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 0, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 0, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 6, + 0, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 7, + 0, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 8, + 0, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 9, + 0, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 0, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 0, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 12, + 0, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 13, + 0, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 0, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 0, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 0, + 1, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 1, + 1, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 1, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 1, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 1, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 1, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 6, + 1, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 7, + 1, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 8, + 1, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 9, + 1, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 1, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 1, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 12, + 1, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 13, + 1, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 1, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 1, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 0, + 2, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 1, + 2, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 2, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 2, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 2, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 2, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 6, + 2, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 7, + 2, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 8, + 2, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 9, + 2, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 2, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 2, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 12, + 2, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 13, + 2, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 2, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 2, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 0, + 3, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 1, + 3, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 3, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 3, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 3, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 3, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 6, + 3, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 7, + 3, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 8, + 3, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 9, + 3, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 3, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 3, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 12, + 3, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 13, + 3, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 3, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 3, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 0, + 4, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 1, + 4, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 4, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 4, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 4, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 4, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 6, + 4, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 7, + 4, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 8, + 4, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 9, + 4, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 4, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 4, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 12, + 4, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 13, + 4, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 4, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 4, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 0, + 5, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 1, + 5, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 5, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 5, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 5, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 5, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 6, + 5, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 7, + 5, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 8, + 5, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 9, + 5, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 5, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 5, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 12, + 5, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 13, + 5, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 5, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 5, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 6, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 7, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 8, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 9, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 12, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 13, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 6, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 6, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 7, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 8, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 9, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 12, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 13, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 7, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 0, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 1, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 6, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 7, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 8, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 9, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 12, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 13, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 8, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 0, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 1, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 6, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 7, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 8, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 9, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 12, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 13, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 9, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 0, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 1, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 6, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 7, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 8, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 9, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 12, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 13, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 10, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 0, + 11, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 1, + 11, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 11, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 11, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 11, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 11, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 6, + 11, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 7, + 11, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 8, + 11, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 9, + 11, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 11, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 11, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 12, + 11, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 13, + 11, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 11, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 11, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 0, + 12, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 1, + 12, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 12, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 12, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 12, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 12, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 6, + 12, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 7, + 12, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 8, + 12, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 9, + 12, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 12, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 12, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 12, + 12, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 13, + 12, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 12, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 12, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 0, + 13, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 1, + 13, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 13, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 13, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 13, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 13, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 6, + 13, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 7, + 13, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 8, + 13, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 9, + 13, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 13, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 13, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 12, + 13, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 13, + 13, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 13, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 13, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 0, + 14, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 1, + 14, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 14, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 14, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 14, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 14, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 6, + 14, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 7, + 14, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 8, + 14, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 9, + 14, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 14, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 14, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 12, + 14, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 13, + 14, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 14, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 14, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 0, + 15, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 1, + 15, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 2, + 15, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 3, + 15, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 4, + 15, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 5, + 15, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 6, + 15, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 7, + 15, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 8, + 15, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 9, + 15, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 10, + 15, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 11, + 15, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 12, + 15, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 13, + 15, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 14, + 15, + 0 + ], + "type": 1, + "tile": 0 + }, + { + "pos": [ + 15, + 15, + 0 + ], + "type": 1, + "tile": 0 + } + ], + "meshes": [] +} \ No newline at end of file diff --git a/editor/client/public/map/index.html b/editor/client/public/map/index.html index 093d8e86..29761658 100644 --- a/editor/client/public/map/index.html +++ b/editor/client/public/map/index.html @@ -52,7 +52,10 @@ 0
-
+
+ +
+
diff --git a/editor/client/public/map/map.js b/editor/client/public/map/map.js index 52adedb8..43cce2da 100644 --- a/editor/client/public/map/map.js +++ b/editor/client/public/map/map.js @@ -74,6 +74,7 @@ let zoomWorldH = 20; let dirty = false; let hoverTile = null; + let fillMode = false; let mapRenderer = null; let terrainMesh = null; @@ -462,13 +463,63 @@ renderPreview(); } + // 4-connected flood fill of same-type tiles at the current Z-level, + // starting from (startX, startY), replacing them with selectedShape. + function floodFill(startX, startY) { + const targetType = tiles[ChunkTerrain.tileIndex(startX, startY, currentZLevel)]; + if(targetType === selectedShape) return; + + const stack = [[startX, startY]]; + const visited = new Set(); + while(stack.length) { + const [x, y] = stack.pop(); + const key = `${x},${y}`; + if(visited.has(key)) continue; + if(x < 0 || x >= ChunkTerrain.CHUNK_WIDTH || y < 0 || y >= ChunkTerrain.CHUNK_HEIGHT) continue; + visited.add(key); + + const idx = ChunkTerrain.tileIndex(x, y, currentZLevel); + if(tiles[idx] !== targetType) continue; + tiles[idx] = selectedShape; + stack.push([x + 1, y], [x - 1, y], [x, y + 1], [x, y - 1]); + } + } + + function fillAt(e) { + const canvas = document.getElementById("gridCanvas"); + const t = canvasToTile(e, canvas); + if(!t) return; + pushUndo(); + floodFill(t.x, t.y); + markDirty(); + renderGrid(); + renderPreview(); + } + function rebuildTerrainMesh() { const floats = ChunkTerrain.buildTerrainVerts(tiles); terrainMesh = floats.length ? mapRenderer.createMesh(floats) : null; } + // Keeps the preview canvas's backing-store resolution matched to its + // actual displayed CSS size (times devicePixelRatio) - the canvas + // otherwise stays at its fixed width/height attributes (512x512) while + // CSS stretches it to fill the column, which upscales and blurs the + // WebGL output on wider or high-DPI screens. + function resizePreviewCanvas() { + const canvas = document.getElementById("previewCanvas"); + const dpr = window.devicePixelRatio || 1; + const displayWidth = Math.max(1, Math.round(canvas.clientWidth * dpr)); + const displayHeight = Math.max(1, Math.round(canvas.clientHeight * dpr)); + if(canvas.width !== displayWidth || canvas.height !== displayHeight) { + canvas.width = displayWidth; + canvas.height = displayHeight; + } + } + async function renderPreview() { if(!mapRenderer) return; + resizePreviewCanvas(); rebuildTerrainMesh(); const models = []; @@ -604,6 +655,11 @@ let draggingMeshIndex = -1; gridCanvas.addEventListener("mousedown", (e) => { + if(fillMode) { + fillAt(e); + return; + } + const hit = hitTestMesh(e, gridCanvas); pushUndo(); if(hit !== -1) { @@ -657,8 +713,18 @@ document.getElementById("navUp").addEventListener("click", () => goToChunk(coord.x, coord.y, coord.z + 1)); document.getElementById("navDown").addEventListener("click", () => goToChunk(coord.x, coord.y, coord.z - 1)); - document.getElementById("btnSave").addEventListener("click", () => { + function runSave() { saveChunk().catch((e) => updateStatus(`Save failed: ${e.message}`, true)); + } + + document.getElementById("btnSave").addEventListener("click", runSave); + + document.getElementById("fillToggle").addEventListener("click", () => { + fillMode = !fillMode; + const btn = document.getElementById("fillToggle"); + btn.textContent = fillMode ? "Fill: On" : "Fill: Off"; + btn.classList.toggle("btn-secondary", fillMode); + btn.classList.toggle("btn-outline-secondary", !fillMode); }); document.getElementById("btnAddMesh").addEventListener("click", () => { @@ -683,10 +749,17 @@ renderPreview(); }, { passive: false }); + window.addEventListener("resize", () => renderPreview()); + window.addEventListener("keydown", (e) => { - if((e.ctrlKey || e.metaKey) && e.key.toLowerCase() === "z") { + if(!(e.ctrlKey || e.metaKey)) return; + const key = e.key.toLowerCase(); + if(key === "z") { e.preventDefault(); undo(); + } else if(key === "s") { + e.preventDefault(); + runSave(); } }); } diff --git a/src/dusk/ui/frame/uisettings.c b/src/dusk/ui/frame/uisettings.c index 110408ae..e95073e2 100644 --- a/src/dusk/ui/frame/uisettings.c +++ b/src/dusk/ui/frame/uisettings.c @@ -10,6 +10,7 @@ #include "util/memory.h" #include "display/spritebatch/spritebatch.h" #include "display/text/text.h" +#include "display/screen/screen.h" #include "assert/assert.h" uisettings_t UI_SETTINGS; @@ -75,15 +76,20 @@ errorret_t uiSettingsInit(void) { errorret_t uiSettingsDraw(void) { if(!uiMenuIsActive(&UI_SETTINGS.menu)) errorOk(); - uint8_t rows = UI_SETTINGS_ITEM_COUNT; + const float_t width = 300.0f; + const float_t height = 300.0f; + const float_t x = (float_t)SCREEN.scanX + + ((float_t)SCREEN.scanWidth - width) * 0.5f; + const float_t y = (float_t)SCREEN.scanY + + ((float_t)SCREEN.scanHeight - height) * 0.5f; - errorChain(uiFrameDraw(0.0f, 0.0f, 300.0f, 300)); + errorChain(uiFrameDraw(x, y, width, height)); errorChain(uiMenuDraw( &UI_SETTINGS.menu, - UI_FRAME_BORDER_WIDTH, - UI_FRAME_BORDER_HEIGHT, - 300.0f - (UI_FRAME_BORDER_WIDTH * 2), - 300.0f - (UI_FRAME_BORDER_HEIGHT * 2) + x + UI_FRAME_BORDER_WIDTH, + y + UI_FRAME_BORDER_HEIGHT, + width - (UI_FRAME_BORDER_WIDTH * 2), + height - (UI_FRAME_BORDER_HEIGHT * 2) )); errorChain(spriteBatchFlush());