// 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 legacy = @cImport({ @cInclude("Game.h"); }); const alc = @cImport({ @cInclude("AL/alc.h"); }); fn initAl() void { // FIXME: check for errors const device = alc.alcOpenDevice(null); const context = alc.alcCreateContext(device, null); _ = alc.alcMakeContextCurrent(context); } fn closeAl() void { const context = alc.alcGetCurrentContext().?; const device = alc.alcGetContextsDevice(context); _ = alc.alcMakeContextCurrent(null); alc.alcDestroyContext(context); _ = alc.alcCloseDevice(device); } pub fn main() void { initAl(); defer closeAl(); const game = legacy.makeGame(); legacy.initGl(game); legacy.initGame(game); defer legacy.closeGame(game); legacy.eventLoop(game); }