diff --git a/levels.lua b/levels.lua index f940ed1..6e31c80 100755 --- a/levels.lua +++ b/levels.lua @@ -7,7 +7,7 @@ io.write("void set_level(int level_id, char level[]){") io.write("switch (level_id){") current = 0 for i = 0, 9999, 1 do - file = io.open("../up-editor/screens/"..i..".scr") + file = io.open("up-editor/screens/"..i..".scr") file_content = nil if file then file_content = file:read() diff --git a/platform.g3a b/platform.g3a index 173a9cd..2841c15 100644 Binary files a/platform.g3a and b/platform.g3a differ diff --git a/src/levels.c b/src/levels.c index 9633050..9d6a675 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 4950:memcpy(level,"-----------------------------..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--.......00000..............-----------------------------",476);break;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 5150:memcpy(level,"-----------------------------..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................--..........................-----------------------------",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..0wbwwrw00vvvvv000--00wwrww..0wwbwv000.....000--00wwrww..0rwwb0000.....000--00vvvww..0wrv000000.E.0000--0000000**0ww0000000...0000--0000000000ww0000000...0000-----------------------------",476);break;case 5059:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--000.....................00--00......................00--00......................00--00......................00--00......................00--00......................00--00......................00--00......................00--00......................00--00......................00--00......................00--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;}} \ No newline at end of file diff --git a/src/main.c b/src/main.c index 88386fb..475573c 100644 --- a/src/main.c +++ b/src/main.c @@ -42,6 +42,7 @@ int main(void) int move = 0; int direction = 0; int on_ground = 6; //remember if player is on solid + char in_water = 0; int player_x = 0; int player_y = 0; int start_x = 18*16 + 2; @@ -131,13 +132,15 @@ int main(void) } else { - if (on_ground != 6 && vspd < MAX_VSPD) vspd += GRAV; + if (on_ground != 6 && vspd < MAX_VSPD) vspd += GRAV / (1 + in_water); if (on_ground) on_ground--; } + //in water? + in_water = collide(player_x, player_y, level, 'w'); //vertical movement jump_test(&jump_pressed, &jump_buffer, &jump_hold); //jump - if (jump_buffer && (on_ground || collide(player_x, player_y, level, 'w'))) { + if (jump_buffer && (on_ground || in_water)) { vspd = JUMP_SPD; on_ground = 0; jump_hold = JUMP_SCALE; @@ -160,7 +163,9 @@ int main(void) } //vertical collision { - int trunc_vspd = vspd; //truncate vspd + int trunc_vspd; + if (in_water) trunc_vspd = vspd / 2; + else trunc_vspd = vspd; //bouncer if (collide(player_x, player_y + trunc_vspd, level, '*')) { @@ -206,6 +211,7 @@ int main(void) level_id++; set_level(level_id, level); DRAW_LEVEL(); + dprint(100, 0, C_WHITE, C_BLACK, "%d", level_id); player_x = start_x; player_y = start_y; polarity = 0; diff --git a/up-editor/screens/5058.scr b/up-editor/screens/5058.scr new file mode 100644 index 0000000..e27337b --- /dev/null +++ b/up-editor/screens/5058.scr @@ -0,0 +1 @@ +0000000000ww0000000www0000000000000www0000000www000000.....0..000000000www000000.S...0.^000000000www000000000..0.^00000........00000000..0.^0000.........00000.....0.^000vbww0rrrrr00000.....0.^00rwwbw0.....00000bb0vvv.^0vwrwwv0.....00000wwrww..0wbwwrw00v.vvv00000wwrww..0wwbwv000.....00000wwrww..0rwwb0000.....00000vvvww..0wrv000000.E.00000000000**0ww0000000...00000000000000ww0000000...0000 \ No newline at end of file diff --git a/up-editor/tiles.lua b/up-editor/tiles.lua index 30df7c0..07f10b1 100644 --- a/up-editor/tiles.lua +++ b/up-editor/tiles.lua @@ -11,6 +11,6 @@ tiles = { love.graphics.newImage(img_path.."spawn.png"), love.graphics.newImage(img_path.."exit.png"), } -tiles_char = { '0', 'r', 'b', 'v', '^', 'w', '*', 'S', 'e'} +tiles_char = { '0', 'r', 'b', 'v', '^', 'w', '*', 'S', 'E'} selected_tile = 1