summary refs log tree commit diff
path: root/src/main.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/main.zig b/src/main.zig
index 70d08c1..976fdd6 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -24,22 +24,33 @@ const configuration = @import("config.zig");
 const al = @import("zeal");
 const gl = @import("zgl");
 
+var game: *legacy.Game = undefined;
+
+fn keyCallback(window: ?@typeInfo(gf.Window).Struct.fields[0].field_type,
+               key: c_int, scancode: c_int,
+               action: c_int, mods: c_int) callconv(.C) void {
+    legacy.keyCallback(game, key, action, mods);
+}
+
 pub fn main() !void {
     const loca = try Loca.init(allocator, .{});
     defer loca.deinit();
     const config = try configuration.parse(allocator, loca.user_config);
-    const game = legacy.makeGame(@bitCast(legacy.Config, config));
+    game = legacy.makeGame(@bitCast(legacy.Config, config)).?;
 
     try gf.init();
     defer gf.deinit() catch unreachable;
     const window = try gf.Window.create(config.width, config.height,
                                         "Black Shades", .{}, .{});
     try window.makeCurrent();
+    legacy.initGl(game);
+
     try window.setCursorMode(.disabled);
-    // try window.setInputMode(.raw_mouse_motion, true);
+    if (try gf.rawMouseMotionSupported())
+        try window.setInputMode(.raw_mouse_motion, true);
     try window.setInputMode(.sticky_mouse_buttons, true);
     try window.setInputMode(.sticky_keys, true);
-    legacy.initGl(game);
+    try window.setKeyCallback(keyCallback);
 
     const device = try al.Device.init(null);
     defer device.deinit() catch unreachable;