int main(int argc, char *argv[]) { ALLEGRO_DISPLAY *display; ALLEGRO_FONT *font; (void)argc; (void)argv; if (!al_init()) { abort_example("Could not init Allegro\n"); return 1; } al_init_primitives_addon(); al_install_keyboard(); al_install_mouse(); al_init_font_addon(); al_init_image_addon(); al_set_new_display_flags(ALLEGRO_GENERATE_EXPOSE_EVENTS); display = al_create_display(800, 600); if (!display) { abort_example("Unable to create display\n"); return 1; } font = al_load_font("data/fixed_font.tga", 0, 0); if (!font) { abort_example("Failed to load data/fixed_font.tga\n"); return 1; } allegro = al_load_bitmap("data/allegro.pcx"); if (!allegro) { abort_example("Failed to load data/allegro.pcx\n"); return 1; } mysha = al_load_bitmap("data/mysha.pcx"); if (!mysha) { abort_example("Failed to load data/mysha.pcx\n"); return 1; } target = al_create_bitmap(320, 200); al_add_new_bitmap_flag(ALLEGRO_MEMORY_BITMAP); allegro_bmp = al_clone_bitmap(allegro); mysha_bmp = al_clone_bitmap(mysha); target_bmp = al_clone_bitmap(target); /* Don't remove these braces. */ { Theme theme(font); Prog prog(theme, display); prog.run(); } al_destroy_bitmap(allegro); al_destroy_bitmap(allegro_bmp); al_destroy_bitmap(mysha); al_destroy_bitmap(mysha_bmp); al_destroy_bitmap(target); al_destroy_bitmap(target_bmp); al_destroy_font(font); return 0; }
int engine_init(struct Engine_Conf *conf) { if (engine.initialized) { return 1; } // Initialize Allegro and stuff al_init(); if (!al_install_keyboard()) { puts("engine_init(): Failed to initialize the keyboard..."); return 0; } if (!al_install_mouse()) { puts("engine_init(): Failed to initialize the mouse..."); return 0; } if (al_install_audio()) { if (!al_init_acodec_addon()) { puts("engine_init(): Failed to initialize codecs..."); } al_reserve_samples(1); } else { puts("engine_init(): Failed to initialize audio..."); } // Add-ons if (!al_init_image_addon()) { puts("engine_init(): Failed to initialize image addon..."); return 0; } al_init_font_addon(); al_init_primitives_addon(); if (conf->fullscreen) { al_set_new_display_flags(ALLEGRO_FULLSCREEN_WINDOW); } // Initialize variables... engine.display = al_create_display(conf->width, conf->height); if (!engine.display) { puts("engine_init(): Failed to create a display window..."); return 0; } al_set_window_title(engine.display, conf->title); MAINCONF = conf; aspect_ratio_transform(); al_add_new_bitmap_flag(ALLEGRO_MAG_LINEAR); if (conf->buffer) { engine.buffer = al_create_bitmap(conf->width, conf->height); al_set_new_bitmap_flags(0); } font = al_create_builtin_font(); engine.timer = al_create_timer(1.0 / conf->framerate); engine.event_queue = al_create_event_queue(); engine.sm.change_state = change_state; engine.sm.push_state = push_state; engine.sm.pop_state = pop_state; set_bg_color(al_map_rgb(192, 192, 192)); srand(time(NULL)); engine.initialized = TRUE; return 1; }