// Main function // Copyright (C) 2021 Nguyễn Gia Phong // // This file is part of Black Shades. // // Black Shades is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published // by the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Black Shades is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Black Shades. If not, see . const Loca = @import("loca").Loca; const allocator = @import("std").heap.c_allocator; const legacy = @cImport(@cInclude("Game.h")); const configuration = @import("config.zig"); const zeal = @import("zeal"); pub fn main() !void { const loca = try Loca.init(allocator, .{}); defer loca.deinit(); const config = try configuration.parse(allocator, loca.user_config); const device = try zeal.Device.init(null); defer device.deinit() catch unreachable; const context = try zeal.Context.init(device, &.{ }); defer context.deinit() catch unreachable; try zeal.useContext(context); const game = legacy.makeGame(@bitCast(legacy.Config, config)); legacy.initGl(game); legacy.initGame(game); defer legacy.closeGame(game); legacy.eventLoop(game); }