Merge pull request 'Reorganized a bit of code' (#8) from KikooDX/AST3_C:master into master

Reviewed-on: https://gitea.planet-casio.com/Tituya/AST3_C/pulls/8
This commit is contained in:
Tituya 2021-05-01 12:41:07 +02:00
commit d9d29907e4
6 changed files with 70 additions and 55 deletions

View File

@ -51,6 +51,7 @@ set(SOURCES
src/main.c
src/menu.c
src/save.c
src/util.c
generated/setlevel.c
generated/times.c)

View File

@ -1,3 +1,6 @@
char start_menu();
#pragma once
enum MenuCode { MenuLevelSel, MenuAllMode, MenuTutorial, MenuExit };
enum MenuCode start_menu();
char speed_menu(int *id_level);
int round(float num);

3
include/util.h Normal file
View File

@ -0,0 +1,3 @@
#pragma once
int round(float num);

View File

@ -4,10 +4,10 @@
#include <gint/keyboard.h>
#include <gint/std/string.h>
#include <gint/timer.h>
#include "collide.h"
#include "define.h"
#include "drawlevel.h"
#include "util.h"
#include "menu.h"
#include "save.h"
#include "setlevel.h"
@ -18,18 +18,62 @@
#define MAX_VSPD 9.0
#define FRICTION 0.2
int main(void);
void end(unsigned int frame);
static int callback(volatile int *frame_elapsed);
static void end(unsigned int frame);
static void game(int *id_level, char mode, char *type);
char run = 0;
int main(void)
{
static int run = 0;
if (!run) {
gint_world_switch(GINT_CALL(restore));
run = 1;
}
int callback(volatile int *frame_elapsed)
char mode = 0;
char type = 1;
const enum MenuCode valeur = start_menu(&type);
switch (valeur) {
case MenuLevelSel: {
int id_level = 1;
if (!speed_menu(&id_level)) {
mode = 1;
game(&id_level, mode, &type);
} else
main();
} break;
case MenuAllMode: {
int id_level = 1;
mode = 0;
game(&id_level, mode, &type);
} break;
case MenuTutorial: {
int id_level = 0;
mode = 1;
game(&id_level, mode, &type);
} break;
case MenuExit:
gint_world_switch(GINT_CALL(savefile));
break;
}
return 0;
}
static int callback(volatile int *frame_elapsed)
{
*frame_elapsed = 1;
return TIMER_CONTINUE;
}
void game(int *id_level, char mode, char *type)
static void end(unsigned int frame)
{
draw_end((int)frame, 15, 2);
sleep_ms(7000);
main();
}
static void game(int *id_level, char mode, char *type)
{
volatile int frame_elapsed = 1;
int timer = timer_configure(TIMER_ANY, 1000000 / FPS,
@ -147,8 +191,7 @@ void game(int *id_level, char mode, char *type)
} else
hspd = 0;
// Action key
if (keydown(KEY_SHIFT) && !check &&
nbswitch > 0 &&
if (keydown(KEY_SHIFT) && !check && nbswitch > 0 &&
((collide_solid(player_x, player_y - 1, level) &&
gravity) ||
(collide_solid(player_x, player_y + 1, level) &&
@ -505,42 +548,3 @@ void game(int *id_level, char mode, char *type)
} else
main();
}
void end(unsigned int frame)
{
draw_end((int)frame, 15, 2);
sleep_ms(7000);
main();
}
int main(void)
{
if (!run) {
gint_world_switch(GINT_CALL(restore));
run = 1;
}
char mode = 0;
char type = 1;
char valeur = start_menu(&type);
if (!valeur) // normal game (level selection)
{
int id_level = 1;
if (!speed_menu(&id_level)) {
mode = 1;
game(&id_level, mode, &type);
} else
main();
} else if (valeur == 1) // all mode
{
int id_level = 1;
mode = 0;
game(&id_level, mode, &type);
} else if (valeur == 2) // tutorial
{
int id_level = 0;
mode = 1;
game(&id_level, mode, &type);
} else if (valeur == 3) // exit
gint_world_switch(GINT_CALL(savefile));
return 0;
}

View File

@ -1,4 +1,6 @@
#include "menu.h"
#include "define.h"
#include "util.h"
#include "drawlevel.h"
#include "save.h"
#include "setlevel.h"
@ -7,12 +9,7 @@
#include <gint/gint.h>
#include <gint/keyboard.h>
int round(float num) // round(2.5) = 3 round(-3.2) = -3
{
return num < 0 ? num - 0.5 : num + 0.5;
}
char start_menu(char *type)
enum MenuCode start_menu(char *type)
{
extern bopti_image_t img_menu;
char menu_loop = 1;
@ -112,3 +109,4 @@ char speed_menu(int *id_level)
}
return 0;
}

6
src/util.c Normal file
View File

@ -0,0 +1,6 @@
#include "util.h"
int round(float num)
{
return (num < 0) ? (num - 0.5) : (num + 0.5);
}