From 1e8f690745d03166400c6f77a8abb3693ffd3c01 Mon Sep 17 00:00:00 2001 From: Massena Date: Thu, 23 Dec 2021 15:13:06 +0100 Subject: [PATCH] shipost level (100%) --- CMakeLists.txt | 2 + assets-cg/fxconv-metadata.txt | 4 + assets-cg/tileset.png | Bin 0 -> 1646 bytes include/conf.h | 4 + include/level.h | 11 +++ include/type.h | 2 + levels/test.lua | 70 +++++++++++++++++ levels/test.tmx | 39 ++++++++++ levels/tileset.tsx | 4 + src/level.c | 138 ++++++++++++++++++++++++++++++++++ src/main.c | 3 + 11 files changed, 277 insertions(+) create mode 100644 assets-cg/fxconv-metadata.txt create mode 100644 assets-cg/tileset.png create mode 100644 include/level.h create mode 100644 levels/test.lua create mode 100644 levels/test.tmx create mode 100644 levels/tileset.tsx create mode 100644 src/level.c diff --git a/CMakeLists.txt b/CMakeLists.txt index c4c0765..a4928ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,9 +16,11 @@ set(SOURCES src/player.c src/input.c src/tools.c + src/level.c ) set(ASSETS_cg + assets-cg/tileset.png ) fxconv_declare_assets(${ASSETS} ${ASSETS_fx} ${ASSETS_cg} WITH_METADATA) diff --git a/assets-cg/fxconv-metadata.txt b/assets-cg/fxconv-metadata.txt new file mode 100644 index 0000000..b4e6115 --- /dev/null +++ b/assets-cg/fxconv-metadata.txt @@ -0,0 +1,4 @@ +*.png: + type: bopti-image + profile: p8 + name_regex: (.*)\.png img_\1 diff --git a/assets-cg/tileset.png b/assets-cg/tileset.png new file mode 100644 index 0000000000000000000000000000000000000000..c38990fc37d7bb6780f4e1fc5299c893eba6dd98 GIT binary patch literal 1646 zcmV-!29f!RP)Px*C`m*?RCt`-TRmtSR~-LcxioG=jU^kqOO{kB@z?}uu!c^7#E^o673{?!#vN{| zaN@y`ObvK&4eq4DMxkCTB7;c_ZlO~P_HZI8bg@&bOS;s;mO?V5A%^Q9ztg*?_ujqx zk|qD((B1pEd#B(3>;2z54FFQ<2@5_@Hj5enx4yDA8e7n(yWTGlULChSGb$|Rw=4jd zGe(8aByB{H_4P6a5pLEWw;Hs3INdb`Rp$b=K33l8z5yg(nbou<(ubc4PH#VA0eQ% znC(mINV%8$+c5yG;pCk6OAZ=)xrBpobNvko00GzmAJRt3CZCj@1^Dsre)`NAqne0V zx;zvMAOgn{XaKCeTmpN!mgZz2mVj`TX(Si1Qh{5}b0?y<1gr*mL6G1sXkZuyTm^tk z2SwMA6X^DWp^^VxV%V;ug+SK!er4Csz?){N^igdSrK@lRfo!m+Qs)&rra#T^ba>I`c5A*YQDh4MtKFhB zFwY9a&t1bs!@z}?4{+h-16(u=#Lr!`>zDK20sx*oUc-~eYmTzB1TR|crCpQ)BMbsr z3qXkH1c7*(_z>qm9>z#I3810nPZMRpY}DtBhq!%r%5L9{Zh&Zv+iXGR4o=JG%QAru z7a-GgUY>xUY!+?J1{#`PHj6C-Ar_!p-2j<~`-#khx(L6*BU-;8<$BpHYN_;ur4j_P z=O@d-0AQ8PA~IK7NY_XmEf756P{m0K*HL!Avg?@Ik!he?TR%_@$YhzjPQs}V%8E*Z5Uu`=ceprer zX~#ge9$4_a2#u(%TZWK_PS$1_M5~&fQ^6t-@{h-7r0w*LRUDRLRv1E{3N||^g2)QA zYjcO{EF#Rc2c-=mZa6H(tmE++DfxPJ1$uSGZlh`~yn@y0SgC;ey9Gx%PxD28KF{=b zLJr?6NC3;eXJ{6Hg + + + + + + + +5,6,7,8,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,5,6,7,8, +21,22,23,24,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,21,22,23,24, +37,38,39,40,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,29,0,0,30,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,37,38,39,40, +53,54,55,56,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,45,35,36,46,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,53,54,55,56, +1,2,33,34,13,13,13,13,13,19,19,19,19,19,13,13,13,13,13,13,13,13,29,0,51,52,0,30,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,33,34,1,2, +17,18,49,50,13,13,13,13,19,13,13,13,13,13,19,13,13,13,13,13,13,13,45,0,0,0,0,46,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,49,50,17,18, +1,2,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,29,0,0,48,48,0,0,30,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,1,2, +17,18,13,13,13,13,13,13,13,4,13,13,13,4,13,13,13,13,13,13,13,45,0,0,64,64,0,0,46,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,17,18, +1,2,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,29,0,0,0,64,64,0,0,0,30,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,1,2, +17,18,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,45,0,0,0,64,64,0,0,0,46,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,17,18, +1,2,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,29,0,0,0,0,64,64,0,0,0,0,30,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,1,2, +17,18,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,45,0,0,0,0,64,64,0,0,0,0,46,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,17,18, +1,2,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,29,0,0,0,0,0,64,64,0,0,0,0,0,30,3,3,19,3,13,13,13,13,13,13,13,13,13,13,13,13,1,2, +17,18,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,45,0,0,0,0,0,64,64,0,0,0,0,0,46,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,17,18, +1,2,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,29,0,0,0,0,0,0,64,64,0,0,0,0,0,0,30,13,13,13,13,13,13,4,20,4,13,13,13,13,13,13,1,2, +17,18,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,45,0,0,0,0,0,0,64,64,0,0,0,0,0,0,46,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,17,18, +1,2,13,13,13,13,13,13,13,13,13,13,13,13,13,13,29,0,0,0,0,0,0,0,64,64,0,0,0,0,0,0,0,30,13,13,13,13,13,13,13,13,13,13,13,13,13,13,1,2, +17,18,13,13,13,13,13,13,13,13,13,13,13,13,13,13,45,9,10,0,0,0,0,0,64,64,0,0,0,0,0,0,0,46,13,13,13,13,13,13,13,13,13,13,13,13,13,13,17,18, +1,2,13,13,13,13,13,13,13,13,13,13,13,13,13,29,0,25,26,0,0,0,0,0,64,64,0,0,0,0,0,0,0,19,19,4,4,13,13,13,13,13,13,13,13,13,13,13,1,2, +17,18,13,13,13,13,13,13,13,13,13,13,13,13,13,45,0,41,42,0,0,0,0,0,64,64,0,0,0,0,0,0,0,0,46,13,13,13,13,13,13,13,13,13,13,13,13,13,17,18, +1,2,13,13,13,13,13,13,13,13,13,13,13,13,29,0,0,57,58,0,0,0,0,0,64,64,0,0,0,0,0,0,0,0,0,30,13,13,13,13,13,13,13,13,13,13,13,13,1,2, +17,18,13,13,13,13,13,19,19,4,4,13,13,13,45,4,4,19,4,4,0,0,0,0,64,64,0,14,0,15,0,14,0,0,0,46,13,13,13,4,20,20,19,13,13,13,13,13,17,18, +1,2,33,34,13,13,13,13,13,13,13,13,13,29,0,16,0,0,0,16,0,0,0,0,64,64,0,0,0,0,0,0,0,0,0,0,30,13,13,13,13,13,13,13,13,13,33,34,1,2, +17,18,49,50,13,13,13,13,13,13,13,13,13,45,0,32,0,0,0,32,0,0,0,0,64,64,0,0,0,0,0,0,0,0,0,0,46,13,13,13,13,13,13,13,13,13,49,50,17,18, +5,6,7,8,19,13,13,13,13,13,13,13,29,0,0,16,0,0,0,16,0,0,0,0,64,64,0,0,0,0,0,0,0,0,0,0,0,30,13,13,13,13,13,13,13,19,5,6,7,8, +21,22,23,24,3,13,13,13,13,13,13,13,45,0,0,32,0,0,0,32,0,0,0,0,64,64,0,0,0,0,0,0,0,0,0,0,0,46,13,13,13,13,13,13,13,3,21,22,23,24, +37,38,39,40,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,37,38,39,40, +53,54,55,56,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,17,18,53,54,55,56 + + + diff --git a/levels/tileset.tsx b/levels/tileset.tsx new file mode 100644 index 0000000..d5344a4 --- /dev/null +++ b/levels/tileset.tsx @@ -0,0 +1,4 @@ + + + + diff --git a/src/level.c b/src/level.c new file mode 100644 index 0000000..18c2f0a --- /dev/null +++ b/src/level.c @@ -0,0 +1,138 @@ +#include "level.h" +#include "conf.h" +#include +#include +#include + +static struct Level level; +static void level_free(void); +static void level_load(void); + +extern bopti_image_t img_tileset; + +void +level_init(void) +{ + level = (struct Level){ + .w = 50, + .h = 28, + }; + level.s = level.w * level.h; + level_free(); + level_load(); +} + +void +level_draw(void) +{ + for (int m = 0; m < level.h; ++m) { + for (int n = 0; n < level.w; ++n) { + tile_t tile = level.data[n + m * level.w]; + dsubimage(n * TILE_S, m * TILE_S, &img_tileset, + ((tile - 1) % TILESET_W) * TILE_S, + ((tile - 1) / TILESET_W) * TILE_S, TILE_S, + TILE_S, 0); + /* dprint(n * TILE_S - camera.x, m * TILE_S - camera.y, + * C_BLACK, "%d", tile); */ + } + } +} + +static void +level_free(void) +{ + level.data = (tile_t *)malloc(level.s * sizeof(tile_t)); +} + +static void +level_load(void) +{ + /* TODO : LEVEL LOADING */ + + tile_t data[] = { + 5, 6, 7, 8, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, + 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, + 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 7, 8, 21, + 22, 23, 24, 17, 18, 17, 18, 17, 18, 17, 18, 17, 18, 17, 18, 17, 18, + 17, 18, 17, 18, 17, 18, 17, 18, 17, 18, 17, 18, 17, 18, 17, 18, 17, + 18, 17, 18, 17, 18, 17, 18, 17, 18, 17, 18, 21, 22, 23, 24, 37, 38, + 39, 40, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 29, 0, 0, 30, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 37, 38, 39, 40, 53, 54, 55, + 56, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 45, 35, 36, 46, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 53, 54, 55, 56, 1, 2, 33, 34, + 13, 13, 13, 13, 13, 19, 19, 19, 19, 19, 13, 13, 13, 13, 13, 13, 13, + 13, 29, 0, 51, 52, 0, 30, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 33, 34, 1, 2, 17, 18, 49, 50, 13, + 13, 13, 13, 19, 13, 13, 13, 13, 13, 19, 13, 13, 13, 13, 13, 13, 13, + 45, 0, 0, 0, 0, 46, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 49, 50, 17, 18, 1, 2, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 29, 0, + 0, 48, 48, 0, 0, 30, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 1, 2, 17, 18, 13, 13, 13, 13, 13, + 13, 13, 4, 13, 13, 13, 4, 13, 13, 13, 13, 13, 13, 13, 45, 0, 0, + 64, 64, 0, 0, 46, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 17, 18, 1, 2, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 29, 0, 0, 0, 64, + 64, 0, 0, 0, 30, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 1, 2, 17, 18, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 45, 0, 0, 0, 64, 64, + 0, 0, 0, 46, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 17, 18, 1, 2, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 29, 0, 0, 0, 0, 64, 64, 0, + 0, 0, 0, 30, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 1, 2, 17, 18, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 45, 0, 0, 0, 0, 64, 64, 0, 0, + 0, 0, 46, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 17, 18, 1, 2, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 29, 0, 0, 0, 0, 0, 64, 64, 0, 0, 0, + 0, 0, 30, 3, 3, 19, 3, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 1, 2, 17, 18, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 45, 0, 0, 0, 0, 0, 64, 64, 0, 0, 0, 0, + 0, 46, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 17, 18, 1, 2, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 29, 0, 0, 0, 0, 0, 0, 64, 64, 0, 0, 0, 0, 0, + 0, 30, 13, 13, 13, 13, 13, 13, 4, 20, 4, 13, 13, 13, 13, 13, 13, + 1, 2, 17, 18, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 45, 0, 0, 0, 0, 0, 0, 64, 64, 0, 0, 0, 0, 0, 0, + 46, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 17, + 18, 1, 2, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 29, 0, 0, 0, 0, 0, 0, 0, 64, 64, 0, 0, 0, 0, 0, 0, 0, + 30, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 1, 2, + 17, 18, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 45, + 9, 10, 0, 0, 0, 0, 0, 64, 64, 0, 0, 0, 0, 0, 0, 0, 46, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 17, 18, 1, + 2, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 29, 0, 25, + 26, 0, 0, 0, 0, 0, 64, 64, 0, 0, 0, 0, 0, 0, 0, 19, 19, + 4, 4, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 1, 2, 17, 18, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 45, 0, 41, 42, + 0, 0, 0, 0, 0, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 46, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 17, 18, 1, 2, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 29, 0, 0, 57, 58, 0, + 0, 0, 0, 0, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 1, 2, 17, 18, 13, 13, + 13, 13, 13, 19, 19, 4, 4, 13, 13, 13, 45, 4, 4, 19, 4, 4, 0, + 0, 0, 0, 64, 64, 0, 14, 0, 15, 0, 14, 0, 0, 0, 46, 13, 13, + 13, 4, 20, 20, 19, 13, 13, 13, 13, 13, 17, 18, 1, 2, 33, 34, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 29, 0, 16, 0, 0, 0, 16, 0, 0, + 0, 0, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 33, 34, 1, 2, 17, 18, 49, 50, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 45, 0, 32, 0, 0, 0, 32, 0, 0, 0, + 0, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 49, 50, 17, 18, 5, 6, 7, 8, 19, 13, 13, + 13, 13, 13, 13, 13, 29, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, + 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 13, 13, 13, + 13, 13, 13, 13, 19, 5, 6, 7, 8, 21, 22, 23, 24, 3, 13, 13, 13, + 13, 13, 13, 13, 45, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 0, 64, + 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 13, 13, 13, 13, + 13, 13, 13, 3, 21, 22, 23, 24, 37, 38, 39, 40, 1, 2, 1, 2, 1, + 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, + 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, + 2, 1, 2, 37, 38, 39, 40, 53, 54, 55, 56, 17, 18, 17, 18, 17, 18, + 17, 18, 17, 18, 17, 18, 17, 18, 17, 18, 17, 18, 17, 18, 17, 18, 17, + 18, 17, 18, 17, 18, 17, 18, 17, 18, 17, 18, 17, 18, 17, 18, 17, 18, + 17, 18, 53, 54, 55, 56}; + + memcpy(level.data, data, sizeof(data)); +} diff --git a/src/main.c b/src/main.c index 15e2dc6..4459259 100644 --- a/src/main.c +++ b/src/main.c @@ -1,6 +1,7 @@ #include "main.h" #include "draw.h" #include "input.h" +#include "level.h" #include "player.h" static int running = 1; @@ -28,6 +29,7 @@ static void init(void) { input_init(); + level_init(); } static void @@ -41,6 +43,7 @@ static void draw(void) { dclear(C_WHITE); + level_draw(); player_draw(); dupdate(); }