hyperultra/src/main.c

107 lines
2.1 KiB
C

#include "lzy.h"
#include "game.h"
#include "player.h"
#include "background.h"
#include "cfg.h"
#include "input.h"
#include <stdio.h>
#include <stdlib.h>
static Game *game = NULL;
static void deinit(void);
int main(void)
{
if (LZY_Init("hyperultra!", 30, "res/tset.png", "res/font.png")) {
LZY_Log("LZY_Init failed: %s", LZY_GetError());
LZY_Quit();
return 1;
}
if (atexit(deinit)) {
perror("atexit(deinit)");
deinit();
return 1;
}
game = malloc(sizeof(Game));
if (game == NULL) {
LZY_Log("malloc failed");
return 1;
}
game_init(game);
double hold = 0;
int stage = 0;
while (!LZY_ShouldQuit()) {
extern double tick;
LZY_CycleEvents();
input_update();
if (input_down(K_O)) {
hold += 1;
tick += 1;
} else {
hold *= 0.9;
tick *= 0.9;
}
if (hold < 1.0 / 128) {
hold = 0;
tick = 0;
}
if (hold > 50) {
if (stage == 1)
break;
stage += 1;
hold = 0;
}
if (LZY_DrawBegin()) return LZY_LogError(1);
LZY_DrawSetColor(WHITE);
(void)LZY_DrawClear();
LZY_DrawSetColor(BLACK);
int y = -16;
if (stage == 1) {
(void)LZY_DrawText(48, y += 32, "WALKING is AUTOMATIC");
(void)LZY_DrawText(48, y += 32, "press SHIFT to jump");
(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");
(void)LZY_DrawText(48, y += 32, "powered by GINT and SDL");
}
(void)LZY_DrawText(48, y += 48, "hold SHIFT to continue");
if (hold)
(void)LZY_FillRect(0, DISPLAY_HEIGHT - 24, hold * 8, 24);
background_draw();
if (LZY_DrawEnd()) return LZY_LogError(1);
}
while (!LZY_ShouldQuit()) {
LZY_CycleEvents();
input_update();
game_update(game);
background_update(game);
if (LZY_DrawBegin()) return LZY_LogError(1);
LZY_DrawSetColor(WHITE);
if (LZY_DrawClear()) return LZY_LogError(1);
game_draw(game);
background_draw();
if (LZY_DrawClear()) return LZY_LogError(1);
}
return 0;
}
static void
deinit(void)
{
if (game != NULL) {
game_deinit(game);
free(game);
}
LZY_Quit();
}