lots of random changes

This commit is contained in:
Sebastian Krzyszkowiak 2012-02-18 04:14:35 +01:00
parent 58dd22abfb
commit 380595e0ce
4 changed files with 91 additions and 13 deletions

68
intro.c
View file

@ -1,19 +1,75 @@
#include <allegro5/allegro.h> #include <allegro5/allegro.h>
#include <allegro5/allegro_font.h> #include <allegro5/allegro_font.h>
#include <math.h>
#include "intro.h" #include "intro.h"
void Intro_Draw(struct Game *game) { void Intro_Draw(struct Game *game) {
al_clear_to_color(al_map_rgb(0,0,0)); 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!"); 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); //PrintConsole(game, "drawing");
al_flip_display(); if (game->intro.in_animation) {
al_rest(5.0); //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); UnloadGameState(game);
game->gamestate = GAMESTATE_LOADING; game->gamestate = GAMESTATE_LOADING;
game->loadstate = GAMESTATE_MENU; game->loadstate = GAMESTATE_MENU;
} }
}
}
void Intro_Load(struct Game *game) {} void Intro_Load(struct Game *game) {}
int Intro_Keydown(struct Game *game, ALLEGRO_EVENT *ev) { return 0; } int Intro_Keydown(struct Game *game, ALLEGRO_EVENT *ev) {
void Intro_Preload(struct Game *game) {} if (ev->keyboard.keycode == ALLEGRO_KEY_ESCAPE) {
void Intro_Unload(struct Game *game) {} 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);
}

14
main.c
View file

@ -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_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_draw_bitmap(con, 0, 0, 0);
al_set_target_bitmap(al_get_backbuffer(game->display)); al_set_target_bitmap(al_get_backbuffer(game->display));
al_destroy_bitmap(con);
} }
void DrawConsole(struct Game *game) { void DrawConsole(struct Game *game) {
@ -211,6 +212,19 @@ int main(int argc, char **argv){
else if (game.gamestate==GAMESTATE_ABOUT) { else if (game.gamestate==GAMESTATE_ABOUT) {
if (About_Keydown(&game, &ev)) break; 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)) { if(redraw && al_is_event_queue_empty(game.event_queue)) {

8
main.h
View file

@ -32,6 +32,13 @@ struct Loading {
ALLEGRO_BITMAP *loading_bitmap, *image; ALLEGRO_BITMAP *loading_bitmap, *image;
}; };
struct Intro {
int position;
int page;
bool in_animation;
ALLEGRO_BITMAP *table, *table_bitmap;
};
struct Game { struct Game {
ALLEGRO_DISPLAY *display; ALLEGRO_DISPLAY *display;
ALLEGRO_FONT *font, *font_console; ALLEGRO_FONT *font, *font_console;
@ -43,6 +50,7 @@ struct Game {
bool showconsole; bool showconsole;
struct Menu menu; struct Menu menu;
struct Loading loading; struct Loading loading;
struct Intro intro;
}; };
void PreloadGameState(struct Game *game); void PreloadGameState(struct Game *game);

8
menu.c
View file

@ -13,9 +13,9 @@ 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(-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*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(-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*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(-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*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_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)); 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_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.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.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.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); 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);