zntg/allg5/system.go

67 lines
1.5 KiB
Go
Raw Normal View History

2018-11-21 13:35:14 +00:00
package allg5
/*
#define ALLEGRO_KCM_AUDIO_SRC
#include <allegro5/allegro.h>
#include <allegro5/allegro_audio.h>
#include <allegro5/allegro_font.h>
#include <allegro5/allegro_image.h>
#include <allegro5/allegro_primitives.h>
#include <allegro5/allegro_ttf.h>
bool init() {
return al_init();
}
*/
import "C"
import (
"errors"
2018-02-17 14:01:58 +00:00
"runtime"
)
2018-02-17 14:01:58 +00:00
func init() {
runtime.LockOSThread()
}
type InitConfig struct {
Audio bool
Font bool
Image bool
Primitives bool
Keyboard bool
Mouse bool
}
var InitAll = InitConfig{true, true, true, true, true, true}
// Init initializes the Allegro system
func Init(config InitConfig) error {
if !bool(C.init()) {
return errors.New("failed to initialize Allegro")
}
if config.Audio && !bool(C.al_install_audio()) {
return errors.New("failed to initialize audio addon")
}
if config.Font && !bool(C.al_init_font_addon()) {
return errors.New("failed to initialize font addon")
}
if config.Font && !bool(C.al_init_ttf_addon()) {
return errors.New("failed to initialize ttf addon")
}
if config.Image && !bool(C.al_init_image_addon()) {
return errors.New("failed to initialize image addon")
}
if config.Primitives && !bool(C.al_init_primitives_addon()) {
return errors.New("failed to initialize primitives addon")
}
if config.Keyboard && !bool(C.al_install_keyboard()) {
return errors.New("failed to install keyboard")
}
if config.Mouse && !bool(C.al_install_mouse()) {
return errors.New("failed to install mouse")
}
return nil
}