diff --git a/levels.lua b/levels.lua index 6f8b071..e13be8b 100644 --- a/levels.lua +++ b/levels.lua @@ -3,8 +3,11 @@ -- - placeholder tile -- v spike -- ^ elevator +-- j jump upgrade +-- +-- level id format : YYXX with YY and XX being the Y and X position on the map -levels = {[[ +levels = {[5049] = [[ ---------------------------- -00000000000000000000000000- -00000000000000000000000000- @@ -23,18 +26,18 @@ levels = {[[ -00000000000000000000000000- ---------------------------- ]], -[[ +[5050] = [[ ---------------------------- --00000000000000000000000000- --00000000000000000000000000- --000000000000000000000000000 --00000000000...............- --0000000000................- --0000000000....0000000000000 +-000000^....000000000000000- +-000000^....000000000000000- +-00000000....000000000000000 +-00000000..................- +-00000000..................- +-0000000000.....000000000000 -0000000000.....00000000000- -00000000..........00000000- 000000.............00000000- --..........-.00000000000000- +-.............0000000000000- -..........0000000000000000- -.......0000000000000000000- 000000000000000000000000000- @@ -42,7 +45,7 @@ levels = {[[ -00000000000000000000000000- ---------------------------- ]], -[[ +[5051] = [[ ---------------------------- -00000000000000000000000000- -00000000000000000000000000- @@ -61,7 +64,26 @@ levels = {[[ -00000000000000000000000000- ---------------------------- ]], -[[ +[4950] = [[ +---------------------------- +-00000000000000000000000000- +-00000000000000000000000000- +-00......................00- +-00......................00- +-00......................00- +-00......................00- +-00......................00- +-00......................00- +-00......................00- +-00......................00- +-00......................00- +-00......................00- +-00......................00- +-0000000...0000000000000000- +-0000000...0000000000000000- +---------------------------- +]], +[0] = [[ ---------------------------- -00000000000000000000000000- -00000000000000000000000000- @@ -85,9 +107,9 @@ levels = {[[ to_write = "" --remove all "\n" from level strings -for i, v in ipairs(levels) do +for i, v in pairs(levels) do v = string.gsub(v, "\n", "") - to_write = to_write.." case "..(i-1)..":\n memcpy(level, \""..v.."\", "..#v..");\n break;\n" + to_write = to_write.." case "..i..":\n memcpy(level, \""..v.."\", "..#v..");\n break;\n" end --finish and write diff --git a/platform.g3a b/platform.g3a index 0d989fb..c1d5efe 100644 Binary files a/platform.g3a and b/platform.g3a differ diff --git a/src/main.c b/src/main.c index fd76b17..ff2612d 100644 --- a/src/main.c +++ b/src/main.c @@ -30,7 +30,7 @@ int main(void) { volatile int has_ticked = 1; //fps cap char level[477]; - int level_id = 1; + int level_id = 5050; //start upgrades (mostly bools) char upgrades[] = { 0 //can jump @@ -47,6 +47,7 @@ int main(void) int start_x = 18*8 + 1; int start_y = 9*8 + 2; int old_x, old_y; + char spawn_buffer = 0; set_level(level_id, level); draw_level(level, upgrades); player_x = start_x; @@ -73,7 +74,15 @@ int main(void) player_x += hspd; } //ground detection - if (vspd >= 0 && collide_solid(player_x, player_y + 1, level)) on_ground = 6; + if (vspd >= 0 && collide_solid(player_x, player_y + 1, level)) + { + on_ground = 6; + if (spawn_buffer) + { + spawn_buffer = 0; + set_start_pos(&start_x, &start_y, player_x, player_y); + } + } else { if (on_ground != 6 && vspd < MAX_VSPD) vspd += GRAV; @@ -149,6 +158,24 @@ int main(void) draw_level(level, upgrades); reset_old_pos(&old_x, &old_y); } + else if (player_y <= 4) + { + level_id -= 100; + player_y = 123; + spawn_buffer = 1; + set_level(level_id, level); + draw_level(level, upgrades); + reset_old_pos(&old_x, &old_y); + } + else if (player_y >= 124) + { + level_id += 100; + player_y = 5; + set_start_pos(&start_x, &start_y, player_x, player_y); + set_level(level_id, level); + draw_level(level, upgrades); + reset_old_pos(&old_x, &old_y); + } //item get if (collide(player_x, player_y, level, 'j')) {