From a4f600c1ffaddf10b36a343fb8dd109058f0cc73 Mon Sep 17 00:00:00 2001 From: Tituya Date: Tue, 4 May 2021 01:46:11 +0200 Subject: [PATCH] new menu. Ice not working --- CMakeLists.txt | 4 +++- assets-cg/img/fxconv-metadata.txt | 2 +- assets-cg/img/menu.png | Bin 24001 -> 18647 bytes include/friction.h | 3 +++ include/util.h | 2 ++ src/collide.c | 4 ++-- src/friction.c | 23 +++++++++++++++++++++++ src/main.c | 22 ++++++++++++---------- src/menu.c | 21 ++++++++++++++------- src/util.c | 16 ++++++++++++++-- 10 files changed, 74 insertions(+), 23 deletions(-) create mode 100644 include/friction.h create mode 100644 src/friction.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 2287c64..59aedfd 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,6 +56,7 @@ set(SOURCES src/save.c src/util.c src/replace.c + src/friction.c generated/setlevel.c generated/times.c) @@ -76,7 +77,7 @@ set(ASSETS_cg assets-cg/img/key1.png assets-cg/img/key2.png assets-cg/img/medals.png - assets-cg/img/menu.png + assets-cg/img/menu2.png assets-cg/img/new.png assets-cg/img/player.png assets-cg/img/solid.png @@ -93,5 +94,6 @@ add_executable(${PROJECT_NAME} ${SOURCES} ${ASSETS} ${ASSETS_${FXSDK_PLATFORM}}) target_compile_options(${PROJECT_NAME} PRIVATE ${FLAGS}) target_link_libraries(${PROJECT_NAME} Gint::Gint) target_link_options(${PROJECT_NAME} PRIVATE -Wl,-Map=map) + generate_g3a(TARGET ${PROJECT_NAME} OUTPUT "${PROJECT_NAME}.g3a" NAME "${PROJECT_NAME}" ICONS assets-cg/icon-uns.png assets-cg/icon-sel.png) diff --git a/assets-cg/img/fxconv-metadata.txt b/assets-cg/img/fxconv-metadata.txt index 7a8dd93..f4bad42 100755 --- a/assets-cg/img/fxconv-metadata.txt +++ b/assets-cg/img/fxconv-metadata.txt @@ -71,4 +71,4 @@ nbswitch.png: nbswitchlayout.png: type:bopti-image profile:p4 - name: img_nbswitchlayout \ No newline at end of file + name: img_nbswitchlayout diff --git a/assets-cg/img/menu.png b/assets-cg/img/menu.png index a9a4d9b119fed7e877a7b67f8ddf66a5d677099f..b00b7faa6f3048e3f0133d870fc67df737dd0c3d 100755 GIT binary patch literal 18647 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 JPDHLkV1oMXw(tM| literal 24001 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%0AA?Irqua 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 Y0rch*oNOC-+yDRo07*qoM6N<$f^DCv7XSbN diff --git a/include/friction.h b/include/friction.h new file mode 100644 index 0000000..0bfdcb9 --- /dev/null +++ b/include/friction.h @@ -0,0 +1,3 @@ +float apply_friction(int x, int y, char level[]); +void mod_ice(int x, int y, char level[], float *friction); +void mod_solid(int x, int y, char level[], float *friction); \ No newline at end of file diff --git a/include/util.h b/include/util.h index 4b0ba63..6e09848 100644 --- a/include/util.h +++ b/include/util.h @@ -1,3 +1,5 @@ #pragma once int round(float num); +int round_sup(float num); +int rand_range(int low, int high); \ No newline at end of file diff --git a/src/collide.c b/src/collide.c index 959655b..f51b017 100644 --- a/src/collide.c +++ b/src/collide.c @@ -82,8 +82,8 @@ void collide_replace(int x, int y, char level[], char collide, char replace) char collide_center(int x, int y, char level[], char block) { - if (level[(int)((x + round(PLAYER_HEIGHT / 2)) / TILE_HEIGHT) + - (int)((y + round(PLAYER_HEIGHT / 2)) / TILE_HEIGHT) * + if (level[(int)((x + round_sup(PLAYER_HEIGHT / 2)) / TILE_HEIGHT) + + (int)((y + round_sup(PLAYER_HEIGHT / 2)) / TILE_HEIGHT) * LEVEL_WIDTH] == block) { return 1; } diff --git a/src/friction.c b/src/friction.c new file mode 100644 index 0000000..55377dc --- /dev/null +++ b/src/friction.c @@ -0,0 +1,23 @@ +#include "friction.h" +#include "collide.h" + +float apply_friction(int x, int y, char level[]) { + float friction = 0.2; + mod_solid(x, y, level, &friction); + mod_ice(x, y, level, &friction); + return friction; +} + +void mod_ice(int x, int y, char level[], float *friction) { + if (collide(x, y - 1, level, 'i') || + collide(x, y + 1, level, 'i')) { + *friction = 0.15; + } +} + +void mod_solid(int x, int y, char level[], float *friction) { + if(collide_solid(x, y - 1, level) || + collide_solid(x, y + 1, level)) { + *friction = 0.2; + } +} \ No newline at end of file diff --git a/src/main.c b/src/main.c index 59f03c7..9f6dc73 100644 --- a/src/main.c +++ b/src/main.c @@ -7,6 +7,7 @@ #include "setlevel.h" #include "times.h" #include "util.h" +#include "friction.h" #include #include #include @@ -17,7 +18,7 @@ #define VACCELERATION 0.2 #define HACCELERATION 0.4 #define MAX_VSPD 9.0 -#define FRICTION 0.2 +#define MAX_HSPD 2.0 static int callback(volatile int *frame_elapsed); static void end(unsigned int frame); @@ -156,6 +157,7 @@ static void game(int *id_level, char mode, char *type) coin); if (check_nbswitch) draw_nbswitch(nbswitch); + dprint(330, 0, C_RED, "%d", (int)(hspd*100)); dupdate(); } pollevent(); @@ -168,14 +170,11 @@ static void game(int *id_level, char mode, char *type) // right and left collision if (keydown_any(KEY_RIGHT, KEY_LEFT, 0)) { - float hbuff = 0.0; char signe = (keydown(KEY_RIGHT) - keydown(KEY_LEFT)); - if (collide(player_x, player_y - 1, level, 'i') || - collide(player_x, player_y + 1, level, 'i')) { - hbuff += 0.12; - } - hspd *= 1 - FRICTION; - hspd += signe * (HACCELERATION + hbuff); + float friction = apply_friction(player_x, player_y, level); + hspd *= 1 - friction; + hspd += signe * HACCELERATION; + if (!collide_solid(player_x + round(hspd) + signe * 1, player_y, level)) player_x += round(hspd); @@ -404,14 +403,15 @@ static void game(int *id_level, char mode, char *type) } // warp - if (player_y >= 212) + if (player_y >= 210) player_y = -4; if (player_y < -6) - player_y = 212; + player_y = 209; // Menu if (keydown_any(KEY_EXIT, KEY_MENU, 0)) { + timer_pause(timer); char menu_loop = 1; char selected = 0; int Y_POS = 18; @@ -446,6 +446,7 @@ static void game(int *id_level, char mode, char *type) switch (selected) { case 0: menu_loop = 0; + timer_start(timer); break; case 1: menu_loop = 0; @@ -467,6 +468,7 @@ static void game(int *id_level, char mode, char *type) } } timer_stop(timer); + timer_wait(timer); // when a level is quit if (mode) { if (*id_level == 0) { diff --git a/src/menu.c b/src/menu.c index fde84c3..db57af4 100644 --- a/src/menu.c +++ b/src/menu.c @@ -17,21 +17,29 @@ enum MenuCode start_menu(char *type) char selection = 0; char buffer = 1; char buffer2 = 1; - int Y_POS = 85; + int Y_POS = 145; + + char level[351]; + int start_x; + int start_y; + + set_level(rand_range(1,LEVEL_MAX), level, &start_x, &start_y, NULL, + NULL, NULL, NULL); while (menu_loop) { clearevents(); dclear(C_WHITE); + draw_level(level); dimage(0, 0, &img_menu); selection += keydown(KEY_DOWN) - keydown(KEY_UP); if (selection == 4) selection = 0; else if (selection == -1) selection = 3; - dtext(32, Y_POS, C_BLACK, "PLAY"); - dtext(32, Y_POS + 12, C_BLACK, "ALL MODE"); - dtext(32, Y_POS + 24, C_BLACK, "TEST LEVEL"); - dtext(32, Y_POS + 36, C_BLACK, "EXIT GAME"); - dtext(16, Y_POS + (selection * 12), C_BLACK, ">"); + dtext(160, Y_POS, C_WHITE, "PLAY"); + dtext(160, Y_POS + 12, C_WHITE, "ALL MODE"); + dtext(160, Y_POS + 24, C_WHITE, "TEST LEVEL"); + dtext(160, Y_POS + 36, C_WHITE, "EXIT GAME"); + dtext(145, Y_POS + (selection * 12), C_WHITE, ">"); dupdate(); if (keydown_any(KEY_SHIFT, KEY_EXE, 0)) { if (!buffer2) @@ -85,7 +93,6 @@ char speed_menu(int *id_level) dtext(340, 214, C_BLACK, "TIMES"); dtext(190, 45, C_BLACK, "Time : "); dprint(80, 20, C_BLACK, "Level : %d", *id_level); - dprint(80, 50, C_RED, "%d", gravity); if (sto != 0) dprint(194, 60, C_RED, "%.2j", sto); else diff --git a/src/util.c b/src/util.c index f1430b0..a57848b 100644 --- a/src/util.c +++ b/src/util.c @@ -1,6 +1,18 @@ #include "util.h" +#include +#include -int round(float num) -{ +int round(float num) { return (num < 0) ? (num - 0.5) : (num + 0.5); } + +int round_sup(float num) { + return (int)(num+1); +} + +/*maybe illegal*/ +int rand_range(int low, int high) +{ + srand(rtc_ticks()); + return (rand() % (high - low)) + low; +} \ No newline at end of file