From e05aa45f672eb49312449d359a9e345223741b19 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Fri, 9 Apr 2021 22:37:49 -0400 Subject: graphics: Rewrite tile map module. --- examples/images/serene-village.png | Bin 0 -> 122591 bytes examples/images/tiles.png | Bin 100846 -> 0 bytes examples/maps/example.tmx | 348 ++++++++++++++++++++++++++++--------- examples/maps/serene-village.tsx | 84 +++++++++ examples/tile-map.scm | 100 +++++++++++ examples/tiled.scm | 81 --------- 6 files changed, 447 insertions(+), 166 deletions(-) create mode 100644 examples/images/serene-village.png delete mode 100644 examples/images/tiles.png create mode 100644 examples/maps/serene-village.tsx create mode 100644 examples/tile-map.scm delete mode 100644 examples/tiled.scm (limited to 'examples') diff --git a/examples/images/serene-village.png b/examples/images/serene-village.png new file mode 100644 index 0000000..d94cb31 Binary files /dev/null and b/examples/images/serene-village.png differ diff --git a/examples/images/tiles.png b/examples/images/tiles.png deleted file mode 100644 index d8a3dfd..0000000 Binary files a/examples/images/tiles.png and /dev/null differ diff --git a/examples/maps/example.tmx b/examples/maps/example.tmx index 6c8bc3d..4a3a77a 100644 --- a/examples/maps/example.tmx +++ b/examples/maps/example.tmx @@ -1,96 +1,274 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1175,1176,1176,1177,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1215,1216,1216,1217,1, -1,1,1,1,1,1175,1176,1177,1,1,1,1,1,1,1,1215,1216,1216,1217,1, -1,1,1,1175,1176,1336,1216,1335,1177,1,1,1,1,1,1,1255,1296,1216,1217,1, -1,1,1,1215,1216,1216,1216,1216,1335,1177,1,1,1,1,1,1,1215,1216,1217,1, -1,1,1,1215,1216,1216,1216,1216,1216,1335,1176,1176,1176,1176,1177,1,1255,1256,1257,1, -1,1,1,1215,1216,1216,1216,1295,1296,1216,1216,1216,1216,1216,1217,1,1,1,1,1, -1,1,1,1255,1296,1216,1216,1217,1255,1256,1296,1216,1295,1256,1257,1,1,1,1,1, -1,1,1,1,1255,1256,1256,1257,1,367,1255,1256,1257,365,1,1,1,1,1,1, -446,446,446,446,446,446,446,446,446,447,212,253,253,445,446,446,446,446,446,446, -486,486,486,486,486,486,486,486,486,527,252,213,213,525,486,486,486,486,486,526, -566,566,566,566,566,566,566,566,566,567,252,253,253,565,566,566,566,566,566,566, -1,1,1,1,1,1,1,1,1,1,1175,1176,1177,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1215,1216,1335,1177,1,1,1,1,1,1 +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,0,0,0,0,0,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,0,0,0,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,0,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,0,0,0,0,0,0,0,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210 - + -685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,646,647,0,0,0,0, -0,646,647,483,0,0,484,321,0,7,8,9,10,11,686,687,0,0,0,0, -0,686,687,0,444,0,827,0,321,47,48,49,50,51,0,0,0,0,0,0, -0,321,0,484,0,828,867,829,0,87,88,89,90,91,0,0,0,0,0,0, -0,0,483,0,0,868,0,869,0,127,128,129,130,131,646,647,0,0,0,0, -0,483,483,321,0,0,0,0,0,167,168,169,170,171,686,687,0,0,646,647, -0,0,444,0,0,0,0,0,73,0,0,0,0,0,483,0,484,0,686,687, -646,647,321,0,0,0,0,0,113,0,0,0,0,0,73,444,483,0,0,0, -686,687,483,0,484,321,484,0,444,0,528,0,0,0,113,483,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,116,0,0,0,0,0,0, -606,606,606,606,606,606,606,606,606,322,608,0,0,605,606,606,606,606,606,606, -0,0,0,0,0,0,0,0,483,484,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,81,84,84,83,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,84,82,81,84,21,5,47,4,24,22,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,83,81,21,100,101,101,103,47,43,101,4,62,103,22,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,80,84,84,84,21,62,4,101,102,43,100,6,62,102,46,62,103,4,5,22,82,85,80,83,82,83,82,84,85,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,99,62,5,24,101,62,24,102,103,4,103,62,62,102,24,5,43,62,6,6,4,22,21,6,4,100,102,103,22,85,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,80,82,84,81,21,24,100,46,62,101,4,46,6,43,46,100,24,102,46,101,6,102,46,103,62,43,62,103,103,102,24,6,47,22,85,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,80,21,6,102,6,24,46,6,102,43,103,6,6,5,24,6,43,103,62,62,47,43,103,46,47,103,5,62,24,100,5,24,5,103,46,104,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,99,24,46,47,4,6,102,102,43,43,103,24,5,103,46,46,4,62,5,62,102,101,101,5,43,102,101,46,47,46,4,101,43,102,100,104,0,0,0,0,0,0, +0,0,0,0,0,0,0,80,21,5,24,47,5,100,101,102,5,103,6,24,44,65,65,42,46,5,24,46,5,24,5,6,24,100,62,46,62,6,101,46,47,100,100,22,85,0,0,0,0,0, +0,0,0,0,0,0,0,99,103,101,102,47,46,46,102,100,100,46,43,43,48,49,49,64,65,65,66,66,65,66,66,42,100,5,6,102,6,4,100,24,101,102,62,100,104,0,0,0,0,0, +0,0,0,0,0,0,0,99,101,6,47,6,102,100,43,47,62,43,100,43,48,49,49,49,49,49,49,49,49,49,49,64,42,100,101,43,5,4,46,5,24,4,46,46,104,0,0,0,0,0, +0,0,0,0,0,0,0,99,103,47,47,103,103,103,24,43,62,44,66,66,67,49,49,49,49,49,49,49,49,49,49,49,64,66,42,46,43,5,102,101,4,46,5,46,104,0,0,0,0,0, +0,0,0,0,0,0,0,99,47,47,4,100,46,5,43,5,101,25,28,27,27,28,27,28,28,27,28,28,29,49,49,49,49,49,45,100,102,4,24,46,62,5,24,41,123,0,0,0,0,0, +0,0,0,0,0,0,0,118,40,47,5,101,101,24,6,101,4,103,62,24,47,102,4,4,6,5,5,46,48,26,27,28,27,27,23,6,5,6,46,24,24,5,41,123,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,118,40,5,102,102,4,47,102,46,5,47,5,62,103,62,100,4,100,46,47,48,45,100,43,102,5,43,102,62,46,6,62,4,41,123,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,118,40,100,24,4,43,24,100,43,102,102,100,101,46,4,100,4,5,62,25,23,5,102,47,101,4,6,102,47,5,41,120,123,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,118,119,119,120,119,122,121,120,40,24,102,24,47,4,46,24,62,62,5,43,5,101,101,102,4,101,43,41,119,123,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,119,121,121,120,120,121,119,122,121,121,122,121,121,119,40,101,41,121,123,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,122,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,80,82,81,85,0,0,0,0,0,0,0,0,0,0,0,0,0,80,83,81,84,84,81,83,82,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,80,84,81,81,21,47,4,104,0,0,0,0,0,0,0,0,0,0,0,80,84,21,46,100,46,6,6,4,62,22,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,99,101,46,43,24,6,100,22,85,0,0,0,0,0,0,0,0,0,80,21,24,44,66,66,65,42,47,6,5,43,22,82,85,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,80,21,47,102,62,47,102,24,102,22,85,0,0,0,0,0,0,0,0,99,46,4,48,49,49,49,61,103,100,24,43,102,62,104,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,80,21,102,47,5,62,47,102,6,6,47,22,85,0,0,0,0,0,0,80,21,103,43,63,49,26,27,23,43,101,46,100,62,47,22,85,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,99,101,101,62,43,103,62,103,47,62,43,4,104,0,0,0,0,0,80,21,5,4,4,63,49,61,100,100,6,4,4,5,101,4,101,104,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,99,5,102,100,4,5,6,43,43,24,43,4,22,85,0,0,0,0,99,5,100,100,100,63,49,45,102,101,24,5,102,62,62,100,24,104,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,99,100,62,43,100,24,6,102,100,46,24,6,5,104,0,0,0,80,21,46,46,5,62,63,49,61,103,102,47,46,101,5,24,103,47,104,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,99,100,24,43,103,5,47,62,43,46,100,43,47,22,85,0,0,99,100,100,47,62,103,63,49,61,46,5,24,46,5,102,102,101,46,104,0,0,0,0,0,0,0,0,0,0,0,0, +0,80,21,103,103,44,65,66,65,42,47,24,102,5,6,46,104,0,80,21,5,102,43,6,103,63,49,45,4,5,46,43,100,47,62,5,24,104,0,0,0,0,0,0,0,0,0,0,0,0, +0,99,101,24,44,67,49,49,49,64,66,65,66,65,65,42,104,0,99,44,66,65,66,65,66,67,49,45,24,4,24,4,46,103,102,101,46,104,0,0,0,0,0,0,0,0,0,0,0,0, +0,99,46,101,63,49,49,49,49,49,49,49,49,49,49,45,104,0,99,63,49,49,49,49,49,49,49,45,46,100,103,101,62,6,101,102,101,104,0,0,0,0,0,0,0,0,0,0,0,0, +80,21,46,4,48,49,49,49,49,49,26,28,28,28,28,23,104,0,99,25,28,28,28,28,27,28,27,23,100,62,6,103,6,24,24,24,41,123,0,0,0,0,0,0,0,0,0,0,0,0, +99,100,102,24,25,29,49,49,49,49,45,62,43,103,62,100,104,0,99,4,101,103,100,5,101,43,46,43,100,4,43,103,43,103,103,5,104,0,0,0,0,0,0,0,0,0,0,0,0,0, +99,43,5,46,103,25,28,28,28,28,23,102,102,43,46,41,123,0,118,121,120,122,119,121,40,6,100,101,24,24,46,4,24,46,24,103,104,0,0,0,0,0,0,0,0,0,0,0,0,0, +118,121,40,4,101,5,46,4,100,103,24,47,4,6,41,123,0,0,0,0,0,0,0,0,118,40,101,62,100,102,47,24,46,46,41,119,123,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,118,122,122,120,40,100,6,47,62,100,46,47,104,0,0,0,0,0,0,0,0,0,0,118,120,122,122,122,122,121,120,120,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,118,121,119,119,122,122,120,122,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - + -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,450,451,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,490,491,0,0,0,0,0,45,46,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,86,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,290,291,0,0,0,291,290,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,309,0,0,0,0,0,309,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,309,0,0,0,0,0,309,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,328,329,312,0,329,329,328,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,290,291,0,0,0,291,290,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,309,0,0,0,0,0,311,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,290,291,0,0,0,291,291,292,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,309,0,0,0,0,0,311,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,309,0,0,0,0,0,0,311,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,328,329,0,0,329,329,330,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,309,0,0,0,0,0,0,311,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,328,329,329,0,329,329,329,330,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,410,411,412,413,414,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,429,430,431,432,433,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,552,553,554,0,0,0,0,0,0,448,449,450,451,452,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,571,572,573,0,0,0,0,0,0,467,468,469,470,471,0,0,0,0,0,710,711,712,713,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,590,591,592,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,729,730,731,732,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,609,610,611,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,748,749,750,751,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,767,768,769,770,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,628,629,630,631,632,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,647,648,649,650,651,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,785,786,787,788,789,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,666,667,668,669,670,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,804,805,806,807,808,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,685,686,687,688,689,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,823,824,825,826,827,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,842,843,844,845,846,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,71,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,90,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,109,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,269,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,269,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,369,0,368,369,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,233,0,0,0,234,0,0,0,234,0,0,0,0,0,0,0,97,0,0,0,0,0,0,236,0,0,0,0,236,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,348,0,348,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,0,0,0,0,236,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,270,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,350,0,366,367,236,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,233,96,289,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,115,116,117,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,117,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,232,0,0,0,0,0,0,250,0,0,0,646,719,646,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,665,0,665,0,0,0,0,0,0,0,269,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,274,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,352,353,354,355,356,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,371,372,373,374,375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,390,391,392,393,394,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,368,369,0,368,369,0,0,0,0,0,0,0,0,0,0,0,0,269,0,0,0,0,236,0,0,0,0,0,0,347,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,331,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,305,306,0,0,0,236,0,366,367,0,366,367,347,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,275,0,0,0,0,0,0,0,382,324,325,0,0,0,236,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,115,97,97,117,0,269,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,269,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/examples/maps/serene-village.tsx b/examples/maps/serene-village.tsx new file mode 100644 index 0000000..aec16da --- /dev/null +++ b/examples/maps/serene-village.tsx @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/tile-map.scm b/examples/tile-map.scm new file mode 100644 index 0000000..52d6b94 --- /dev/null +++ b/examples/tile-map.scm @@ -0,0 +1,100 @@ +(use-modules (chickadee) + (chickadee math vector) + (chickadee math rect) + (chickadee graphics color) + (chickadee graphics font) + (chickadee graphics tile-map) + (ice-9 format) + (ice-9 match) + (srfi srfi-11)) + +(define window-width 960) +(define window-height 540) +(define map #f) +(define prev-camera (vec2 0.0 0.0)) +(define camera (vec2 0.0 0.0)) +(define render-camera (vec2 0.0 0.0)) +(define text-position (vec2 4.0 4.0)) +(define text "0, 0") +(define (stats-message) + (format #f "fps: ~1,2f" + (/ 1.0 avg-frame-time))) +(define start-time 0.0) +(define avg-frame-time 16) +(define stats-text (stats-message)) +(define stats-text-pos (vec2 4.0 (- window-height 16.0))) +(define last-update start-time) +(define scroll-speed 6.0) + +(define (load) + (set! map (load-tile-map "maps/example3.tmx"))) + +(define (draw alpha) + ;; Linearly interpolate between the current camera position and the + ;; previous camera position based on the alpha value. This makes + ;; the scrolling appear much smoother because the Chickadee game + ;; loop does not render in lock-step with updates. + (let ((beta (- 1.0 alpha))) + (set-vec2-x! render-camera + (round + (+ (* (vec2-x camera) alpha) + (* (vec2-x prev-camera) beta)))) + (set-vec2-y! render-camera + (round + (+ (* (vec2-y camera) alpha) + (* (vec2-y prev-camera) beta))))) + (draw-tile-map map #:camera render-camera) + (draw-text text text-position #:color black) + (draw-text stats-text stats-text-pos #:color black) + (let ((current-time (elapsed-time))) + (set! avg-frame-time + (+ (* (- current-time start-time) 0.1) + (* avg-frame-time 0.9))) + (set! start-time current-time) + (when (>= (- current-time last-update) 1.0) + (set! stats-text (stats-message)) + (set! last-update current-time)))) + +(define (refresh-tile-coords x y) + (call-with-values (lambda () + (point->tile map + (+ x (vec2-x camera)) + (+ y (vec2-y camera)))) + (lambda (tx ty) + (set! text (format #f "~d, ~d" tx ty))))) + +(define (update dt) + (vec2-copy! camera prev-camera) + (set-vec2! camera + (min (max (+ (vec2-x camera) + (if (key-pressed? 'right) scroll-speed 0.0) + (if (key-pressed? 'left) (- scroll-speed) 0.0)) + 0.0) + (- (* (tile-map-width map) (tile-map-tile-width map)) + window-width)) + (min (max (+ (vec2-y camera) + (if (key-pressed? 'up) scroll-speed 0.0) + (if (key-pressed? 'down) (- scroll-speed) 0.0)) + 0.0) + (- (* (tile-map-height map) (tile-map-tile-height map)) + window-height))) + (when (or (key-pressed? 'left) (key-pressed? 'right) + (key-pressed? 'down) (key-pressed? 'up)) + (refresh-tile-coords (mouse-x) (mouse-y)))) + +(define (key-press key modifiers repeat?) + (match key + ((or 'escape 'q) (abort-game)) + (_ #t))) + +(define (mouse-move x y x-rel y-rel buttons) + (refresh-tile-coords x y)) + +(run-game #:window-width window-width + #:window-height window-height + #:window-title "tile map demo" + #:load load + #:draw draw + #:update update + #:key-press key-press + #:mouse-move mouse-move) diff --git a/examples/tiled.scm b/examples/tiled.scm deleted file mode 100644 index c528f74..0000000 --- a/examples/tiled.scm +++ /dev/null @@ -1,81 +0,0 @@ -(use-modules (chickadee) - (chickadee math vector) - (chickadee math rect) - (chickadee graphics color) - (chickadee graphics font) - (chickadee graphics tiled) - (ice-9 format) - (ice-9 match) - (srfi srfi-11)) - -(define map #f) -(define prev-camera (vec2 0.0 0.0)) -(define camera (vec2 0.0 0.0)) -(define render-camera (vec2 0.0 0.0)) -(define text-position (vec2 4.0 4.0)) -(define text "0, 0") -(define (stats-message) - (format #f "fps: ~1,2f" - (/ 1.0 avg-frame-time))) -(define start-time 0.0) -(define avg-frame-time 16) -(define stats-text (stats-message)) -(define stats-text-pos (vec2 4.0 464.0)) -(define last-update start-time) -(define scroll-speed 6.0) - -(define (load) - (set! map (load-tile-map "maps/example.tmx"))) - -(define (draw alpha) - ;; Linearly interpolate between the current camera position and the - ;; previous camera position based on the alpha value. This makes - ;; the scrolling appear much smoother because the Chickadee game - ;; loop does not render in lock-step with updates. - (let ((beta (- 1.0 alpha))) - (set-vec2-x! render-camera - (+ (* (vec2-x camera) alpha) - (* (vec2-x prev-camera) beta))) - (set-vec2-y! render-camera - (+ (* (vec2-y camera) alpha) - (* (vec2-y prev-camera) beta)))) - (draw-tile-map map #:camera render-camera) - (draw-text text text-position #:color black) - (draw-text stats-text stats-text-pos #:color black) - (let ((current-time (elapsed-time))) - (set! avg-frame-time - (+ (* (- current-time start-time) 0.1) - (* avg-frame-time 0.9))) - (set! start-time current-time) - (when (>= (- current-time last-update) 1000) - (set! stats-text (stats-message)) - (set! last-update current-time)))) - -(define (update dt) - (vec2-copy! camera prev-camera) - (set-vec2-x! camera - (+ (vec2-x camera) - (if (key-pressed? 'right) scroll-speed 0.0) - (if (key-pressed? 'left) (- scroll-speed) 0.0))) - (set-vec2-y! camera - (+ (vec2-y camera) - (if (key-pressed? 'up) scroll-speed 0.0) - (if (key-pressed? 'down) (- scroll-speed) 0.0)))) - -(define (key-press key modifiers repeat?) - (match key - ((or 'escape 'q) (abort-game)) - (_ #t))) - -(define (mouse-move x y x-rel y-rel buttons) - (let-values (((tx ty) (point->tile map (- x (vec2-x camera)) (- y (vec2-y camera))))) - (set! text (format #f "~d, ~d" tx ty)))) - -(run-game #:window-width 640 - #:window-height 480 - #:window-title "tile map demo" - #:load load - #:draw draw - #:update update - #:key-press key-press - #:mouse-move mouse-move) -- cgit v1.2.3