From 25a2f92e28d78f094651a1133199608429217a22 Mon Sep 17 00:00:00 2001 From: Tituya Date: Sun, 9 May 2021 21:58:51 +0200 Subject: [PATCH] level 19, new rough block --- CMakeLists.txt | 3 +- assets-cg/img/fxconv-metadata.txt | 3 ++ assets-cg/img/menu.png | Bin 19949 -> 20220 bytes assets-cg/img/rough.png | Bin 0 -> 177 bytes editor/AST3generator.py | 25 +++++++------ editor/img/rough.png | Bin 0 -> 177 bytes editor/levels/19.lvl | 2 +- include/friction.h | 1 + src/collide.c | 3 +- src/draw_time.c | 4 --- src/drawlevel.c | 10 ++++-- src/friction.c | 16 +++++++-- src/main.c | 58 ++++++++++++++++-------------- src/menu.c | 3 +- time.py | 19 ++-------- times.lvl | 5 +-- 16 files changed, 84 insertions(+), 68 deletions(-) create mode 100755 assets-cg/img/rough.png create mode 100755 editor/img/rough.png diff --git a/CMakeLists.txt b/CMakeLists.txt index d6c8c39..1f0feca 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -85,7 +85,8 @@ set(ASSETS_cg assets-cg/img/speedrun.png assets-cg/img/switch.png assets-cg/img/nbswitch.png - assets-cg/img/nbswitchlayout.png) + assets-cg/img/nbswitchlayout.png + assets-cg/img/rough.png) set(FLAGS -Wall -Wextra -Os) diff --git a/assets-cg/img/fxconv-metadata.txt b/assets-cg/img/fxconv-metadata.txt index f4bad42..a19e47f 100755 --- a/assets-cg/img/fxconv-metadata.txt +++ b/assets-cg/img/fxconv-metadata.txt @@ -72,3 +72,6 @@ nbswitchlayout.png: type:bopti-image profile:p4 name: img_nbswitchlayout +rough.png: + type:bopti-image + name: img_rough diff --git a/assets-cg/img/menu.png b/assets-cg/img/menu.png index 73bf9239308db0c69f995b30fa0d928429dcb32c..7c446e6e4559a5ebe29282f2f6631934ee1f4477 100755 GIT binary patch literal 20220 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 ij^kw)ZL1R;+A0000t)x++n zUc!{CeE 0: nbswitch-=1 + if nbswitchmax > 0: nbswitchmax-=1 write() place() if carac == "a": diff --git a/editor/img/rough.png b/editor/img/rough.png new file mode 100755 index 0000000000000000000000000000000000000000..abacbbc0f128ce836edf46dd2027b8aca749a7da GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vft)x++n zUc!{CeE 0) { const int mtime = (int)(time * medal_multiplier[i] * 100.0); diff --git a/src/drawlevel.c b/src/drawlevel.c index 9d5424b..d2c4566 100644 --- a/src/drawlevel.c +++ b/src/drawlevel.c @@ -19,9 +19,10 @@ extern bopti_image_t img_key2; // key 2 extern bopti_image_t img_damaged; // damaged block extern bopti_image_t img_chock; // chock block extern bopti_image_t img_switch; // switch block -extern bopti_image_t img_ice; // switch block +extern bopti_image_t img_ice; // ice block extern bopti_image_t img_appear; // appear block -extern bopti_image_t img_nbswitch; // appear block +extern bopti_image_t img_nbswitch; // nbswitch block +extern bopti_image_t img_rough; // rough block extern bopti_image_t img_endscreen; extern bopti_image_t img_nbswitchlayout; @@ -106,6 +107,9 @@ void draw_level(char level[]) case 'z': // nbswitch blocks dimage(x, y, &img_nbswitch); break; + case 'r': // rough blocks + dimage(x, y, &img_rough); + break; } x += 16; if (x == 16 * 25) { @@ -155,4 +159,4 @@ void draw_nbswitch(int nbswitch) { dimage(300, 150, &img_nbswitchlayout); dprint(335, 175, C_RED, "%d", nbswitch); -} \ No newline at end of file +} diff --git a/src/friction.c b/src/friction.c index 183c97f..a50285a 100644 --- a/src/friction.c +++ b/src/friction.c @@ -6,20 +6,32 @@ void mod_accel_and_fric(float *acceleration, float *friction, int x, int y, { *acceleration = HACCELERATION; *friction = HFRICTION; - if (!mod_ice(acceleration, friction, x, y, level)) + if(!mod_rough(acceleration, friction, x, y, level)) + mod_solid(acceleration, friction, x, y, level); + if(!mod_ice(acceleration, friction, x, y, level)) mod_solid(acceleration, friction, x, y, level); } int mod_ice(float *acceleration, float *friction, int x, int y, char level[]) { if (collide(x, y - 1, level, 'i') || collide(x, y + 1, level, 'i')) { - *friction /= 4.0; + *friction /= 3.0; *acceleration /= 2.0; return 1; } return 0; } +int mod_rough(float *acceleration, float *friction, int x, int y, char level[]) +{ + if (collide(x, y - 1, level, 'r') || collide(x, y + 1, level, 'r')) { + *friction *= 3; + *acceleration *= 2; + return 1; + } + return 0; +} + int mod_solid(float *acceleration, float *friction, int x, int y, char level[]) { if (collide_solid(x, y - 1, level) || collide_solid(x, y + 1, level)) { diff --git a/src/main.c b/src/main.c index 91ce562..9e56677 100644 --- a/src/main.c +++ b/src/main.c @@ -1,3 +1,16 @@ +/* +* @author : Tituya x KikooDX +*/ + +#include +#include +#include +#include +#include +#include +#include +#include + #include "collide.h" #include "define.h" #include "drawlevel.h" @@ -8,15 +21,6 @@ #include "times.h" #include "util.h" #include "friction.h" -#include -#include -#include -#include -#include -#include - -#include -#include #define VACCELERATION 0.2 #define MAX_VSPD 9.0 @@ -26,21 +30,18 @@ static int callback(volatile int *frame_elapsed); static void game(int *id_level, char mode, char *type); int main(void) { - static int run = 0; - if (!run) { - gint_world_switch(GINT_CALL(restore)); - srand(rtc_ticks()); - run = 1; - } + gint_world_switch(GINT_CALL(restore)); + srand(rtc_ticks()); startmenu_launcher(); gint_world_switch(GINT_CALL(savefile)); + gint_osmenu(); return 0; } static void startmenu_launcher() { char type = 1; - static int menu_run = 1; + int menu_run = 1; int id_level = 1; while(menu_run) { const enum MenuCode valeur = start_menu(&type); @@ -169,7 +170,7 @@ static void game(int *id_level, char mode, char *type) } // right and left movement + collision - const int signe = (keydown(KEY_RIGHT) - keydown(KEY_LEFT)); + int signe = (keydown(KEY_RIGHT) - keydown(KEY_LEFT)); mod_accel_and_fric(&acceleration, &friction, player_x, player_y, level); hspd *= 1 - friction; hspd += signe * acceleration; @@ -245,13 +246,15 @@ static void game(int *id_level, char mode, char *type) if (check_coin) coin--; check_coin = 0; - set_level(*id_level, level, &start_x, &start_y, - &gravity, &appear, &disappear, &nbswitch); blackout = 0; check_nbswitch = 0; death_count++; double_check = 1; framelevel = 0; + hrem = 0.00; + + set_level(*id_level, level, &start_x, &start_y, + &gravity, &appear, &disappear, &nbswitch); if (*id_level == 1 && !mode) frame = 0; } @@ -265,6 +268,7 @@ static void game(int *id_level, char mode, char *type) blackout = 0; double_check = 1; framelevel = 0; + hrem = 0.00; set_level(*id_level, level, &start_x, &start_y, &gravity, &appear, &disappear, &nbswitch); @@ -431,6 +435,7 @@ static void game(int *id_level, char mode, char *type) switch(valeur) { case MenuContinue: { timer_start(timer); + check = 1; //prevent for switch when back to the level } break; case MenuBack: { game_loop = 0; @@ -442,14 +447,15 @@ static void game(int *id_level, char mode, char *type) timer_stop(timer); // when a level is quit - //if level selection and end - if (mode == 1 && *id_level != 0 && hasReachedEnd == 1) { - - float framefloat = framelevel; - draw_end(framelevel, *id_level, 0); - savetime(framefloat, *id_level); - sleep_ms(2500); + //if level selection + if (mode == 1 && *id_level != 0) { + if(hasReachedEnd) { + float framefloat = framelevel; + draw_end(framelevel, *id_level, 0); + savetime(framefloat, *id_level); + sleep_ms(2500); + } int doIRun = level_selection(id_level); if(doIRun) diff --git a/src/menu.c b/src/menu.c index bb7949d..eee1782 100644 --- a/src/menu.c +++ b/src/menu.c @@ -138,12 +138,13 @@ enum MenuPause pause_menu(char level[], int id_level, int coin, int death_count) dtext(32, Y_POS + 12, C_BLACK, "BACK"); dtext(16, Y_POS + (selected * 12), C_BLACK, ">"); - dprint(180, 45, C_BLACK, "LEVEL : %d", + dprint(176, 45, C_BLACK, "LEVEL : %d", id_level); dprint(320, 3, C_RGB(255, 178, 0), "COIN : %d", coin); dprint(311, 17, C_RGB(150, 16, 16), "DEATH : %d", death_count); + draw_time(id_level); dupdate(); if (keydown_any(KEY_SHIFT, KEY_EXE, 0)) { return selected; diff --git a/time.py b/time.py index 9da41d6..4c0bfad 100755 --- a/time.py +++ b/time.py @@ -1,30 +1,17 @@ -gold = 1.2 -silver = 1.5 -bronze = 2 - -x = 340 -y = 140 - timeslevel = open("times.lvl","r+") dest = open("generated/times.c","w") -lvm = open("generated/include/define.h","r") -ids=timeslevel.readlines() +define = open("generated/include/define.h","r") times=[] -for i in ids: +for i in timeslevel.readlines(): times.append(i.rstrip()) -nblvl = int(''.join(filter(str.isdigit,lvm.readline()))) +nblvl = int(''.join(filter(str.isdigit,define.readline()))) while(len(times) < nblvl): times.append("0.00") dest.write("""#include "times.h" -#include "define.h" -#include -#include - -extern bopti_image_t img_medals; float level_time[] = {\n\t""") dest.write("{}".format(',\n\t'.join(times))) diff --git a/times.lvl b/times.lvl index 87ac474..0e89b4d 100755 --- a/times.lvl +++ b/times.lvl @@ -1,10 +1,10 @@ -5.86 +5.91 8.76 5.80 3.52 3.58 8.62 -6.73 +6.81 7.65 9.62 6.04 @@ -16,3 +16,4 @@ 10.53 17.95 9.54 +6.93