From 5ce44c0e4ebc493b73ae725cd7066bc0d4490f6a Mon Sep 17 00:00:00 2001 From: Sebastian Krzyszkowiak Date: Wed, 22 Feb 2012 13:38:56 +0100 Subject: [PATCH] work on about screen --- src/about.c | 26 ++++++++++++++++++++++---- src/main.c | 2 +- src/main.h | 4 +++- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/about.c b/src/about.c index 8c85510..1b9d54d 100644 --- a/src/about.c +++ b/src/about.c @@ -5,7 +5,11 @@ void About_Draw(struct Game *game) { 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_text(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, "Not implemented yet!"); + float x = game->about.x; + if (x<0) x=0; + al_draw_bitmap_region(game->about.text_bitmap, 0, x*al_get_bitmap_height(game->about.text_bitmap), 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); + game->about.x+=0.0005; + if (game->about.x>1) game->about.x=0; } void About_Load(struct Game *game) { @@ -31,15 +35,27 @@ 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.sample = al_load_sample( "data/about.flac" ); - + game->about.font = al_load_ttf_font("data/ShadowsIntoLight.ttf",al_get_display_height(game->display)*0.04,0 ); + game->about.x = -0.05; if (!game->about.sample){ fprintf(stderr, "Audio clip sample not loaded!\n" ); exit(-1); } + game->about.text_bitmap = al_create_bitmap(al_get_display_width(game->display)*0.4, al_get_display_height(game->display)*2); + al_set_target_bitmap(game->about.text_bitmap); + al_clear_to_color(al_map_rgba(255,0,0,0.5)); + al_draw_text(game->about.font, al_map_rgb(255,255,255), 0, 0, ALLEGRO_ALIGN_LEFT, "Not implemented yet!"); + al_draw_text(game->about.font, al_map_rgb(255,255,255), 0, 0.2*al_get_bitmap_height(game->about.text_bitmap), ALLEGRO_ALIGN_LEFT, "Still not implemented!"); + al_draw_text(game->about.font, al_map_rgb(255,255,255), 0, 0.4*al_get_bitmap_height(game->about.text_bitmap), ALLEGRO_ALIGN_LEFT, "Please... leave me alone..."); + al_draw_text(game->about.font, al_map_rgb(255,255,255), 0, 0.6*al_get_bitmap_height(game->about.text_bitmap), ALLEGRO_ALIGN_LEFT, "I won't be implemented soon!"); + al_draw_text(game->about.font, al_map_rgb(255,255,255), 0, 0.8*al_get_bitmap_height(game->about.text_bitmap), ALLEGRO_ALIGN_LEFT, "Nope, still not implemented!"); + 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_text(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, "Not implemented yet!"); + 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); + al_set_target_bitmap(al_get_backbuffer(game->display)); } void About_Unload(struct Game *game) { @@ -47,7 +63,7 @@ void About_Unload(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_text(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, "Not implemented yet!"); + al_draw_bitmap_region(game->about.text_bitmap, 0, game->about.x*al_get_bitmap_height(game->about.text_bitmap), 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); al_set_target_bitmap(al_get_backbuffer(game->display)); for(int fadeloop=255; fadeloop>=0; fadeloop-=10){ al_wait_for_event(game->event_queue, &ev); @@ -57,5 +73,7 @@ void About_Unload(struct Game *game) { } al_destroy_bitmap(game->about.image); al_destroy_bitmap(game->about.fade_bitmap); + al_destroy_bitmap(game->about.text_bitmap); al_destroy_sample(game->about.sample); + al_destroy_font(game->about.font); } diff --git a/src/main.c b/src/main.c index e1335d4..e40a506 100644 --- a/src/main.c +++ b/src/main.c @@ -231,7 +231,7 @@ int main(int argc, char **argv){ game.loadstate = GAMESTATE_LOADING; PreloadGameState(&game); LoadGameState(&game); - game.loadstate = GAMESTATE_MENU; + game.loadstate = GAMESTATE_ABOUT; while(1) { ALLEGRO_EVENT ev; diff --git a/src/main.h b/src/main.h index 2c01e13..c1cff72 100644 --- a/src/main.h +++ b/src/main.h @@ -41,8 +41,10 @@ struct Loading { }; struct About { - ALLEGRO_BITMAP *fade_bitmap, *image; + ALLEGRO_BITMAP *fade_bitmap, *image, *text_bitmap; ALLEGRO_SAMPLE *sample; + ALLEGRO_FONT *font; + float x; }; struct Map {