package allg5 /* #define ALLEGRO_KCM_AUDIO_SRC #include #include #include #include #include #include bool init() { return al_init(); } */ import "C" import ( "errors" "runtime" ) 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 }