From 380595e0ce06287d069ab08da7062a74312549dc Mon Sep 17 00:00:00 2001 From: Sebastian Krzyszkowiak Date: Sat, 18 Feb 2012 04:14:35 +0100 Subject: [PATCH] lots of random changes --- intro.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++------- main.c | 14 +++++++++++ main.h | 8 +++++++ menu.c | 8 +++---- 4 files changed, 91 insertions(+), 13 deletions(-) diff --git a/intro.c b/intro.c index 5925271..4aba5b5 100644 --- a/intro.c +++ b/intro.c @@ -1,19 +1,75 @@ #include #include +#include #include "intro.h" void Intro_Draw(struct Game *game) { al_clear_to_color(al_map_rgb(0,0,0)); + //printf("%f\n", ((-1*((game->intro.position)%al_get_display_width(game->display)))/(float)al_get_display_width(game->display))); + if (game->intro.in_animation) + al_draw_bitmap(game->intro.table, -1*(game->intro.page)*al_get_display_width(game->display) + cos(((-1*((game->intro.position)%al_get_display_width(game->display)))/(float)al_get_display_width(game->display))*(3.1415/2))*al_get_display_width(game->display), al_get_display_height(game->display)*((game->intro.position/3.0)/(float)al_get_display_width(game->display)), 0); + else + al_draw_bitmap(game->intro.table, -1*(game->intro.page)*al_get_display_width(game->display), al_get_display_height(game->display)*((game->intro.position/3.0)/(float)al_get_display_width(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!"); - DrawConsole(game); - al_flip_display(); - al_rest(5.0); - UnloadGameState(game); - game->gamestate = GAMESTATE_LOADING; - game->loadstate = GAMESTATE_MENU; + //PrintConsole(game, "drawing"); + if (game->intro.in_animation) { + //PrintConsole(game, "animating"); + game->intro.position -= 5; + if (game->intro.position%al_get_display_width(game->display)==0) { + game->intro.in_animation = false; + PrintConsole(game, "Animation finished."); + } + else if (game->intro.position<=-3*al_get_display_width(game->display)) { + PrintConsole(game, "This was the last page."); + UnloadGameState(game); + game->gamestate = GAMESTATE_LOADING; + game->loadstate = GAMESTATE_MENU; + } + } } void Intro_Load(struct Game *game) {} -int Intro_Keydown(struct Game *game, ALLEGRO_EVENT *ev) { return 0; } -void Intro_Preload(struct Game *game) {} -void Intro_Unload(struct Game *game) {} +int Intro_Keydown(struct Game *game, ALLEGRO_EVENT *ev) { + if (ev->keyboard.keycode == ALLEGRO_KEY_ESCAPE) { + UnloadGameState(game); + game->gamestate = GAMESTATE_LOADING; + game->loadstate = GAMESTATE_MENU; + return 0; + } + if (!game->intro.in_animation) { + PrintConsole(game, "Animate page..."); + game->intro.in_animation = true; + game->intro.page++; + } + return 0; +} +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( "table.png" ); + game->intro.table = al_create_bitmap(al_get_display_width(game->display)*4, al_get_display_height(game->display)*2); + al_set_target_bitmap(game->intro.table); + al_draw_bitmap(game->intro.table_bitmap, 0, 0, 0); + //game->intro.table_bitmap = al_load_bitmap( "loading.png" ); + al_draw_bitmap(game->intro.table_bitmap, al_get_display_width(game->display), 0, ALLEGRO_FLIP_HORIZONTAL); + //game->intro.table_bitmap = al_load_bitmap( "menu.png" ); + al_draw_bitmap(game->intro.table_bitmap, al_get_display_width(game->display)*2, 0, 0); + //game->intro.table_bitmap = al_load_bitmap( "table.png" ); + al_draw_bitmap(game->intro.table_bitmap, al_get_display_width(game->display)*3, 0, ALLEGRO_FLIP_HORIZONTAL); + + //game->intro.table_bitmap = al_load_bitmap( "loading.png" ); + al_draw_bitmap(game->intro.table_bitmap, 0, al_get_display_height(game->display), ALLEGRO_FLIP_VERTICAL); + //game->intro.table_bitmap = al_load_bitmap( "loading.png" ); + al_draw_bitmap(game->intro.table_bitmap, al_get_display_width(game->display), al_get_display_height(game->display), ALLEGRO_FLIP_VERTICAL | ALLEGRO_FLIP_HORIZONTAL); + //game->intro.table_bitmap = al_load_bitmap( "table.png" ); + al_draw_bitmap(game->intro.table_bitmap, al_get_display_width(game->display)*2, al_get_display_height(game->display), ALLEGRO_FLIP_VERTICAL); + //game->intro.table_bitmap = al_load_bitmap( "menu.png" ); + al_draw_bitmap(game->intro.table_bitmap, al_get_display_width(game->display)*3, al_get_display_height(game->display), ALLEGRO_FLIP_VERTICAL | ALLEGRO_FLIP_HORIZONTAL); + + al_set_target_bitmap(al_get_backbuffer(game->display)); +} +void Intro_Unload(struct Game *game) { + al_destroy_bitmap(game->intro.table_bitmap); + al_destroy_bitmap(game->intro.table); +} diff --git a/main.c b/main.c index c657e7b..51dae17 100644 --- a/main.c +++ b/main.c @@ -22,6 +22,7 @@ void PrintConsole(struct Game *game, char* text) { //al_draw_bitmap_region(game->console, 0, al_get_bitmap_height(game->console)*0.2, al_get_bitmap_width(game->console), al_get_bitmap_height(game->console)*0.8, 0, 0, 0); al_draw_bitmap(con, 0, 0, 0); al_set_target_bitmap(al_get_backbuffer(game->display)); + al_destroy_bitmap(con); } void DrawConsole(struct Game *game) { @@ -211,6 +212,19 @@ int main(int argc, char **argv){ else if (game.gamestate==GAMESTATE_ABOUT) { if (About_Keydown(&game, &ev)) break; } + else if (game.gamestate==GAMESTATE_INTRO) { + if (Intro_Keydown(&game, &ev)) break; + } + else { + game.showconsole = true; + PrintConsole(&game, "ERROR: Keystroke in unknown gamestate! (5 sec sleep)"); + DrawConsole(&game); + al_flip_display(); + al_rest(5.0); + PrintConsole(&game, "Returning to menu..."); + game.gamestate = GAMESTATE_LOADING; + game.loadstate = GAMESTATE_MENU; + } } if(redraw && al_is_event_queue_empty(game.event_queue)) { diff --git a/main.h b/main.h index d1fb74d..4d3f81d 100644 --- a/main.h +++ b/main.h @@ -32,6 +32,13 @@ struct Loading { ALLEGRO_BITMAP *loading_bitmap, *image; }; +struct Intro { + int position; + int page; + bool in_animation; + ALLEGRO_BITMAP *table, *table_bitmap; +}; + struct Game { ALLEGRO_DISPLAY *display; ALLEGRO_FONT *font, *font_console; @@ -43,6 +50,7 @@ struct Game { bool showconsole; struct Menu menu; struct Loading loading; + struct Intro intro; }; void PreloadGameState(struct Game *game); diff --git a/menu.c b/menu.c index 4e3fb25..2bf30e9 100644 --- a/menu.c +++ b/menu.c @@ -13,9 +13,9 @@ void Menu_Draw(struct Game *game) { float x = 1.5;//*(rand() / (float)RAND_MAX); int minus; 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(-2*(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_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(-3*(game->menu.cloud_position+80), 4))/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_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(-5*(game->menu.cloud_position+80), 8))/24.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*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_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_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.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_set_target_bitmap(al_get_backbuffer(game->display)); @@ -26,7 +26,7 @@ void Menu_Draw(struct Game *game) { al_draw_scaled_bitmap(game->menu.cloud_bitmap,0,0,al_get_bitmap_width(game->menu.cloud_bitmap), al_get_bitmap_height(game->menu.cloud_bitmap), al_get_display_width(game->display)*(sin((game->menu.cloud_position/40)-4.5)-0.3), al_get_display_height(game->display)*0.35, al_get_bitmap_width(game->menu.cloud_bitmap)/2, al_get_bitmap_height(game->menu.cloud_bitmap)/2,0); al_draw_bitmap(game->menu.cloud2_bitmap,al_get_display_width(game->display)*(game->menu.cloud2_position/100.0), al_get_display_height(game->display)/1.5,0); al_draw_bitmap(game->menu.menu_bitmap,0, 0,0); - al_draw_bitmap(game->menu.pinkcloud_bitmap,(al_get_display_width(game->display)*0.132) + (cos((game->menu.cloud_position/50+80)*1.74444))*20, 0,0); + al_draw_bitmap(game->menu.pinkcloud_bitmap,(al_get_display_width(game->display)*0.12) + (cos((game->menu.cloud_position/25+80)*1.74444))*40, 0,0); al_draw_bitmap(game->menu.cloud_bitmap,al_get_display_width(game->display)*game->menu.cloud_position/100, 30,0); al_draw_bitmap(game->menu.pie_bitmap, al_get_display_width(game->display)/2, al_get_display_height(game->display)*(game->menu.cloud_position)/10,0);