#include "lzy.h" #include "game.h" #include "player.h" #include "background.h" #include "cfg.h" #include "input.h" #include #include 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(); }