aurora/examples/simple.c

90 lines
1.8 KiB
C

#include <aurora/aurora.h>
#include <aurora/event.h>
#include <aurora/main.h>
#include <dolphin/gx.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
static void log_callback(AuroraLogLevel level, const char* message, unsigned int len) {
const char* levelStr;
FILE* out = stdout;
switch (level) {
case LOG_DEBUG:
levelStr = "DEBUG";
break;
case LOG_INFO:
levelStr = "INFO";
break;
case LOG_WARNING:
levelStr = "WARNING";
break;
case LOG_ERROR:
levelStr = "ERROR";
out = stderr;
break;
case LOG_FATAL:
levelStr = "FATAL";
out = stderr;
break;
}
fprintf(out, "[%s: %s]\n", levelStr, message);
if (level == LOG_FATAL) {
fflush(out);
abort();
}
}
static void draw() {
GXSetCopyClear(
(GXColor){
.r = 0,
.g = 0,
.b = 100,
.a = 255,
},
GX_MAX_Z24);
}
int main(int argc, char* argv[]) {
const AuroraConfig config = {
.appName = "Demo",
.logCallback = &log_callback,
};
AuroraInfo initInfo = aurora_initialize(argc, argv, &config);
bool exiting = false;
bool paused = false;
while (!exiting) {
const AuroraEvent* event = aurora_update();
while (event != NULL && event->type != AURORA_NONE) {
switch (event->type) {
case AURORA_EXIT:
exiting = true;
break;
case AURORA_PAUSED:
paused = true;
break;
case AURORA_UNPAUSED:
paused = false;
break;
case AURORA_WINDOW_RESIZED:
initInfo.windowSize = event->windowSize;
break;
default:
break;
}
++event;
}
if (exiting || paused || !aurora_begin_frame()) {
continue;
}
draw();
aurora_end_frame();
}
aurora_shutdown();
return 0;
}