diff options
Diffstat (limited to 'src/main.zig')
-rw-r--r-- | src/main.zig | 17 |
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; |