diff --git a/src/about.c b/src/about.c index 5f31f9d..7810b29 100644 --- a/src/about.c +++ b/src/about.c @@ -43,7 +43,8 @@ int About_Keydown(struct Game *game, ALLEGRO_EVENT *ev) { } void About_Preload(struct Game *game) { - game->about.image = al_load_bitmap( "data/table.png" ); + game->about.image =LoadFromCache(game, "table.png", al_get_display_width(game->display), al_get_display_height(game->display)); + //game->about.image = al_load_bitmap( "data/table.png" ); game->about.letter = al_load_bitmap( "data/letter.png" ); game->about.sample = al_load_sample( "data/about.flac" ); game->about.font = al_load_ttf_font("data/ShadowsIntoLight.ttf",al_get_display_height(game->display)*0.035,0 ); @@ -111,7 +112,8 @@ void About_Preload(struct Game *game) { game->about.fade_bitmap = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display)); al_set_target_bitmap(game->about.fade_bitmap); - al_draw_scaled_bitmap(game->about.image,0,0,al_get_bitmap_width(game->about.image),al_get_bitmap_height(game->about.image),0,0,al_get_display_width(game->display), al_get_display_height(game->display),0); + al_draw_bitmap(game->about.image, 0, 0, 0); + //al_draw_scaled_bitmap(game->about.image,0,0,al_get_bitmap_width(game->about.image),al_get_bitmap_height(game->about.image),0,0,al_get_display_width(game->display), al_get_display_height(game->display),0); al_draw_scaled_bitmap(game->about.letter,0,0,al_get_bitmap_width(game->about.letter),al_get_bitmap_height(game->about.letter),0,0,al_get_display_width(game->display), al_get_display_height(game->display),0); al_draw_bitmap_region(game->about.text_bitmap, 0, 0, al_get_bitmap_width(game->about.text_bitmap), al_get_display_height(game->display)*0.8, al_get_display_width(game->display)*0.5, al_get_display_height(game->display)*0.1, 0); diff --git a/src/intro.c b/src/intro.c index 3e5bf07..10b0845 100644 --- a/src/intro.c +++ b/src/intro.c @@ -66,7 +66,10 @@ void Intro_Preload(struct Game *game) { game->intro.position = 0; game->intro.page = 0; game->intro.in_animation = false; - game->intro.table_bitmap = al_load_bitmap( "data/paper.png" ); + + game->intro.table_bitmap =LoadFromCache(game, "paper.png", al_get_display_width(game->display), al_get_display_height(game->display)); + + //game->intro.table_bitmap = al_load_bitmap( "data/paper.png" ); game->intro.sample = al_load_sample( "data/intro.flac" ); if (!game->intro.sample){ @@ -76,15 +79,15 @@ void Intro_Preload(struct Game *game) { game->intro.table = al_create_bitmap(al_get_display_width(game->display)*5, al_get_display_height(game->display)); game->intro.font = al_load_ttf_font("data/ShadowsIntoLight.ttf",al_get_display_height(game->display)*0.04,0 ); al_set_target_bitmap(game->intro.table); - al_draw_scaled_bitmap(game->intro.table_bitmap, 0, 0, al_get_bitmap_width(game->intro.table_bitmap), al_get_bitmap_height(game->intro.table_bitmap), 0, 0, al_get_display_width(game->display), al_get_display_height(game->display), 0); - al_draw_scaled_bitmap(game->intro.table_bitmap, al_get_bitmap_width(game->intro.table_bitmap)/2, 0, al_get_bitmap_width(game->intro.table_bitmap)/2, al_get_bitmap_height(game->intro.table_bitmap), al_get_display_width(game->display)*1, 0, al_get_display_width(game->display)/2, al_get_display_height(game->display), 0); - al_draw_scaled_bitmap(game->intro.table_bitmap, al_get_bitmap_width(game->intro.table_bitmap)/2, 0, al_get_bitmap_width(game->intro.table_bitmap)/2, al_get_bitmap_height(game->intro.table_bitmap), al_get_display_width(game->display)*1.5, 0, al_get_display_width(game->display)/2, al_get_display_height(game->display), 0); - al_draw_scaled_bitmap(game->intro.table_bitmap, al_get_bitmap_width(game->intro.table_bitmap)/2, 0, al_get_bitmap_width(game->intro.table_bitmap)/2, al_get_bitmap_height(game->intro.table_bitmap), al_get_display_width(game->display)*2, 0, al_get_display_width(game->display)/2, al_get_display_height(game->display), 0); - al_draw_scaled_bitmap(game->intro.table_bitmap, al_get_bitmap_width(game->intro.table_bitmap)/2, 0, al_get_bitmap_width(game->intro.table_bitmap)/2, al_get_bitmap_height(game->intro.table_bitmap), al_get_display_width(game->display)*2.5, 0, al_get_display_width(game->display)/2, al_get_display_height(game->display), 0); - al_draw_scaled_bitmap(game->intro.table_bitmap, al_get_bitmap_width(game->intro.table_bitmap)/2, 0, al_get_bitmap_width(game->intro.table_bitmap)/2, al_get_bitmap_height(game->intro.table_bitmap), al_get_display_width(game->display)*3, 0, al_get_display_width(game->display)/2, al_get_display_height(game->display), 0); - al_draw_scaled_bitmap(game->intro.table_bitmap, al_get_bitmap_width(game->intro.table_bitmap)/2, 0, al_get_bitmap_width(game->intro.table_bitmap)/2, al_get_bitmap_height(game->intro.table_bitmap), al_get_display_width(game->display)*3.5, 0, al_get_display_width(game->display)/2, al_get_display_height(game->display), 0); - al_draw_scaled_bitmap(game->intro.table_bitmap, al_get_bitmap_width(game->intro.table_bitmap)/2, 0, al_get_bitmap_width(game->intro.table_bitmap)/2, al_get_bitmap_height(game->intro.table_bitmap), al_get_display_width(game->display)*4, 0, al_get_display_width(game->display)/2, al_get_display_height(game->display), 0); - al_draw_scaled_bitmap(game->intro.table_bitmap, al_get_bitmap_width(game->intro.table_bitmap)/2, 0, al_get_bitmap_width(game->intro.table_bitmap)/2, al_get_bitmap_height(game->intro.table_bitmap), al_get_display_width(game->display)*4.5, 0, al_get_display_width(game->display)/2, al_get_display_height(game->display), 0); + al_draw_bitmap(game->intro.table_bitmap, 0, 0, 0); + al_draw_bitmap_region(game->intro.table_bitmap, al_get_bitmap_width(game->intro.table_bitmap)/2, 0, al_get_bitmap_width(game->intro.table_bitmap)/2, al_get_bitmap_height(game->intro.table_bitmap), al_get_display_width(game->display)*1, 0, 0); + al_draw_bitmap_region(game->intro.table_bitmap, al_get_bitmap_width(game->intro.table_bitmap)/2, 0, al_get_bitmap_width(game->intro.table_bitmap)/2, al_get_bitmap_height(game->intro.table_bitmap), al_get_display_width(game->display)*1.5, 0, 0); + al_draw_bitmap_region(game->intro.table_bitmap, al_get_bitmap_width(game->intro.table_bitmap)/2, 0, al_get_bitmap_width(game->intro.table_bitmap)/2, al_get_bitmap_height(game->intro.table_bitmap), al_get_display_width(game->display)*2, 0, 0); + al_draw_bitmap_region(game->intro.table_bitmap, al_get_bitmap_width(game->intro.table_bitmap)/2, 0, al_get_bitmap_width(game->intro.table_bitmap)/2, al_get_bitmap_height(game->intro.table_bitmap), al_get_display_width(game->display)*2.5, 0, 0); + al_draw_bitmap_region(game->intro.table_bitmap, al_get_bitmap_width(game->intro.table_bitmap)/2, 0, al_get_bitmap_width(game->intro.table_bitmap)/2, al_get_bitmap_height(game->intro.table_bitmap), al_get_display_width(game->display)*3, 0, 0); + al_draw_bitmap_region(game->intro.table_bitmap, al_get_bitmap_width(game->intro.table_bitmap)/2, 0, al_get_bitmap_width(game->intro.table_bitmap)/2, al_get_bitmap_height(game->intro.table_bitmap), al_get_display_width(game->display)*3.5, 0, 0); + al_draw_bitmap_region(game->intro.table_bitmap, al_get_bitmap_width(game->intro.table_bitmap)/2, 0, al_get_bitmap_width(game->intro.table_bitmap)/2, al_get_bitmap_height(game->intro.table_bitmap), al_get_display_width(game->display)*4, 0, 0); + al_draw_bitmap_region(game->intro.table_bitmap, al_get_bitmap_width(game->intro.table_bitmap)/2, 0, al_get_bitmap_width(game->intro.table_bitmap)/2, al_get_bitmap_height(game->intro.table_bitmap), al_get_display_width(game->display)*4.5, 0, 0); float y; float oldx = -1; diff --git a/src/level.c b/src/level.c index b32e308..479d794 100644 --- a/src/level.c +++ b/src/level.c @@ -58,7 +58,8 @@ void Level_Preload(struct Game *game) { game->level.derpy_frame_tmp = 0; game->level.derpy_pos = -0.2; PrintConsole(game, "Initializing level %d...", game->level.current_level); - game->level.image = al_load_bitmap( "data/table.png" ); + //game->level.image = al_load_bitmap( "data/table.png" ); + game->level.image =LoadFromCache(game, "table.png", al_get_display_width(game->display), al_get_display_height(game->display)); game->level.sample = al_load_sample( "data/moonwalk.flac" ); game->level.derpy_walkcycle = al_load_bitmap( "data/derpcycle.png" ); @@ -71,7 +72,7 @@ void Level_Preload(struct Game *game) { game->level.fade_bitmap = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display)); al_set_target_bitmap(game->level.fade_bitmap); - al_draw_scaled_bitmap(game->level.image,0,0,al_get_bitmap_width(game->level.image),al_get_bitmap_height(game->level.image),0,0,al_get_display_width(game->display), al_get_display_height(game->display),0); + al_draw_bitmap(game->level.image,0,0,0); al_draw_textf(game->font, al_map_rgb(255,255,255), al_get_display_width(game->display)/2, al_get_display_height(game->display)/2.2, ALLEGRO_ALIGN_CENTRE, "Level %d: Not implemented yet!", game->level.current_level); al_draw_text(game->font, al_map_rgb(255,255,255), al_get_display_width(game->display)/2, al_get_display_height(game->display)/1.8, ALLEGRO_ALIGN_CENTRE, "Have some moonwalk instead."); al_set_target_bitmap(al_get_backbuffer(game->display)); diff --git a/src/loading.c b/src/loading.c index 0a480d8..f31af56 100644 --- a/src/loading.c +++ b/src/loading.c @@ -79,12 +79,13 @@ void Loading_Load(struct Game *game) { else al_draw_bitmap(game->loading.image, 0, 0, 0); } else GenerateLoadingBitmap(); */ - game->loading.image = LoadFromCache(game, "loading.png", al_get_display_width(game->display), al_get_display_height(game->display)); + game->loading.image = al_load_bitmap( "data/loading.png"); + //game->loading.image = LoadFromCache(game, "loading.png", al_get_display_width(game->display), al_get_display_height(game->display)); // Scale "Loading" bitmap al_set_target_bitmap(game->loading.loading_bitmap); - al_draw_bitmap(game->loading.image, 0, 0, 0); - //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_bitmap(game->loading.image, 0, 0, 0); + 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_set_target_bitmap(al_get_backbuffer(game->display)); al_destroy_bitmap(game->loading.image); diff --git a/src/main.c b/src/main.c index e950b5f..95b3e24 100644 --- a/src/main.c +++ b/src/main.c @@ -122,16 +122,20 @@ void LoadGameState(struct Game *game) { game->loadstate = -1; } -void ScaleBitmap(ALLEGRO_BITMAP* source, int width, int height) { +void ScaleBitmap(ALLEGRO_BITMAP* source, int width, int height, float val) { + if ((al_get_bitmap_width(source)==width) && (al_get_bitmap_height(source)==height)) { + al_draw_bitmap(source, 0, 0, 0); + return; + } int x, y; for (y = 0; y < height; y++) { float pixy = ((float)y / height) * al_get_bitmap_height(source); for (x = 0; x < width; x++) { float pixx = ((float)x / width) * al_get_bitmap_width(source); - ALLEGRO_COLOR a = al_get_pixel(source, pixx-0.25, pixy-0.25); - ALLEGRO_COLOR b = al_get_pixel(source, pixx+0.25, pixy-0.25); - ALLEGRO_COLOR c = al_get_pixel(source, pixx-0.25, pixy+0.25); - ALLEGRO_COLOR d = al_get_pixel(source, pixx+0.25, pixy+0.25); + ALLEGRO_COLOR a = al_get_pixel(source, pixx-val, pixy-val); + ALLEGRO_COLOR b = al_get_pixel(source, pixx+val, pixy-val); + ALLEGRO_COLOR c = al_get_pixel(source, pixx-val, pixy+val); + ALLEGRO_COLOR d = al_get_pixel(source, pixx+val, pixy+val); 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, @@ -157,7 +161,7 @@ ALLEGRO_BITMAP* LoadFromCache(struct Game *game, char* filename, int width, int source = al_load_bitmap( origfn ); al_set_new_bitmap_flags(ALLEGRO_MAG_LINEAR | ALLEGRO_MIN_LINEAR); - ScaleBitmap(source, width, height); + ScaleBitmap(source, width, height, 0.35); al_save_bitmap(cachefn, target); PrintConsole(game, "Cache bitmap %s generated.", filename); } @@ -242,6 +246,8 @@ int main(int argc, char **argv){ 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_OPENGL, 1, ALLEGRO_SUGGEST); + al_set_new_display_option(ALLEGRO_SAMPLE_BUFFERS, 1, ALLEGRO_SUGGEST); + al_set_new_display_option(ALLEGRO_SAMPLES, 0, ALLEGRO_REQUIRE); game.display = al_create_display(game.width, game.height); if(!game.display) { fprintf(stderr, "failed to create display!\n"); diff --git a/src/main.h b/src/main.h index 76da65d..c5ca45a 100644 --- a/src/main.h +++ b/src/main.h @@ -168,7 +168,7 @@ void PrintConsole(struct Game *game, char* format, ...); /*! \brief Draws console bitmap on screen. */ void DrawConsole(struct Game *game); -void ScaleBitmap(ALLEGRO_BITMAP* source, int width, int height); +void ScaleBitmap(ALLEGRO_BITMAP* source, int width, int height, float val); ALLEGRO_BITMAP* LoadFromCache(struct Game *game, char* filename, int width, int height); #endif diff --git a/src/map.c b/src/map.c index cc9331c..0088173 100644 --- a/src/map.c +++ b/src/map.c @@ -87,13 +87,16 @@ void Map_Preload(struct Game *game) { PrintConsole(game, "Last level available: %d", game->map.selected); game->map.arrowpos = 0; game->map.map = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display)); + al_set_new_bitmap_flags(ALLEGRO_MEMORY_BITMAP); game->map.background = al_load_bitmap( "data/table.png" ); game->map.map_bg = al_load_bitmap( "data/map/background.png" ); - game->map.arrow = al_load_bitmap( "data/arrow.png" ); - game->map.click_sample = al_load_sample( "data/click.flac" ); char filename[30] = { }; sprintf(filename, "data/map/highlight%d.png", game->map.available); game->map.highlight = al_load_bitmap( filename ); + al_set_new_bitmap_flags(ALLEGRO_MAG_LINEAR | ALLEGRO_MIN_LINEAR); + + game->map.arrow = al_load_bitmap( "data/arrow.png" ); + game->map.click_sample = al_load_sample( "data/click.flac" ); game->map.sample = al_load_sample( "data/map.flac" ); if (!game->map.sample){ @@ -105,10 +108,16 @@ void Map_Preload(struct Game *game) { exit(-1); } + ALLEGRO_BITMAP *scaled =LoadFromCache(game, "table.png", al_get_display_width(game->display), al_get_display_height(game->display)); al_set_target_bitmap(game->map.map); - al_draw_scaled_bitmap(game->map.background,0,0,al_get_bitmap_width(game->map.background),al_get_bitmap_height(game->map.background),0,0,al_get_display_width(game->display), al_get_display_height(game->display),0); - al_draw_scaled_bitmap(game->map.map_bg,0,0,al_get_bitmap_width(game->map.map_bg),al_get_bitmap_height(game->map.map_bg),0,0,al_get_display_width(game->display), al_get_display_height(game->display),0); - al_draw_scaled_bitmap(game->map.highlight,0,0,al_get_bitmap_width(game->map.highlight),al_get_bitmap_height(game->map.highlight),0,0,al_get_display_width(game->display), al_get_display_height(game->display),0); + al_draw_bitmap(scaled, 0, 0 ,0); + al_destroy_bitmap(scaled); + //ScaleBitmap(game->map.background, al_get_display_width(game->display), al_get_display_height(game->display), 0.5); + ScaleBitmap(game->map.map_bg, al_get_display_width(game->display), al_get_display_height(game->display), 0.5); + ScaleBitmap(game->map.highlight, al_get_display_width(game->display), al_get_display_height(game->display), 0.5); + //al_draw_scaled_bitmap(game->map.background,0,0,al_get_bitmap_width(game->map.background),al_get_bitmap_height(game->map.background),0,0,al_get_display_width(game->display), al_get_display_height(game->display),0); + //al_draw_scaled_bitmap(game->map.map_bg,0,0,al_get_bitmap_width(game->map.map_bg),al_get_bitmap_height(game->map.map_bg),0,0,al_get_display_width(game->display), al_get_display_height(game->display),0); + //al_draw_scaled_bitmap(game->map.highlight,0,0,al_get_bitmap_width(game->map.highlight),al_get_bitmap_height(game->map.highlight),0,0,al_get_display_width(game->display), al_get_display_height(game->display),0); al_set_target_bitmap(al_get_backbuffer(game->display)); } diff --git a/src/menu.c b/src/menu.c index c935d2c..a0ddadf 100644 --- a/src/menu.c +++ b/src/menu.c @@ -112,7 +112,7 @@ void Menu_Preload(struct Game *game) { game->menu.menu_bitmap = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display)*0.45); al_set_target_bitmap(game->menu.menu_bitmap); al_clear_to_color(al_map_rgba(0,0,0,0)); - ScaleBitmap(game->menu.image, al_get_display_width(game->display), al_get_display_height(game->display)*0.45); + ScaleBitmap(game->menu.image, al_get_display_width(game->display), al_get_display_height(game->display)*0.45, 0.75); //al_draw_scaled_bitmap(game->menu.image,0, 0, al_get_bitmap_width(game->menu.image), al_get_bitmap_height(game->menu.image), 0, 0, al_get_display_width(game->display), al_get_display_height(game->display),0); al_destroy_bitmap(game->menu.image); @@ -120,21 +120,21 @@ void Menu_Preload(struct Game *game) { game->menu.cloud_bitmap = al_create_bitmap(al_get_display_width(game->display)*0.5, al_get_display_height(game->display)*0.25); al_set_target_bitmap(game->menu.cloud_bitmap); al_clear_to_color(al_map_rgba(0,0,0,0)); - ScaleBitmap(game->menu.cloud, al_get_bitmap_width(game->menu.cloud_bitmap), al_get_bitmap_height(game->menu.cloud_bitmap)); + ScaleBitmap(game->menu.cloud, al_get_bitmap_width(game->menu.cloud_bitmap), al_get_bitmap_height(game->menu.cloud_bitmap), 0.75); //al_draw_scaled_bitmap(game->menu.cloud,0, 0, al_get_bitmap_width(game->menu.cloud), al_get_bitmap_height(game->menu.cloud), 0, 0, al_get_bitmap_width(game->menu.cloud_bitmap), al_get_bitmap_height(game->menu.cloud_bitmap),0); al_destroy_bitmap(game->menu.cloud); game->menu.cloud2_bitmap = al_create_bitmap(al_get_display_width(game->display)*0.2, al_get_display_height(game->display)*0.1); al_set_target_bitmap(game->menu.cloud2_bitmap); al_clear_to_color(al_map_rgba(0,0,0,0)); - ScaleBitmap(game->menu.cloud2, al_get_bitmap_width(game->menu.cloud2_bitmap), al_get_bitmap_height(game->menu.cloud2_bitmap)); + ScaleBitmap(game->menu.cloud2, al_get_bitmap_width(game->menu.cloud2_bitmap), al_get_bitmap_height(game->menu.cloud2_bitmap), 0.75); //al_draw_scaled_bitmap(game->menu.cloud2,0, 0, al_get_bitmap_width(game->menu.cloud2), al_get_bitmap_height(game->menu.cloud2), 0, 0, al_get_bitmap_width(game->menu.cloud2_bitmap), al_get_bitmap_height(game->menu.cloud2_bitmap),0); 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_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); - ScaleBitmap(game->menu.pinkcloud, al_get_bitmap_width(game->menu.pinkcloud_scaled), al_get_bitmap_height(game->menu.pinkcloud_scaled)); + ScaleBitmap(game->menu.pinkcloud, al_get_bitmap_width(game->menu.pinkcloud_scaled), al_get_bitmap_height(game->menu.pinkcloud_scaled), 0.75); //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); @@ -149,7 +149,8 @@ void Menu_Preload(struct Game *game) { game->menu.mountain_bitmap = al_create_bitmap(al_get_display_width(game->display)*0.055, al_get_display_height(game->display)/9); al_set_target_bitmap(game->menu.mountain_bitmap); al_clear_to_color(al_map_rgba(0,0,0,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); + ScaleBitmap(game->menu.mountain, al_get_bitmap_width(game->menu.mountain_bitmap), al_get_bitmap_height(game->menu.mountain_bitmap), 0.75); + //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_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP);