2023-03-17 09:50:44 +01:00
|
|
|
#include "lzy.h"
|
2023-03-17 10:51:17 +01:00
|
|
|
#include "game.h"
|
|
|
|
#include "player.h"
|
2023-03-17 11:33:08 +01:00
|
|
|
#include "background.h"
|
2023-03-17 13:45:20 +01:00
|
|
|
#include "cfg.h"
|
2023-03-17 16:38:10 +01:00
|
|
|
#include "input.h"
|
2023-03-17 10:51:17 +01:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
2023-03-17 09:50:44 +01:00
|
|
|
|
2023-03-25 21:54:50 +01:00
|
|
|
static Game *game = NULL;
|
|
|
|
|
|
|
|
static void deinit(void);
|
|
|
|
|
2023-03-26 07:23:34 +02:00
|
|
|
int
|
|
|
|
main([[maybe_unused]] int argc, [[maybe_unused]] char **argv)
|
2023-03-17 09:50:44 +01:00
|
|
|
{
|
2023-03-21 22:24:24 +01:00
|
|
|
if (LZY_Init("hyperultra!", 30, "res/tset.png", "res/font.png")) {
|
2023-03-17 10:20:30 +01:00
|
|
|
LZY_Log("LZY_Init failed: %s", LZY_GetError());
|
|
|
|
LZY_Quit();
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2023-03-25 21:54:50 +01:00
|
|
|
if (atexit(deinit)) {
|
|
|
|
perror("atexit(deinit)");
|
|
|
|
deinit();
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
game = malloc(sizeof(Game));
|
2023-03-17 10:51:17 +01:00
|
|
|
if (game == NULL) {
|
|
|
|
LZY_Log("malloc failed");
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
game_init(game);
|
|
|
|
|
2023-03-23 21:28:39 +01:00
|
|
|
double hold = 0;
|
2023-03-23 21:19:59 +01:00
|
|
|
int stage = 0;
|
|
|
|
while (!LZY_ShouldQuit()) {
|
2023-03-23 21:28:39 +01:00
|
|
|
extern double tick;
|
2023-03-23 21:19:59 +01:00
|
|
|
LZY_CycleEvents();
|
|
|
|
input_update();
|
2023-03-23 21:28:39 +01:00
|
|
|
if (input_down(K_O)) {
|
2023-03-23 21:19:59 +01:00
|
|
|
hold += 1;
|
2023-03-23 21:28:39 +01:00
|
|
|
tick += 1;
|
|
|
|
} else {
|
|
|
|
hold *= 0.9;
|
|
|
|
tick *= 0.9;
|
|
|
|
}
|
|
|
|
if (hold < 1.0 / 128) {
|
2023-03-23 21:19:59 +01:00
|
|
|
hold = 0;
|
2023-03-23 21:28:39 +01:00
|
|
|
tick = 0;
|
|
|
|
}
|
2023-03-23 21:19:59 +01:00
|
|
|
if (hold > 50) {
|
|
|
|
if (stage == 1)
|
|
|
|
break;
|
|
|
|
stage += 1;
|
|
|
|
hold = 0;
|
|
|
|
}
|
|
|
|
|
2023-03-25 21:54:50 +01:00
|
|
|
if (LZY_DrawBegin()) return LZY_LogError(1);
|
2023-03-23 21:19:59 +01:00
|
|
|
LZY_DrawSetColor(WHITE);
|
2023-03-25 21:54:50 +01:00
|
|
|
(void)LZY_DrawClear();
|
2023-03-23 21:19:59 +01:00
|
|
|
LZY_DrawSetColor(BLACK);
|
|
|
|
int y = -16;
|
|
|
|
if (stage == 1) {
|
2023-03-25 21:54:50 +01:00
|
|
|
(void)LZY_DrawText(48, y += 32, "WALKING is AUTOMATIC");
|
2023-09-24 12:15:34 +02:00
|
|
|
#ifdef FXCG50
|
2023-03-25 21:54:50 +01:00
|
|
|
(void)LZY_DrawText(48, y += 32, "press SHIFT to jump");
|
2023-09-24 12:15:34 +02:00
|
|
|
#else
|
|
|
|
(void)LZY_DrawText(48, y += 32, "press SPACE to jump");
|
|
|
|
#endif
|
2023-03-25 21:54:50 +01:00
|
|
|
(void)LZY_DrawText(48, y += 32, "hold UP to jump HIGHER");
|
|
|
|
(void)LZY_DrawText(48, y += 32, "hold DOWN to jump LOWER");
|
|
|
|
} else {
|
|
|
|
(void)LZY_DrawText(48, y += 32, "HYPERULTRA");
|
|
|
|
(void)LZY_DrawText(48, y += 32, "a game made by KDX.re");
|
2023-09-24 12:15:34 +02:00
|
|
|
#ifdef FXCG50
|
|
|
|
(void)LZY_DrawText(48, y += 32, "powered by GINT");
|
|
|
|
#else
|
|
|
|
(void)LZY_DrawText(48, y += 32, "powered by SDL");
|
|
|
|
#endif
|
2023-03-23 21:19:59 +01:00
|
|
|
}
|
2023-09-24 12:15:34 +02:00
|
|
|
#ifdef FXCG50
|
2023-03-25 21:54:50 +01:00
|
|
|
(void)LZY_DrawText(48, y += 48, "hold SHIFT to continue");
|
2023-09-24 12:15:34 +02:00
|
|
|
#else
|
|
|
|
(void)LZY_DrawText(48, y += 48, "hold SPACE to continue");
|
|
|
|
#endif
|
2023-03-23 21:19:59 +01:00
|
|
|
if (hold)
|
2023-03-25 21:54:50 +01:00
|
|
|
(void)LZY_FillRect(0, DISPLAY_HEIGHT - 24, hold * 8, 24);
|
2023-03-23 21:28:39 +01:00
|
|
|
background_draw();
|
2023-03-25 21:54:50 +01:00
|
|
|
if (LZY_DrawEnd()) return LZY_LogError(1);
|
2023-03-23 21:19:59 +01:00
|
|
|
}
|
|
|
|
|
2023-03-17 10:20:30 +01:00
|
|
|
while (!LZY_ShouldQuit()) {
|
|
|
|
LZY_CycleEvents();
|
2023-03-17 16:38:10 +01:00
|
|
|
input_update();
|
2023-03-17 10:57:19 +01:00
|
|
|
game_update(game);
|
2023-03-19 05:49:14 +01:00
|
|
|
background_update(game);
|
2023-03-17 10:20:30 +01:00
|
|
|
|
2023-03-25 21:54:50 +01:00
|
|
|
if (LZY_DrawBegin()) return LZY_LogError(1);
|
2023-03-17 13:45:20 +01:00
|
|
|
LZY_DrawSetColor(WHITE);
|
2023-03-25 21:54:50 +01:00
|
|
|
if (LZY_DrawClear()) return LZY_LogError(1);
|
2023-03-17 10:57:19 +01:00
|
|
|
game_draw(game);
|
2023-03-21 22:19:31 +01:00
|
|
|
background_draw();
|
2023-03-25 22:13:45 +01:00
|
|
|
if (LZY_DrawEnd()) return LZY_LogError(1);
|
2023-03-17 10:20:30 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
2023-03-17 09:50:44 +01:00
|
|
|
}
|
2023-03-25 21:54:50 +01:00
|
|
|
|
|
|
|
static void
|
|
|
|
deinit(void)
|
|
|
|
{
|
|
|
|
if (game != NULL) {
|
|
|
|
game_deinit(game);
|
|
|
|
free(game);
|
|
|
|
}
|
|
|
|
LZY_Quit();
|
|
|
|
}
|