diff --git a/JTMM.g3a b/JTMM.g3a index 3cd77af..7295e5e 100644 Binary files a/JTMM.g3a and b/JTMM.g3a differ diff --git a/include/collide.h b/include/collide.h index 25f3a53..88786e1 100644 --- a/include/collide.h +++ b/include/collide.h @@ -1,4 +1,5 @@ char collide(int x, int y, char level[], char tile); +char collide_spike(int x, int y, char level[]); char collide_solid(int x, int y, char level[], char polarity); char collide_point(int x, int y, char level[], char tile); char collide_and_erase(int x, int y, char level[], char tile); diff --git a/src/collide.c b/src/collide.c index de9f975..036e0b6 100644 --- a/src/collide.c +++ b/src/collide.c @@ -4,6 +4,7 @@ #define PLAYER_H 11 #define PLAYER_W 11 #define LEVEL_WIDTH 28 +#define SPIKE_SCAM 2 char collide(int x, int y, char level[], char tile) { @@ -15,6 +16,14 @@ char collide(int x, int y, char level[], char tile) return 0; } +char collide_spike(int x, int y, char level[]) +{ + return (collide_point(x + SPIKE_SCAM, y + SPIKE_SCAM, level, 'v') || + collide_point(x + PLAYER_W - SPIKE_SCAM, y + SPIKE_SCAM, level, 'v') || + collide_point(x + SPIKE_SCAM, y + PLAYER_H - SPIKE_SCAM, level, 'v') || + collide_point(x + PLAYER_W - SPIKE_SCAM, y + PLAYER_H - SPIKE_SCAM, level, 'v')); +} + char collide_point(int x, int y, char level[], char tile) { return (level[(int)(x/16) + (int)(y/16) * LEVEL_WIDTH] == tile); diff --git a/src/levels.c b/src/levels.c index 47efc04..9214473 100644 --- a/src/levels.c +++ b/src/levels.c @@ -1,3 +1,3 @@ #include "levels.h" #include -void set_level(int level_id, char level[]){switch (level_id){case 5050:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--000.....rr..........000000--000.....rr..........000000--000.....rr..........000000--000.....rr..........000000--000..E..rr..........000000--00000000000bbbb.....000000--00000000000bbbb00000000000--00.............00000000000--00.............00000000000--00.........000000000000000--00..S......000000000000000--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5051:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--00000000000000000000000000--00000000000000000000000000--00000000000000000000000000--00......................00--00......................00--00......................00--00......................00--00S....................E00--0000rrrrrrrrrbbbbbbbbb0000--0000vvvvvvvvvvvvvvvvvv0000--00000000000000000000000000--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5052:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--0000000000.........0000000--0000000000.......E.0000000--0000000000....000000000000--0000000000......0000000000--0000000000bb....0000000000--0000000000......0000000000--0000000000....000000000000--0000000000......0000000000--0000000000rr....0000000000--0000000.........0000000000--0000000.S.......0000000000--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5053:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--00000000000000000000000000--0000.....00000000000000000--000.......0000000000000000--00.........000000000000000--00.........000000000000000--00.........0000....b..r.00--00.........000.....b..r.00--00....0............b..rE00--00....0..........bbbrrr.00--00....0.........bvvvvvvv00--00.S..0.........v000000000--0000**00000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5054:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--00......000...v...000...00--00......000.......000.E.00--00.S....000.......000...00--00000...000...0...000...00--00000www000www0www000www00--00000www000www0www000www00--00000www000www0www000www00--00000vww000wwv0vww000wwv00--00000wwwwwwwww0wwwwwwwww00--00000wwwwwwwww0wwwwwwwww00--00000wwwwwwwww0wwwwwwwww00--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5055:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--00......................00--00......................00--00......................00--000000..............000000--.r...0..............0...b.--.r...0..............0...b.--.r.S.0..............0.E.b.--000000..............000000--00......................00--00......................00--00......................00--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5056:memcpy(level,"-----------------------------00000000000000..0000000000--00000000000000..0000000000--000000.......0..0...ww...0--000000.......0..0...ww...0--000000.......0......ww...0--000000bbb0...0.....vvvv..0--000000vww0...0..00vvvvvvE0--000000www0v.....0000000000--000000wwv0v.....0000000000--000000rrr0...0..0000000000--00...0wwv0...0..v000000000--00...bwww0...0..v000000000--00.S.bwww0***0..0000000000--00000000000000..0000000000--00000000000000..0000000000-----------------------------",476);break;case 5057:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--00....v000000vvvvvvvv...00--00....v0vv000...........00--00....0v..000.........S.00--00ww0.E...000........00000--00ww0000v...........v00000--00ww000..............00000--00ww000...........w..00000--00wwwwww00^.......v..00000--00wwwwww00^.......v..00000--00vvvvvv00^......vv..00000--00000000000......vv..00000--000000000000vvv0v00**00000--00000000000000000000000000-----------------------------",476);break;case 5058:memcpy(level,"-----------------------------0000000000ww0000000www0000--000000000www0000000www0000--00.....0..000000000www0000--00.S...0.^000000000www0000--00000..0.^00000........000--00000..0.^0000.........000--00.....0.^000vbww0rrrrr000--00.....0.^00rwwbw0.....000--00bb0vvv.^0vwrwwv0.....000--00wwrww..0wbwwrw00v.vvv000--00wwrww..0wwbwv000.....000--00wwrww..0rwwb0000.....000--00vvvww..0wrv000000.E.0000--0000000**0ww0000000...0000--0000000000ww0000000...0000-----------------------------",476);break;}} \ No newline at end of file +void set_level(int level_id, char level[]){switch (level_id){case 5050:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--000.....rr..........000000--000.....rr..........000000--000.....rr..........000000--000.....rr..........000000--000..E..rr..........000000--00000000000bbbb.....000000--00000000000bbbb00000000000--00.............00000000000--00.............00000000000--00.........000000000000000--00..S......000000000000000--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5051:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--00000000000000000000000000--00000000000000000000000000--00000000000000000000000000--00......................00--00......................00--00......................00--00......................00--00S....................E00--0000rrrrrrrrrbbbbbbbbb0000--0000vvvvvvvvvvvvvvvvvv0000--00000000000000000000000000--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5052:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--0000000000.........0000000--0000000000.......E.0000000--0000000000....000000000000--0000000000......0000000000--0000000000bb....0000000000--0000000000......0000000000--0000000000....000000000000--0000000000......0000000000--0000000000rr....0000000000--0000000.........0000000000--0000000.S.......0000000000--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5053:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--00000000000000000000000000--0000.....00000000000000000--000.......0000000000000000--00.........000000000000000--00.........000000000000000--00.........0000....b..r.00--00.........000.....b..r.00--00....0............b..rE00--00....0..........bbbrrr.00--00....0.........bvvvvvvv00--00.S..0.........v000000000--0000**00000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5054:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--00......000...v...000...00--00......000.......000.E.00--00.S....000.......000...00--00000...000...0...000...00--00000www000www0www000www00--00000www000www0www000www00--00000www000www0www000www00--00000vww000wwv0vww000wwv00--00000wwwwwwwww0wwwwwwwww00--00000wwwwwwwww0wwwwwwwww00--00000wwwwwwwww0wwwwwwwww00--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5055:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--00......................00--00......................00--00......................00--000000..............000000--.r...0..............0...b.--.r...0..............0...b.--.r.S.0..............0.E.b.--000000..............000000--00......................00--00......................00--00......................00--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5056:memcpy(level,"-----------------------------00000000000000..0000000000--00000000000000..0000000000--000000.......0..0...ww...0--000000.......0..0...ww...0--000000.......0......ww...0--000000bbb0...0.....vvvv..0--000000vww0...0..00vvvvvvE0--000000www0v.....0000000000--000000wwv0v.....0000000000--000000rrr0...0..0000000000--00...0wwv0...0..v000000000--00...bwww0...0..v000000000--00.S.bwww0***0..0000000000--00000000000000..0000000000--00000000000000..0000000000-----------------------------",476);break;case 5057:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--00....v000000vvvvvvvv...00--00....v0vv000...........00--00....0v..000.........S.00--00ww0.E...000........00000--00ww0000v...........v00000--00ww000..............00000--00ww000...........w..00000--00wwwwww00^.......v..00000--00wwwwww00^.......v..00000--00vvvvvv00^......vv..00000--00000000000......vv..00000--000000000000vvv0v00**00000--00000000000000000000000000-----------------------------",476);break;case 5058:memcpy(level,"-----------------------------0000000000ww0000000www0000--000000000www0000000www0000--00.....0..000000000www0000--00.S...0.^000000000www0000--00000..0.^00000........000--00000..0.^0000.........000--00.....0.^000vbww0rrrrr000--00.....0.^00rwwbw0.....000--00bb0vvv.^0vwrwwv0.....000--00wwrww..0wbwwrw00v.vvv000--00wwrww..0wwbwv000.....000--00wwrww..0rwwb0000.....000--00vvvww..0wrv000000.E.0000--0000000**0ww0000000...0000--0000000000ww0000000...0000-----------------------------",476);break;case 5059:memcpy(level,"-----------------------------00000000000000000000000000--0000000vvvvvv0000000000000--000000vv....vv^...v0000000--00...0v......v^v...0000000--00...0v..v...v^..^.0000000--00.S.0vww0v..v^..^.0E.0000--00rrr0vvww0..v^..^.0..0000--00.v000vwS0.vv^.v^.0v.0000--00.vv00vv0v.vv^..^..w.0000--00..v0vvww0..v^..^....0000--00...0vwrwv..v^..^....0000--00...0wwwvv..v^v.^w...0000--00vr..wwvvv.wr...^vvvv0000--000vv00000vvv0v0v000000000--00000000000000000000000000-----------------------------",476);break;}} \ No newline at end of file diff --git a/src/main.c b/src/main.c index 6e2a29f..bf238b1 100644 --- a/src/main.c +++ b/src/main.c @@ -196,7 +196,7 @@ int main(void) } } //spike collision and death - if (collide(player_x, player_y, level, 'v')) + if (collide_spike(player_x, player_y, level)) { player_x = start_x; player_y = start_y; @@ -214,7 +214,7 @@ int main(void) if (collide(player_x, player_y, level, 'E')) { level_id++; - if (level_id == 5059) + if (level_id == 5060) { just_breathe(step); return 0; diff --git a/src/menu.c b/src/menu.c index cb3289e..3d83424 100644 --- a/src/menu.c +++ b/src/menu.c @@ -2,7 +2,7 @@ #include #include "menu.h" -#define LAST_LEVEL 5058 +#define LAST_LEVEL 5059 #define Y_POS 88 diff --git a/up-editor/screens/5059.scr b/up-editor/screens/5059.scr new file mode 100644 index 0000000..a5b6d5e --- /dev/null +++ b/up-editor/screens/5059.scr @@ -0,0 +1 @@ +000000000000000000000000000000000vvvvvv0000000000000000000vv....vv^...v000000000...0v......v^v...000000000...0v..v...v^..^.000000000.S.0vww0v..v^..^.0E.000000rrr0vvww0..v^..^.0..000000.v000vwS0.vv^.v^.0v.000000.vv00vv0v.vv^..^..w.000000..v0vvww0..v^..^....000000...0vwrwv..v^..^....000000...0wwwvv..v^v.^w...000000vr..wwvvv.wr...^vvvv0000000vv00000vvv0v0v00000000000000000000000000000000000 \ No newline at end of file