From f488b7ffafcbc9c0f1b14cf4236187d16f0a9173 Mon Sep 17 00:00:00 2001 From: Sebastian Krzyszkowiak Date: Sat, 25 Feb 2012 16:46:25 +0100 Subject: [PATCH] add Derpy to "level not implemented" screen :D --- src/level.c | 23 +++++++++++++++++++++++ src/main.h | 5 +++-- src/map.c | 2 +- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/level.c b/src/level.c index 6e484d6..7f82879 100644 --- a/src/level.c +++ b/src/level.c @@ -4,7 +4,23 @@ #include "level.h" void Level_Draw(struct Game *game) { + al_set_target_bitmap(game->level.derpytmp); + al_clear_to_color(al_map_rgba(0,0,0,0)); + al_draw_bitmap_region(game->level.derpy_walkcycle,500*(game->level.derpy_frame%6),400*(game->level.derpy_frame/6),500,400,0,0,0); + al_set_target_bitmap(game->level.derpy); + al_clear_to_color(al_map_rgba(0,0,0,0)); + al_draw_scaled_bitmap(game->level.derpytmp, 0, 0, al_get_bitmap_width(game->level.derpytmp),al_get_bitmap_height(game->level.derpytmp), 0, 0, al_get_bitmap_width(game->level.derpy),al_get_bitmap_height(game->level.derpy), 0); + al_set_target_bitmap(al_get_backbuffer(game->display)); + + game->level.derpy_pos=game->level.derpy_pos+0.00092; + if (game->level.derpy_pos>1) game->level.derpy_pos=-0.2; + game->level.derpy_frame_tmp++; + if (game->level.derpy_frame_tmp%3==0) { + game->level.derpy_frame++; + if (game->level.derpy_frame==24) game->level.derpy_frame=0; + } 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.derpy, game->level.derpy_pos*al_get_display_width(game->display), al_get_display_height(game->display)-al_get_bitmap_height(game->level.derpy), 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, ALLEGRO_ALIGN_CENTRE, "Level %d: Not implemented yet!", game->level.current_level); } @@ -29,14 +45,21 @@ int Level_Keydown(struct Game *game, ALLEGRO_EVENT *ev) { return 0; } void Level_Preload(struct Game *game) { + game->level.derpy_frame = 0; + 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.sample = al_load_sample( "data/about.flac" ); + game->level.derpy_walkcycle = al_load_bitmap( "data/derpcycle.png" ); if (!game->level.sample){ fprintf(stderr, "Audio clip sample not loaded!\n" ); exit(-1); } + game->level.derpy = al_create_bitmap(al_get_display_width(game->display)*0.1953125, al_get_display_height(game->display)*0.25); + game->level.derpytmp = al_create_bitmap(500, 400); + 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); diff --git a/src/main.h b/src/main.h index 0626e75..398c547 100644 --- a/src/main.h +++ b/src/main.h @@ -18,9 +18,10 @@ enum gamestate_enum { }; struct Level { - ALLEGRO_BITMAP *fade_bitmap, *image; + ALLEGRO_BITMAP *fade_bitmap, *image, *derpy_walkcycle, *derpy, *derpytmp; ALLEGRO_SAMPLE *sample; - int current_level; + int current_level, derpy_frame, derpy_frame_tmp; + double derpy_pos; }; struct Menu { diff --git a/src/map.c b/src/map.c index b416b72..4b6427f 100644 --- a/src/map.c +++ b/src/map.c @@ -59,7 +59,6 @@ int Map_Keydown(struct Game *game, ALLEGRO_EVENT *ev) { al_play_sample(game->map.click_sample, 1.0, 0.0, 1.0, ALLEGRO_PLAYMODE_ONCE, NULL); } else if (ev->keyboard.keycode==ALLEGRO_KEY_ENTER) { PrintConsole(game, "Selecting level %d...", game->map.selected); - game->level.current_level = game->map.selected; UnloadGameState(game); game->gamestate = GAMESTATE_LOADING; game->loadstate = GAMESTATE_LEVEL; @@ -106,6 +105,7 @@ void Map_Preload(struct Game *game) { al_set_target_bitmap(al_get_backbuffer(game->display)); } void Map_Unload(struct Game *game) { + game->level.current_level = game->map.selected; ALLEGRO_EVENT ev; for(int fadeloop=255; fadeloop>=0; fadeloop-=10){ al_wait_for_event(game->event_queue, &ev);