package allegro5 // #include // #include // #include // #include // #include // bool init() { // return al_init(); // } import "C" import ( "errors" "runtime" ) func init() { runtime.LockOSThread() } type InitConfig struct { Font bool Image bool Primitives bool Keyboard bool Mouse bool } var InitAll = InitConfig{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.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 }