From bd868143b8836787cf76d7df41113ebfd29a302f Mon Sep 17 00:00:00 2001 From: Shadow15510 Date: Sun, 4 Jul 2021 22:44:08 +0200 Subject: [PATCH] World gestion : displaying and collisions --- .gitignore | 12 +++--- pictures/nouvelles images/tileset.png | Bin 1583 -> 1626 bytes project/CMakeLists.txt | 2 +- project/assets-fx/converters.py | 15 +++++-- .../{maps => map}/fxconv-metadata.txt | 2 +- project/assets-fx/map/world.csv | 16 ++++++++ project/assets-fx/maps/one.csv | 8 ---- project/assets-fx/tileset.png | Bin 1590 -> 1657 bytes project/assets-fx/water_animation.png | Bin 0 -> 254 bytes project/src/core.c | 37 ++++++++++++++---- project/src/core.h | 18 +++++---- project/src/display_engine.c | 10 ++--- project/src/main.c | 17 ++------ 13 files changed, 84 insertions(+), 53 deletions(-) rename project/assets-fx/{maps => map}/fxconv-metadata.txt (64%) create mode 100644 project/assets-fx/map/world.csv delete mode 100644 project/assets-fx/maps/one.csv create mode 100644 project/assets-fx/water_animation.png diff --git a/.gitignore b/.gitignore index 2baf2a6..b2c63b6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,12 @@ # Build files -projet/build-fx -projet/build-cg +project/build-fx +project/build-cg # Executables -projet/Odyssee.g1a -projet/Odyssee.g3a +project/Odyssee.g1a +project/Odyssee.g3a # Python bytecode -projet/__pycache__/* -projet/assets-fx/__pycache__/* +project/__pycache__/* +project/assets-fx/__pycache__/* diff --git a/pictures/nouvelles images/tileset.png b/pictures/nouvelles images/tileset.png index 8a02821b53c00458e64c4617d2391236c788bc2d..2578efaa57c809eb7001d500afd1cfa65974f7b5 100644 GIT binary patch delta 1597 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 Ef{~9T0ssI2 diff --git a/project/CMakeLists.txt b/project/CMakeLists.txt index c96cc37..69efc88 100644 --- a/project/CMakeLists.txt +++ b/project/CMakeLists.txt @@ -25,7 +25,7 @@ set(ASSETS_fx assets-fx/bgrounds.png assets-fx/tileset.png assets-fx/player.png - assets-fx/maps/one.csv + assets-fx/map/world.csv # ... ) set(ASSETS_cg diff --git a/project/assets-fx/converters.py b/project/assets-fx/converters.py index ce225a7..315f68a 100644 --- a/project/assets-fx/converters.py +++ b/project/assets-fx/converters.py @@ -2,7 +2,7 @@ import fxconv def convert(input_name, output, params, target): - if params["custom-type"] == "map_t": + if params["custom-type"] == "map": convert_map(input_name, output, params, target) return 0 else: @@ -13,12 +13,19 @@ def convert_map(input_name, output, params, target): # Read informations with open(input_name, "r") as file: csv_data = file.read().splitlines() - + + walkable = [-1, 11, 12, 13, 14, 15, 16, 17, 18, 20, 24, 25, 26, 30, 31, 37, 43, 44, 45, 62, 63, 64] + # Convertion into bytes - data = bytes() + tiles = bytes() + collision = bytes() for line in csv_data: for value in line.split(","): - data += fxconv.u32(int(value)) + value = int(value) + tiles += fxconv.u32(value) + collision += fxconv.u8(int(value in walkable)) + data = fxconv.ObjectData() + data += tiles + collision fxconv.elf(data, output, "_" + params["name"], **target) diff --git a/project/assets-fx/maps/fxconv-metadata.txt b/project/assets-fx/map/fxconv-metadata.txt similarity index 64% rename from project/assets-fx/maps/fxconv-metadata.txt rename to project/assets-fx/map/fxconv-metadata.txt index fc11c64..1212ba0 100644 --- a/project/assets-fx/maps/fxconv-metadata.txt +++ b/project/assets-fx/map/fxconv-metadata.txt @@ -1,3 +1,3 @@ *.csv: - custom-type: map_t + custom-type: map name_regex: (.*)\.csv map_\1 diff --git a/project/assets-fx/map/world.csv b/project/assets-fx/map/world.csv new file mode 100644 index 0000000..b4619a0 --- /dev/null +++ b/project/assets-fx/map/world.csv @@ -0,0 +1,16 @@ +-1,65,66,66,67,-1,50,-1,-1,-1,0,1,1,1,1,2,30,-1,-1,-1,27,28,27,28,29,29,29,29,29,-1,-1,-1 +-1,84,85,84,84,-1,50,-1,22,23,19,30,64,-1,83,21,-1,-1,64,-1,46,47,46,47,44,-1,-1,-1,49,-1,-1,44 +29,84,84,86,85,29,29,-1,41,42,38,-1,-1,11,-1,21,-1,-1,-1,-1,84,85,84,84,-1,-1,24,-1,-1,-1,-1,-1 +-1,33,-1,11,-1,-1,-1,-1,-1,-1,57,58,58,58,-1,21,29,29,29,29,84,84,86,84,83,83,51,-1,49,-1,-1,-1 +-1,-1,-1,-1,11,-1,-1,30,-1,-1,11,-1,-1,-1,-1,40,11,-1,64,-1,-1,-1,44,-1,29,29,29,29,29,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,58,58,58,59,-1,-1,-1,-1,-1,-1,44,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,13,-1,-1,-1,-1,13,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,-1,44,-1,-1 +-1,-1,-1,-1,-1,-1,64,-1,-1,-1,-1,-1,-1,15,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1 +-1,-1,26,-1,64,-1,-1,-1,-1,-1,26,24,-1,-1,-1,-1,34,35,36,-1,-1,-1,-1,18,-1,-1,18,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,64,-1,-1,-1,-1,-1,-1,-1,0,1,53,54,55,2,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,-1 +-1,-1,-1,64,30,-1,-1,0,1,1,1,1,1,1,19,33,-1,-1,44,21,2,18,-1,44,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,19,22,23,52,-1,52,62,38,-1,-1,-1,44,40,21,-1,-1,-1,-1,11,-1,-1,-1,-1,-1,-1 +-1,15,-1,-1,-1,-1,15,19,41,42,-1,-1,-1,-1,57,58,58,58,20,59,21,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1 +-1,-1,-1,-1,-1,-1,-1,38,-1,-1,49,-1,-1,-1,-1,-1,-1,-1,-1,52,21,-1,-1,44,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,15,-1,-1,-1,-1,57,58,58,58,58,20,58,58,58,58,58,58,58,59,-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,-1,-1,-1,-1,-1,-1,-1,-1 diff --git a/project/assets-fx/maps/one.csv b/project/assets-fx/maps/one.csv deleted file mode 100644 index b385b37..0000000 --- a/project/assets-fx/maps/one.csv +++ /dev/null @@ -1,8 +0,0 @@ -19,-1,0,0,1,1,1,1,1,1,2,1,1,1,2,2 -19,43,19,19,-1,62,3,-1,-1,62,21,-1,-1,-1,21,21 -19,-1,19,19,62,-1,-1,44,43,-1,21,-1,-1,-1,21,21 -19,-1,19,38,-1,-1,64,64,-1,-1,40,-1,-1,-1,21,21 -19,-1,38,57,58,20,58,58,58,58,59,-1,-1,-1,40,21 -19,62,57,58,58,20,58,58,58,58,58,58,20,58,59,21 -38,-1,-1,-1,30,-1,-1,43,-1,83,-1,-1,-1,-1,64,40 -57,58,58,58,58,58,58,58,58,58,58,58,58,58,58,59 diff --git a/project/assets-fx/tileset.png b/project/assets-fx/tileset.png index 7f2108cc8a09144a808a064a82d582f18316f003..74c3e4e2d6dae9b4ace80e9841b074df60762a7e 100644 GIT binary patch delta 1628 zcmV-i2BZ154EYR@Fn$+xIGq9F|y2uTh_UWVOym zRsKnDWf>ywr+41qEKX1owXNc+%9vA<*-F^#I-fMY8t{rMu768Ab4Gn`?T2Mf&$%t* zRF3ac`8NO%f$(pg)1UjDP(MjV*}mK>xf>K}1f~ z2Xw#H>YgL%%j11F`qWoQlGlsqFaz05boh!a^0^qD> zh%Y3FW6f_D+JB8~+sAS0`v%XY=$7}nZ_Ow-V;mhVW=wvL2tC8dw(i9%t(-G9&A=1& z>EoDa()}DC`lHc!JG%_qPt0GSdRLcf4P2IZnmJN;jmW9~sk5k@&h4B6iTg65zL0f4 z%=YdTPBav&4!ZLw0!hDmtp?4p$9Po6$q|ck&VIkwX@9HlD0IBS(K&>8xhJ!ah#O_E zcX)5!Gb(ZlAqSPDoFe;S+Ar;-Qwe8yasRmGwWH?du3ZlI@vVJUJD=AjC)RIU+kBnh zrBim!T#7;I|M!#Wr}I@c+lV5M1&W=_LP$cVk$pRWGtv0y~pQl=z4~q3yu5>9!8qq zD7%=tgi7%}qp za6%%cmp6jl$SlxsV&So6#^I2_k~RPGX6^6Vf>Xcdsqr<>+c?@*U((2E%{$u4l5+V; zUspfxzHCutdjIsE>b;f?T@mb$d8$ui0kqeD1d-R~v?}vy&LcQ+jnRBxrpRjmEEp^9 z2Y+|ZM``m^|MIOp*}fygtSur2_OT3(xd>c;HQcZo0xUa8%Yt3G18h=#GA+hq#eL zyiOvET-G7lLIeWHSkt-cA;=wzc~K^Mn{XxiLv76BJJOsB(p@(g$hh69C^E zIQQo5^FN-xK3`z~&KXGUU(H|-6UGIqw!h=WTf|uDPh0vQV}hv}RrRs3-nUpS?2*Q3 z7|SZT0zrqKi1&d=dAo;JHaE_wo`3qEB*AlZHil9l$(-WWc_%zjfOfU0VFDIpu?4Ao zejhXbwNz=*=(qC!^K{Y(vR#(t=($Zjmiai<<=t=_NZX^&PuJ^zj?RD&-Z9?A__2q$ zDrKKL`2TD(+;FF_^FD*}WeofDYIgrGsEFj%7r;l6Jgr=(nkV^DG4fio#(!el8plgI z0=563#vz(PM(5aYy_aT^Xyth$moJ(0Xy&YR>aeF*4=wOfj#d`;(*<>76eZ^0RsjhJ z;Qvi0u2$NEB$~LJcOT90huUZ0^y4p9yevYDHBDdPJQg*ann7NVLid*l7vaz<6m!O9 zwAYJ!$BU^Ar)s=psH=Ccoqzmpl9$b-l!5Ir{5}T#g8%=3PVZL0lSa!6)}tw>BuAq2 zyA_DklZA)j@UdiL`|(VA5KrZVQ}DnOwuC2`Aehk$b!^Dv#jm#;wSu(S)Lemr4*(wv z!oA>uXDjJFgM`R=H@*3wsvigEmL$yRMLb_=?Iz{4`StIs|AyY~sZ~!rFv0rUqj_lk z7Fzp!gmLk|ZXAc+4yk+r++yPHyKsHDj&(FYJ%Fd$Z*P?*6g&YGJeGn?O?t(cRPn&^ aV(MRrbbMjt#>bif0000m z_6t9%3;|?Ww%4*O3z(UiVfpcMxESYYV_wHdIU9hLl0l<>~hPiPDgUOfVvPMt&K&d&pUl&L}T^m)iExg7xst?y2 zUrXO&t$zx+NiVh6N~%}sTb5c9sccHjz485PsZ&TMPL+RFYg}t>Ys;`is%q_7YL)8I zTkP1HILrE(jQlfhq)mZ0;$~LTH0AJVFRN|oDr#-TI&ng{CAH$#1K+<$Z@H!Rx}Nz| zKd4rI!x=Xe3?wn#2QXl2DMkZ=dyXLRL}reL|9`y$L5JgA0t8Y6+&FVscU!8e>ow)Q z?PN>MGcvrrsVphizt!a$+x3ubQS`EEscN+utUqR{9@dF&qOIT}OSIP}cX`c!dY`M) z++Uz;V*uF87r7wMnf|}v{}(6;{`*v92DP;9ms!15OT+uV7M99&Z}(R@@j%0zxVJyT z@qd&q|2{pl{0q!&RV{$OkOVNr2{l&mt?&|G?1X;LR%*}f?&ZRXqg5^DCZv9BK-|=1(CjC^q^ya%+s@S!d zD{XHVDZR|~2I4inO+VzVN@~l#_LQ~ie}6B~l)IU>-SjjK5KReA`z;i>i_Ld*EY^9zK>MM*%R*SJSO0uNWBVX!*n+!Omd)3;utBP8^PJ zrDc0ze~+p!Q$JPpU2*Mbd!#=$Q*RQ|CCf`Ahw{#ovhb z`mkr}sqLu`w^Zg>^cVd90-avn0j1_G&sg`S`W^l_^!DlwM5>2{8~7N)@cB>C$D>17 zsy}cVZn%R}c!mLn5jF7=y?^Yn=;feJLE1<;SD@e>z&p+}uxH$GpHq5wD2#U;jb6M_ zO&K!)>V0*jGXRzs8=p^%O?)|m&@{meD z&u~oK(lK7fTk6s5^Z=I1-`*w~P;duO<_&8Cazsna_~7bzKJ|ZOQxZ$v;X`cX00000 LNkvXXu0mjf66YR) diff --git a/project/assets-fx/water_animation.png b/project/assets-fx/water_animation.png new file mode 100644 index 0000000000000000000000000000000000000000..53b1768e9f5a09123568a184468af605be0817b2 GIT binary patch literal 254 zcmVPx#xJg7oR5*>DlTi+YFbG6B8t2_paI?1`TMCR-lQpqc+wvF&4V)kV_Bh|?)9^j_ zu{ZVzzIN0d?bL78+bPTFno3@Y4z6ef9qn7mQ8a?Cs6{qKgQ_m=bzIS0R3m7u5o2F6 z>>b^!aZ-IoBj{=TWL7EcS#|07Y_zYUcGVsA+>6}>U2|-rbE(kX_4585ji9d$JzHa$ z^$+@_OwkBhU6|>|jxx}i@!iiq(bneGi;70jX?*X+FIMLI&`ZL|9smFU07*qoM6N<$ Ef@g+rhX4Qo literal 0 HcmV?d00001 diff --git a/project/src/core.c b/project/src/core.c index 8ce518b..1d457a4 100644 --- a/project/src/core.c +++ b/project/src/core.c @@ -9,28 +9,24 @@ void analyze_input(struct game *game, const int last_key) game->total_tick += ENGINE_TICK; switch (last_key) { - case 0: - if (!(game->total_tick % 500)) game->player.animation_frame = (game->player.animation_frame + 1) % 2; - break; - case KEY_UP: + if (is_walkable(*game, UP)) game->world_y -= 1; game->player.direction = UP; - game->player.y -= 2; break; case KEY_RIGHT: + if (is_walkable(*game, RIGHT)) game->world_x += 1; game->player.direction = RIGHT; - game->player.x += 2; break; case KEY_DOWN: + if (is_walkable(*game, DOWN)) game->world_y += 1; game->player.direction = DOWN; - game->player.y += 2; break; case KEY_LEFT: + if (is_walkable(*game, LEFT)) game->world_x -= 1; game->player.direction = LEFT; - game->player.x -= 2; break; } } @@ -51,4 +47,29 @@ int callback_tick(volatile int *tick) { *tick = 1; return TIMER_CONTINUE; +} + + +int is_walkable(const struct game game, const int direction) +{ + switch (direction) + { + case UP: + return game.map.collision[game.world_y + 4][game.world_x + 7]; + break; + + case RIGHT: + return game.map.collision[game.world_y + 5][game.world_x + 8]; + break; + + case DOWN: + return game.map.collision[game.world_y + 6][game.world_x + 7]; + break; + + case LEFT: + return game.map.collision[game.world_y + 5][game.world_x + 6]; + break; + } + return 0; + } \ No newline at end of file diff --git a/project/src/core.h b/project/src/core.h index f71474b..e55178e 100644 --- a/project/src/core.h +++ b/project/src/core.h @@ -8,8 +8,10 @@ #define TILESET_WIDTH 19 #define TILE_SIZE 8 -#define MAP_WIDTH 16 -#define MAP_HEIGHT 8 +#define MAP_WIDTH 32 +#define MAP_HEIGHT 16 +#define SCREEN_WIDTH 16 +#define SCREEN_HEIGHT 8 #define UP 0 #define RIGHT 1 @@ -18,21 +20,21 @@ struct player { - int x, y; - - int direction, animation_frame; + int direction; }; -struct map_t +struct map { int data[MAP_HEIGHT][MAP_WIDTH]; + + uint8_t collision[MAP_HEIGHT][MAP_WIDTH]; }; struct game { // Current map and coord's map in the world - struct map_t map; + struct map map; int world_x, world_y; struct player player; @@ -49,4 +51,6 @@ int rtc_key(void); // callback_tick : timer's function int callback_tick(volatile int *tick); +int is_walkable(const struct game game, const int direction); + #endif /* _CORE_H */ \ No newline at end of file diff --git a/project/src/display_engine.c b/project/src/display_engine.c index 07e0304..43f6849 100644 --- a/project/src/display_engine.c +++ b/project/src/display_engine.c @@ -8,13 +8,13 @@ void draw_map(const struct game game) { extern const bopti_image_t img_tileset; - for (int i = 0; i < MAP_HEIGHT; i ++) + for (int i = 0; i < SCREEN_HEIGHT; i ++) { - for (int j = 0; j < MAP_WIDTH; j++) + for (int j = 0; j < SCREEN_WIDTH; j++) { - if (game.map.data[i][j] != -1) + if (game.map.data[game.world_y + i][game.world_x + j] != -1 && game.world_y + i < (MAP_HEIGHT) && game.world_y + i >= 0 && game.world_x + j < (MAP_WIDTH) && game.world_x + j >= 0) { - int tile_x = (TILE_SIZE + 1) * (game.map.data[i][j] % TILESET_WIDTH), tile_y = (TILE_SIZE + 1) * (game.map.data[i][j] / TILESET_WIDTH); + int tile_x = (TILE_SIZE + 1) * (game.map.data[game.world_y + i][game.world_x + j] % TILESET_WIDTH), tile_y = (TILE_SIZE + 1) * (game.map.data[game.world_y + i][game.world_x + j] / TILESET_WIDTH); dsubimage(j * TILE_SIZE, i * TILE_SIZE, &img_tileset, tile_x, tile_y, 8, 8, DIMAGE_NONE); } } @@ -26,5 +26,5 @@ void draw_player(const struct game game) { extern const bopti_image_t img_player; - dsubimage(game.player.x, game.player.y, &img_player, 9 * game.player.animation_frame, 13 * game.player.direction, 8, 12, DIMAGE_NONE); + dsubimage(56, 35, &img_player, 0, 13 * game.player.direction, 8, 12, DIMAGE_NONE); } diff --git a/project/src/main.c b/project/src/main.c index 92de782..70b01be 100644 --- a/project/src/main.c +++ b/project/src/main.c @@ -88,21 +88,14 @@ void title_screen(void) void main_loop(void) { - extern const struct map_t map_one; + extern const struct map map_world; int key = 0; - static volatile int tick = 0; - int t = timer_configure(TIMER_ANY, ENGINE_TICK*1000, GINT_CALL(callback_tick, &tick)); - if (t >= 0) timer_start(t); - - struct player player = {8, 0, 2, 0}; - struct game game = {map_one, 0, 0, player, 0}; + struct player player = {DOWN}; + struct game game = {map_world, 0, 0, player, 0}; while (key != KEY_EXIT) { - while (!tick) sleep(); - tick = 0; - dclear(C_WHITE); draw_map(game); @@ -110,9 +103,7 @@ void main_loop(void) dupdate(); - key = rtc_key(); + key = getkey().key; analyze_input(&game, key); } - - if (t >= 0) timer_stop(t); } \ No newline at end of file