summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/engine.c72
1 files changed, 70 insertions, 2 deletions
diff --git a/src/engine.c b/src/engine.c
index efe760e..3dc442c 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -1,5 +1,7 @@
#include "konwinlib.h"
#include "konsofren.h"
+#include <stdlib.h>
+
#include "kontime.h"
#ifdef KON_MODULE_DEBUG
@@ -23,15 +25,66 @@ typedef struct app {
kon_assets_t *assets;
kon_font_t *font;
kon_debug_t *debug;
+ float shakeLeft;
+ int baseX, baseY;
#endif
} app_t;
+#ifdef KON_MODULE_DEBUG
+static void cmdOpacity(kon_debug_t *debug, void *user, int argc, char **argv)
+{
+ app_t *app = user;
+
+ (void)debug;
+ if (argc > 1) kon_setWindowOpacity(app->window, (float)atof(argv[1]));
+}
+
+static void cmdTopmost(kon_debug_t *debug, void *user, int argc, char **argv)
+{
+ app_t *app = user;
+
+ (void)debug;
+ if (argc > 1) kon_setWindowTopmost(app->window, atoi(argv[1]) != 0);
+}
+
+static void cmdBorderless(kon_debug_t *debug, void *user, int argc, char **argv)
+{
+ app_t *app = user;
+
+ (void)debug;
+ if (argc > 1) kon_setWindowDecorated(app->window, atoi(argv[1]) == 0);
+}
+
+static void cmdClickThrough(kon_debug_t *debug, void *user, int argc, char **argv)
+{
+ app_t *app = user;
+
+ (void)debug;
+ if (argc > 1) kon_setWindowClickThrough(app->window, atoi(argv[1]) != 0);
+}
+
+static void cmdMessage(kon_debug_t *debug, void *user, int argc, char **argv)
+{
+ (void)debug; (void)user;
+ kon_messageBox("konengine", argc > 1 ? argv[1] : "hello", KON_MESSAGE_INFO);
+}
+
+static void cmdShake(kon_debug_t *debug, void *user, int argc, char **argv)
+{
+ app_t *app = user;
+
+ (void)debug; (void)argc; (void)argv;
+ kon_getWindowPos(app->window, &app->baseX, &app->baseY);
+ app->shakeLeft = 0.5f;
+}
+#endif
+
static void frame(void *data)
{
app_t *app = (app_t *)data;
kon_display_t *display = app->display;
kon_event_t ev;
- kon_time now;
+ kon_time now, dt;
kon_mat4_t model, viewProjection;
while (kon_pollEvent(app->window, &ev)) {
@@ -48,9 +101,18 @@ static void frame(void *data)
}
now = kon_getTime();
- app->angle += (float)(now - app->last);
+ dt = now - app->last;
+ app->angle += (float)dt;
app->last = now;
+#ifdef KON_MODULE_DEBUG
+ if (app->shakeLeft > 0.0f) {
+ app->shakeLeft -= (float)dt;
+ if (app->shakeLeft > 0.0f) kon_setWindowPos(app->window, app->baseX + rand() % 21 - 10, app->baseY + rand() % 21 - 10);
+ else kon_setWindowPos(app->window, app->baseX, app->baseY);
+ }
+#endif
+
model = kon_mat4Identity();
model = kon_mat4Rotate(model, KON_VEC3(app->angle * 0.5f, app->angle, 0));
viewProjection = kon_cameraViewProjection(&app->camera, display->game->width, display->game->height);
@@ -99,6 +161,12 @@ int main(void)
if (ttf) app.font = kon_loadFont(ttf->data, ttf->size, 14.0f);
app.debug = kon_debugCreate(app.font);
kon_debugSetAssets(app.debug, app.assets);
+ kon_debugCommand(app.debug, "opacity", "window opacity 0 to 1", cmdOpacity, &app);
+ kon_debugCommand(app.debug, "topmost", "topmost 0 or 1", cmdTopmost, &app);
+ kon_debugCommand(app.debug, "borderless", "borderless 0 or 1", cmdBorderless, &app);
+ kon_debugCommand(app.debug, "clickthrough", "clickthrough 0 or 1", cmdClickThrough, &app);
+ kon_debugCommand(app.debug, "message", "message \"text\"", cmdMessage, &app);
+ kon_debugCommand(app.debug, "shake", "shake the window", cmdShake, &app);
kon_debugLog(app.debug, ttf ? "loaded font.ttf" : "put a font.ttf in assets/ for the console");
}
#endif