memory bitmaps, linear filtering, menu stopping instead of unloading and other stuff...

This commit is contained in:
Sebastian Krzyszkowiak 2012-02-29 23:00:59 +01:00
parent 576a206f00
commit e5dda46b31
8 changed files with 93 additions and 24 deletions

View file

@ -36,8 +36,8 @@ void About_Load(struct Game *game) {
int About_Keydown(struct Game *game, ALLEGRO_EVENT *ev) { int About_Keydown(struct Game *game, ALLEGRO_EVENT *ev) {
if (ev->keyboard.keycode == ALLEGRO_KEY_ESCAPE) { if (ev->keyboard.keycode == ALLEGRO_KEY_ESCAPE) {
UnloadGameState(game); UnloadGameState(game);
game->gamestate = GAMESTATE_LOADING;
game->loadstate = GAMESTATE_MENU; game->loadstate = GAMESTATE_MENU;
LoadGameState(game);
} }
return 0; return 0;
} }

View file

@ -16,8 +16,8 @@ void Level_Draw(struct Game *game) {
game->level.derpy_pos=game->level.derpy_pos+0.00092; game->level.derpy_pos=game->level.derpy_pos+0.00092;
if (game->level.derpy_pos>1) { UnloadGameState(game); if (game->level.derpy_pos>1) { UnloadGameState(game);
game->gamestate = GAMESTATE_LOADING; game->loadstate = GAMESTATE_MENU;
game->loadstate = GAMESTATE_MENU; return; } LoadGameState(game); return; }
game->level.derpy_frame_tmp++; game->level.derpy_frame_tmp++;
if (game->level.derpy_frame_tmp%3==0) { if (game->level.derpy_frame_tmp%3==0) {
if (game->level.derpy_frame_tmp%5==0) game->level.derpy_frame++; if (game->level.derpy_frame_tmp%5==0) game->level.derpy_frame++;
@ -47,8 +47,8 @@ void Level_Load(struct Game *game) {
int Level_Keydown(struct Game *game, ALLEGRO_EVENT *ev) { int Level_Keydown(struct Game *game, ALLEGRO_EVENT *ev) {
if (ev->keyboard.keycode == ALLEGRO_KEY_ESCAPE) { if (ev->keyboard.keycode == ALLEGRO_KEY_ESCAPE) {
UnloadGameState(game); UnloadGameState(game);
game->gamestate = GAMESTATE_LOADING;
game->loadstate = GAMESTATE_MENU; game->loadstate = GAMESTATE_MENU;
LoadGameState(game);
} }
return 0; return 0;
} }

View file

@ -36,12 +36,41 @@ void Loading_Draw(struct Game *game) {
} }
void Loading_Load(struct Game *game) { void Loading_Load(struct Game *game) {
game->loading.image = al_load_bitmap( "data/loading.png" ); al_clear_to_color(al_map_rgb(0,0,0));
al_draw_text_with_shadow(game->font, al_map_rgb(255,255,255), al_get_display_width(game->display)*0.0234, al_get_display_height(game->display)*0.85, ALLEGRO_ALIGN_LEFT, "Loading...");
DrawConsole(game);
al_flip_display();
al_set_new_bitmap_flags(ALLEGRO_MEMORY_BITMAP);
game->loading.image = al_load_bitmap( "data/loading.png" );
al_set_new_bitmap_flags(ALLEGRO_MAG_LINEAR | ALLEGRO_MIN_LINEAR);
// Scale "Loading" bitmap
game->loading.loading_bitmap = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display)); game->loading.loading_bitmap = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display));
al_set_target_bitmap(game->loading.loading_bitmap); al_set_target_bitmap(game->loading.loading_bitmap);
al_draw_scaled_bitmap(game->loading.image,0, 0, al_get_bitmap_width(game->loading.image), al_get_bitmap_height(game->loading.image), 0, 0, al_get_display_width(game->display), al_get_display_height(game->display),0);
int width = al_get_display_width(game->display);
int height = al_get_display_height(game->display);
int x, y;
for (y = 0; y < height; y++) {
float pixy = ((float)y / height) * al_get_bitmap_height(game->loading.image);
for (x = 0; x < width; x++) {
float pixx = ((float)x / width) * al_get_bitmap_width(game->loading.image);
ALLEGRO_COLOR a = al_get_pixel(game->loading.image, pixx-0.25, pixy-0.25);
ALLEGRO_COLOR b = al_get_pixel(game->loading.image, pixx+0.25, pixy-0.25);
ALLEGRO_COLOR c = al_get_pixel(game->loading.image, pixx-0.25, pixy+0.25);
ALLEGRO_COLOR d = al_get_pixel(game->loading.image, pixx+0.25, pixy+0.25);
ALLEGRO_COLOR result = al_map_rgba_f(
(a.r+b.r+c.r+d.r) / 4,
(a.g+b.b+c.g+d.g) / 4,
(a.b+b.g+c.b+d.b) / 4,
(a.a+b.a+c.a+d.a) / 4
);
al_put_pixel(x, y, result);
}
}
// Scale "Loading" bitmap
//al_draw_scaled_bitmap(game->loading.image,0, 0, al_get_bitmap_width(game->loading.image), al_get_bitmap_height(game->loading.image), 0, 0, al_get_display_width(game->display), al_get_display_height(game->display),0);
al_draw_text_with_shadow(game->font, al_map_rgb(255,255,255), al_get_display_width(game->display)*0.0234, al_get_display_height(game->display)*0.85, ALLEGRO_ALIGN_LEFT, "Loading..."); al_draw_text_with_shadow(game->font, al_map_rgb(255,255,255), al_get_display_width(game->display)*0.0234, al_get_display_height(game->display)*0.85, ALLEGRO_ALIGN_LEFT, "Loading...");
al_set_target_bitmap(al_get_backbuffer(game->display)); al_set_target_bitmap(al_get_backbuffer(game->display));
al_destroy_bitmap(game->loading.image); al_destroy_bitmap(game->loading.image);

View file

@ -67,6 +67,10 @@ void DrawConsole(struct Game *game) {
} }
void PreloadGameState(struct Game *game) { void PreloadGameState(struct Game *game) {
if ((game->loadstate==GAMESTATE_MENU) && (game->menu.loaded)) {
PrintConsole(game, "GAMESTATE_MENU already loaded, skipping...");
return;
}
switch (game->loadstate) { switch (game->loadstate) {
PRELOAD_STATE(GAMESTATE_MENU, Menu) PRELOAD_STATE(GAMESTATE_MENU, Menu)
PRELOAD_STATE(GAMESTATE_LOADING, Loading) PRELOAD_STATE(GAMESTATE_LOADING, Loading)
@ -83,7 +87,13 @@ void PreloadGameState(struct Game *game) {
void UnloadGameState(struct Game *game) { void UnloadGameState(struct Game *game) {
switch (game->gamestate) { switch (game->gamestate) {
UNLOAD_STATE(GAMESTATE_MENU, Menu) case GAMESTATE_MENU:
if (game->shuttingdown) {
PrintConsole(game, "Unload GAMESTATE_MENU..."); Menu_Unload(game);
} else {
PrintConsole(game, "Just stopping GAMESTATE_MENU..."); Menu_Stop(game);
}
break;
UNLOAD_STATE(GAMESTATE_LOADING, Loading) UNLOAD_STATE(GAMESTATE_LOADING, Loading)
UNLOAD_STATE(GAMESTATE_ABOUT, About) UNLOAD_STATE(GAMESTATE_ABOUT, About)
UNLOAD_STATE(GAMESTATE_INTRO, Intro) UNLOAD_STATE(GAMESTATE_INTRO, Intro)
@ -136,8 +146,6 @@ int main(int argc, char **argv){
fprintf(stderr, "failed to initialize allegro!\n"); fprintf(stderr, "failed to initialize allegro!\n");
return -1; return -1;
} }
al_set_new_bitmap_flags(ALLEGRO_MIN_LINEAR^ALLEGRO_MAG_LINEAR);
game.timer = al_create_timer(ALLEGRO_BPS_TO_SECS(game.fps)); game.timer = al_create_timer(ALLEGRO_BPS_TO_SECS(game.fps));
if(!game.timer) { if(!game.timer) {
@ -181,6 +189,7 @@ int main(int argc, char **argv){
if (game.fullscreen) al_set_new_display_flags(ALLEGRO_FULLSCREEN_WINDOW); if (game.fullscreen) al_set_new_display_flags(ALLEGRO_FULLSCREEN_WINDOW);
al_set_new_display_option(ALLEGRO_VSYNC, 1, ALLEGRO_SUGGEST); al_set_new_display_option(ALLEGRO_VSYNC, 1, ALLEGRO_SUGGEST);
al_set_new_display_option(ALLEGRO_OPENGL, 1, ALLEGRO_SUGGEST);
game.display = al_create_display(game.width, game.height); game.display = al_create_display(game.width, game.height);
if(!game.display) { if(!game.display) {
fprintf(stderr, "failed to create display!\n"); fprintf(stderr, "failed to create display!\n");
@ -188,6 +197,9 @@ int main(int argc, char **argv){
} }
al_set_window_title(game.display, "Super Derpy: Muffin Attack"); al_set_window_title(game.display, "Super Derpy: Muffin Attack");
if (game.fullscreen) al_hide_mouse_cursor(game.display); if (game.fullscreen) al_hide_mouse_cursor(game.display);
al_set_new_bitmap_flags(ALLEGRO_MAG_LINEAR | ALLEGRO_MIN_LINEAR);
game.font = al_load_ttf_font("data/ShadowsIntoLight.ttf",al_get_display_height(game.display)*0.09,0 ); game.font = al_load_ttf_font("data/ShadowsIntoLight.ttf",al_get_display_height(game.display)*0.09,0 );
game.font_console = al_load_ttf_font("data/DejaVuSansMono.ttf",al_get_display_height(game.display)*0.018,0 ); game.font_console = al_load_ttf_font("data/DejaVuSansMono.ttf",al_get_display_height(game.display)*0.018,0 );
@ -213,6 +225,8 @@ int main(int argc, char **argv){
al_start_timer(game.timer); al_start_timer(game.timer);
game.shuttingdown = false;
game.menu.loaded = false;
game.loadstate = GAMESTATE_LOADING; game.loadstate = GAMESTATE_LOADING;
PreloadGameState(&game); PreloadGameState(&game);
LoadGameState(&game); LoadGameState(&game);
@ -273,6 +287,7 @@ int main(int argc, char **argv){
al_flip_display(); al_flip_display();
} }
} }
game.shuttingdown = true;
UnloadGameState(&game); UnloadGameState(&game);
if (game.gamestate != GAMESTATE_LOADING) { if (game.gamestate != GAMESTATE_LOADING) {
game.gamestate = GAMESTATE_LOADING; game.gamestate = GAMESTATE_LOADING;

View file

@ -50,8 +50,10 @@ struct Menu {
ALLEGRO_BITMAP *pie; ALLEGRO_BITMAP *pie;
ALLEGRO_BITMAP *pie_bitmap; ALLEGRO_BITMAP *pie_bitmap;
ALLEGRO_BITMAP *pinkcloud_bitmap; ALLEGRO_BITMAP *pinkcloud_bitmap;
ALLEGRO_BITMAP *pinkcloud_scaled;
ALLEGRO_BITMAP *pinkcloud; ALLEGRO_BITMAP *pinkcloud;
ALLEGRO_BITMAP *rain; ALLEGRO_BITMAP *rain;
ALLEGRO_BITMAP *rain_bitmap;
ALLEGRO_BITMAP *mountain_bitmap; ALLEGRO_BITMAP *mountain_bitmap;
ALLEGRO_BITMAP *mountain; ALLEGRO_BITMAP *mountain;
float cloud_position; float cloud_position;
@ -67,6 +69,7 @@ struct Menu {
int selected; int selected;
bool options; bool options;
bool draw_while_fading; bool draw_while_fading;
bool loaded;
}; };
/*! \brief Resources used by Loading state. */ /*! \brief Resources used by Loading state. */
@ -129,6 +132,7 @@ struct Game {
int fps; int fps;
int width; int width;
int height; int height;
bool shuttingdown;
struct Menu menu; struct Menu menu;
struct Loading loading; struct Loading loading;
struct Intro intro; struct Intro intro;

View file

@ -71,8 +71,8 @@ int Map_Keydown(struct Game *game, ALLEGRO_EVENT *ev) {
return 0; return 0;
} else if (ev->keyboard.keycode == ALLEGRO_KEY_ESCAPE) { } else if (ev->keyboard.keycode == ALLEGRO_KEY_ESCAPE) {
UnloadGameState(game); UnloadGameState(game);
game->gamestate = GAMESTATE_LOADING;
game->loadstate = GAMESTATE_MENU; game->loadstate = GAMESTATE_MENU;
LoadGameState(game);
return 0; return 0;
} else { return 0; } } else { return 0; }
if (game->map.selected<1) game->map.selected=1; if (game->map.selected<1) game->map.selected=1;

View file

@ -15,11 +15,11 @@ void Menu_Draw(struct Game *game) {
float x = 1.5;//*(rand() / (float)RAND_MAX); float x = 1.5;//*(rand() / (float)RAND_MAX);
int minus; int minus;
if (game->menu.cloud_position>0) minus=1; else minus=-1; if (game->menu.cloud_position>0) minus=1; else minus=-1;
al_draw_scaled_bitmap(game->menu.rain, 0, 0, al_get_bitmap_width(game->menu.rain), al_get_bitmap_height(game->menu.rain), fmod(minus*game->menu.cloud_position,3)*x*5+al_get_bitmap_width(game->menu.pinkcloud_bitmap)/2.7, al_get_bitmap_height(game->menu.pinkcloud_bitmap)*(0.88+(fmod(-1.8*(game->menu.cloud_position+80), 6))/20.0), al_get_bitmap_width(game->menu.pinkcloud_bitmap)*0.5, al_get_bitmap_height(game->menu.pinkcloud_bitmap)*0.1, 0); al_draw_bitmap(game->menu.rain_bitmap, fmod(minus*game->menu.cloud_position,3)*x*5+al_get_bitmap_width(game->menu.pinkcloud_bitmap)/2.7, al_get_bitmap_height(game->menu.pinkcloud_bitmap)*(0.88+(fmod(-1.8*(game->menu.cloud_position+80), 6))/20.0), 0);
al_draw_scaled_bitmap(game->menu.rain, 0, 0, al_get_bitmap_width(game->menu.rain), al_get_bitmap_height(game->menu.rain), fmod(minus*game->menu.cloud_position,3)*x*3+al_get_bitmap_width(game->menu.pinkcloud_bitmap)/3.1, al_get_bitmap_height(game->menu.pinkcloud_bitmap)*(0.78+(fmod(-2.8*(game->menu.cloud_position+80), 4))/18.0), al_get_bitmap_width(game->menu.pinkcloud_bitmap)*0.5, al_get_bitmap_height(game->menu.pinkcloud_bitmap)*0.1, 0); al_draw_bitmap(game->menu.rain_bitmap, fmod(minus*game->menu.cloud_position,3)*x*3+al_get_bitmap_width(game->menu.pinkcloud_bitmap)/3.1, al_get_bitmap_height(game->menu.pinkcloud_bitmap)*(0.78+(fmod(-2.8*(game->menu.cloud_position+80), 4))/18.0), 0);
al_draw_scaled_bitmap(game->menu.rain, 0, 0, al_get_bitmap_width(game->menu.rain), al_get_bitmap_height(game->menu.rain), fmod(minus*game->menu.cloud_position,3)*x*6+al_get_bitmap_width(game->menu.pinkcloud_bitmap)/2.1, al_get_bitmap_height(game->menu.pinkcloud_bitmap)*(0.87+(fmod(-4.9*(game->menu.cloud_position+80), 8))/26.0), al_get_bitmap_width(game->menu.pinkcloud_bitmap)*0.4, al_get_bitmap_height(game->menu.pinkcloud_bitmap)*0.08, 0); al_draw_scaled_bitmap(game->menu.rain_bitmap, 0, 0, al_get_bitmap_width(game->menu.rain_bitmap), al_get_bitmap_height(game->menu.rain_bitmap), fmod(minus*game->menu.cloud_position,3)*x*6+al_get_bitmap_width(game->menu.pinkcloud_bitmap)/2.1, al_get_bitmap_height(game->menu.pinkcloud_bitmap)*(0.87+(fmod(-4.9*(game->menu.cloud_position+80), 8))/26.0), al_get_bitmap_width(game->menu.pinkcloud_bitmap)*0.4, al_get_bitmap_height(game->menu.pinkcloud_bitmap)*0.08, 0);
//al_draw_scaled_bitmap(game->menu.rain, 0, 0, al_get_bitmap_width(game->menu.rain), al_get_bitmap_height(game->menu.rain), fmod(minus*game->menu.cloud_position,3)*x*6+al_get_bitmap_width(game->menu.pinkcloud_bitmap)/2.4, al_get_bitmap_height(game->menu.pinkcloud_bitmap)*(0.9+(fmod(-5*(game->menu.cloud_position+86), 8))/20.0), al_get_bitmap_width(game->menu.pinkcloud_bitmap)*0.35, al_get_bitmap_height(game->menu.pinkcloud_bitmap)*0.07, 0); //al_draw_scaled_bitmap(game->menu.rain, 0, 0, al_get_bitmap_width(game->menu.rain), al_get_bitmap_height(game->menu.rain), fmod(minus*game->menu.cloud_position,3)*x*6+al_get_bitmap_width(game->menu.pinkcloud_bitmap)/2.4, al_get_bitmap_height(game->menu.pinkcloud_bitmap)*(0.9+(fmod(-5*(game->menu.cloud_position+86), 8))/20.0), al_get_bitmap_width(game->menu.pinkcloud_bitmap)*0.35, al_get_bitmap_height(game->menu.pinkcloud_bitmap)*0.07, 0);
al_draw_scaled_bitmap(game->menu.pinkcloud,0, 0, al_get_bitmap_width(game->menu.pinkcloud), al_get_bitmap_height(game->menu.pinkcloud), 0, 0, al_get_bitmap_width(game->menu.pinkcloud_bitmap), al_get_bitmap_height(game->menu.pinkcloud_bitmap)*0.8122,0); al_draw_bitmap(game->menu.pinkcloud_scaled, 0, 0, 0);
al_set_target_bitmap(al_get_backbuffer(game->display)); al_set_target_bitmap(al_get_backbuffer(game->display));
al_clear_to_color(al_map_rgb(183,234,193)); al_clear_to_color(al_map_rgb(183,234,193));
@ -68,22 +68,26 @@ void Menu_Draw(struct Game *game) {
} }
void Menu_Preload(struct Game *game) { void Menu_Preload(struct Game *game) {
game->menu.loaded = true;
game->menu.draw_while_fading = atoi(GetConfigOptionDefault("[MuffinAttack]", "menu_draw_while_fading", "1")); game->menu.draw_while_fading = atoi(GetConfigOptionDefault("[MuffinAttack]", "menu_draw_while_fading", "1"));
game->menu.cloud_position = 100; game->menu.cloud_position = 100;
game->menu.cloud2_position = 100; game->menu.cloud2_position = 100;
game->menu.options = false; game->menu.options = false;
//game->menu.image = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display)); //game->menu.image = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display));
//al_destroy_bitmap(game->menu.image); // ugh... //al_destroy_bitmap(game->menu.image); // ugh...
al_set_new_bitmap_flags(ALLEGRO_MAG_LINEAR | ALLEGRO_MEMORY_BITMAP);
game->menu.image = al_load_bitmap( "data/menu.png" ); game->menu.image = al_load_bitmap( "data/menu.png" );
game->menu.mountain = al_load_bitmap( "data/mountain.png" ); game->menu.mountain = al_load_bitmap( "data/mountain.png" );
game->menu.cloud = al_load_bitmap( "data/cloud.png" );
game->menu.cloud2 = al_load_bitmap( "data/cloud2.png" );
game->menu.rain = al_load_bitmap( "data/rain.png" );
game->menu.pie = al_load_bitmap( "data/pie.png" );
game->menu.pinkcloud = al_load_bitmap( "data/pinkcloud.png" );
al_set_new_bitmap_flags(ALLEGRO_MAG_LINEAR);
game->menu.sample = al_load_sample( "data/menu.flac" ); game->menu.sample = al_load_sample( "data/menu.flac" );
game->menu.rain_sample = al_load_sample( "data/rain.flac" ); game->menu.rain_sample = al_load_sample( "data/rain.flac" );
game->menu.click_sample = al_load_sample( "data/click.flac" ); game->menu.click_sample = al_load_sample( "data/click.flac" );
game->menu.cloud = al_load_bitmap( "data/cloud.png" );
game->menu.cloud2 = al_load_bitmap( "data/cloud2.png" );
game->menu.pinkcloud = al_load_bitmap( "data/pinkcloud.png" );
game->menu.pie = al_load_bitmap( "data/pie.png" );
game->menu.rain = al_load_bitmap( "data/rain.png" );
game->menu.mountain_position = al_get_display_width(game->display)*0.7; game->menu.mountain_position = al_get_display_width(game->display)*0.7;
game->menu.font_title = al_load_ttf_font("data/ShadowsIntoLight.ttf",al_get_display_height(game->display)*0.16,0 ); game->menu.font_title = al_load_ttf_font("data/ShadowsIntoLight.ttf",al_get_display_height(game->display)*0.16,0 );
@ -127,6 +131,10 @@ void Menu_Preload(struct Game *game) {
al_destroy_bitmap(game->menu.cloud2); al_destroy_bitmap(game->menu.cloud2);
game->menu.pinkcloud_bitmap = al_create_bitmap(al_get_display_width(game->display)*0.33125, al_get_display_height(game->display)); //*0.8122); game->menu.pinkcloud_bitmap = al_create_bitmap(al_get_display_width(game->display)*0.33125, al_get_display_height(game->display)); //*0.8122);
game->menu.pinkcloud_scaled = al_create_bitmap(al_get_bitmap_width(game->menu.pinkcloud_bitmap), al_get_bitmap_height(game->menu.pinkcloud_bitmap)*0.8122);
al_set_target_bitmap(game->menu.pinkcloud_scaled);
al_draw_scaled_bitmap(game->menu.pinkcloud,0, 0, al_get_bitmap_width(game->menu.pinkcloud), al_get_bitmap_height(game->menu.pinkcloud), 0, 0, al_get_bitmap_width(game->menu.pinkcloud_scaled), al_get_bitmap_height(game->menu.pinkcloud_scaled),0);
al_destroy_bitmap(game->menu.pinkcloud);
game->menu.pie_bitmap = al_create_bitmap(al_get_display_width(game->display)/2, al_get_display_height(game->display)); //*0.8122); game->menu.pie_bitmap = al_create_bitmap(al_get_display_width(game->display)/2, al_get_display_height(game->display)); //*0.8122);
al_set_target_bitmap(game->menu.pie_bitmap); al_set_target_bitmap(game->menu.pie_bitmap);
@ -142,11 +150,18 @@ void Menu_Preload(struct Game *game) {
al_draw_scaled_bitmap(game->menu.mountain,0, 0, al_get_bitmap_width(game->menu.mountain), al_get_bitmap_height(game->menu.mountain), 0, 0, al_get_bitmap_width(game->menu.mountain_bitmap), al_get_bitmap_height(game->menu.mountain_bitmap),0); al_draw_scaled_bitmap(game->menu.mountain,0, 0, al_get_bitmap_width(game->menu.mountain), al_get_bitmap_height(game->menu.mountain), 0, 0, al_get_bitmap_width(game->menu.mountain_bitmap), al_get_bitmap_height(game->menu.mountain_bitmap),0);
al_destroy_bitmap(game->menu.mountain); al_destroy_bitmap(game->menu.mountain);
al_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP);
game->menu.rain_bitmap = al_create_bitmap(al_get_bitmap_width(game->menu.pinkcloud_bitmap)*0.5, al_get_bitmap_height(game->menu.pinkcloud_bitmap)*0.1);
al_set_new_bitmap_flags(ALLEGRO_MIN_LINEAR | ALLEGRO_MAG_LINEAR);
al_set_target_bitmap(game->menu.rain_bitmap);
al_clear_to_color(al_map_rgba(0,0,0,0));
al_draw_scaled_bitmap(game->menu.rain,0, 0, al_get_bitmap_width(game->menu.rain), al_get_bitmap_height(game->menu.rain), 0, 0, al_get_bitmap_width(game->menu.rain_bitmap), al_get_bitmap_height(game->menu.rain_bitmap),0);
al_destroy_bitmap(game->menu.rain);
game->menu.selected = 0; game->menu.selected = 0;
} }
void Menu_Unload(struct Game *game) { void Menu_Stop(struct Game* game) {
game->menu.menu_fade_bitmap = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display)); game->menu.menu_fade_bitmap = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display));
ALLEGRO_EVENT ev; ALLEGRO_EVENT ev;
@ -163,13 +178,18 @@ void Menu_Unload(struct Game *game) {
DrawConsole(game); DrawConsole(game);
al_flip_display(); al_flip_display();
} }
al_stop_samples();
}
void Menu_Unload(struct Game *game) {
Menu_Stop(game);
al_destroy_bitmap(game->menu.menu_fade_bitmap); al_destroy_bitmap(game->menu.menu_fade_bitmap);
al_destroy_bitmap(game->menu.pinkcloud); al_destroy_bitmap(game->menu.pinkcloud_scaled);
al_destroy_bitmap(game->menu.menu_bitmap); al_destroy_bitmap(game->menu.menu_bitmap);
al_destroy_bitmap(game->menu.cloud_bitmap); al_destroy_bitmap(game->menu.cloud_bitmap);
al_destroy_bitmap(game->menu.cloud2_bitmap); al_destroy_bitmap(game->menu.cloud2_bitmap);
al_destroy_bitmap(game->menu.pinkcloud_bitmap); al_destroy_bitmap(game->menu.pinkcloud_bitmap);
al_destroy_bitmap(game->menu.rain); al_destroy_bitmap(game->menu.rain_bitmap);
al_destroy_bitmap(game->menu.mountain_bitmap); al_destroy_bitmap(game->menu.mountain_bitmap);
al_destroy_bitmap(game->menu.pie_bitmap); al_destroy_bitmap(game->menu.pie_bitmap);
al_destroy_font(game->menu.font_title); al_destroy_font(game->menu.font_title);

View file

@ -6,6 +6,7 @@
void Menu_Draw(struct Game *game); void Menu_Draw(struct Game *game);
void Menu_Preload(struct Game *game); void Menu_Preload(struct Game *game);
void Menu_Stop(struct Game *game);
void Menu_Unload(struct Game *game); void Menu_Unload(struct Game *game);
void Menu_Load(struct Game *game); void Menu_Load(struct Game *game);
int Menu_Keydown(struct Game *game, ALLEGRO_EVENT *ev); int Menu_Keydown(struct Game *game, ALLEGRO_EVENT *ev);