mirror of
https://gitlab.com/dosowisko.net/libsuperderpy.git
synced 2025-02-08 06:06:43 +01:00
fill bitmaps as needed in intro view, as opposed to filling big bitmap at loading time
This commit is contained in:
parent
da8f108d79
commit
256c21c0f2
1 changed files with 95 additions and 58 deletions
153
src/intro.c
153
src/intro.c
|
@ -7,13 +7,88 @@
|
|||
#include "intro.h"
|
||||
#include "map.h"
|
||||
|
||||
void FillPage(struct Game *game, int page) {
|
||||
|
||||
al_set_target_bitmap(game->intro.table);
|
||||
float y = 0.2;
|
||||
float oldx = -1;
|
||||
void draw_text(int page, char* text) {
|
||||
float x = 0.45;
|
||||
if (page!=oldx) { y=0.2; oldx=page; }
|
||||
al_draw_text_with_shadow(game->intro.font, al_map_rgb(255,255,255), al_get_display_width(game->display)*x, al_get_display_height(game->display)*y, ALLEGRO_ALIGN_LEFT, text);
|
||||
y+=0.07;
|
||||
}
|
||||
|
||||
void DrawPage(int p) {
|
||||
switch (p) {
|
||||
case 1:
|
||||
al_draw_bitmap(game->intro.table_bitmap, 0, 0, 0);
|
||||
draw_text(1, "Since Twilight Sparkle and her five best");
|
||||
draw_text(1, "friends defeated Discord and imprisoned");
|
||||
draw_text(1, "him in a stone using the Elements of");
|
||||
draw_text(1, "Harmony, Equestia has been a peaceful");
|
||||
draw_text(1, "place for a quite long time.");
|
||||
break;
|
||||
case 2:
|
||||
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)*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)*0.5, 0, 0);
|
||||
draw_text(2, "Suddenly, one day some reckless pony");
|
||||
draw_text(2, "accidentally introduced a tiny little");
|
||||
draw_text(2, "bit of chaos near Discords figure.");
|
||||
break;
|
||||
case 3:
|
||||
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)*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)*0.5, 0, 0);
|
||||
draw_text(3, "A tiny little bit of chaos turned not to");
|
||||
draw_text(3, "be enough for Discord to escape from rock,");
|
||||
draw_text(3, "but enough to turn nearly dropped muffins");
|
||||
draw_text(3, "into muffinzombies, with aim to destroy all");
|
||||
draw_text(3, "the harmony in Equestria.");
|
||||
break;
|
||||
case 4:
|
||||
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)*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)*0.5, 0, 0);
|
||||
draw_text(4, "Discord, who has learned his lession after");
|
||||
draw_text(4, "last failure, turned his muffinzombie-gang");
|
||||
draw_text(4, "against the same mares who previously");
|
||||
draw_text(4, "defeated him, prisoning them in their own");
|
||||
draw_text(4, "houses. Thanks to that, he's now able to");
|
||||
draw_text(4, "wait until the world is again chaotic enough");
|
||||
draw_text(4, "for him to escape and rule Equestria");
|
||||
draw_text(4, "once again.");
|
||||
break;
|
||||
case 5:
|
||||
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)*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)*0.5, 0, 0);
|
||||
draw_text(5, "Who is able to defeat Discord when the");
|
||||
draw_text(5, "Elements of Harmony are unavailable?");
|
||||
draw_text(5, "");
|
||||
draw_text(5, "Well... There is somepony who knows");
|
||||
draw_text(5, "everything about muffins...");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
DrawPage(page);
|
||||
ALLEGRO_BITMAP* second = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display));
|
||||
al_set_target_bitmap(second);
|
||||
DrawPage(page+1);
|
||||
al_set_target_bitmap(game->intro.table);
|
||||
al_draw_bitmap(second, al_get_display_width(game->display), 0, 0);
|
||||
al_set_target_bitmap(al_get_backbuffer(game->display));
|
||||
}
|
||||
|
||||
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)
|
||||
/* 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))*(ALLEGRO_PI))/2.0)*al_get_display_width(game->display) + al_get_display_width(game->display)/2.0, 0, 0);//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), 0, 0); //al_get_display_height(game->display)*((game->intro.position/3.0)/(float)al_get_display_width(game->display)), 0);
|
||||
al_draw_bitmap(game->intro.table, -1*(game->intro.page)*al_get_display_width(game->display), 0, 0); //al_get_display_height(game->display)*((game->intro.position/3.0)/(float)al_get_display_width(game->display)), 0); */
|
||||
if (game->intro.in_animation)
|
||||
al_draw_bitmap(game->intro.table, -1*al_get_display_width(game->display) + (cos(((-1*((game->intro.position)%al_get_display_width(game->display)))/(float)al_get_display_width(game->display))*(ALLEGRO_PI))/2.0)*al_get_display_width(game->display) + al_get_display_width(game->display)/2.0, 0, 0);//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, 0, 0, 0); //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_with_shadow(game->intro.font, al_map_rgb(255,255,255), al_get_display_width(game->display)/2, al_get_display_height(game->display)*0.90, ALLEGRO_ALIGN_CENTRE, "Press any key to continue or escape to skip...");
|
||||
//PrintConsole(game, "drawing");
|
||||
|
@ -21,8 +96,15 @@ void Intro_Draw(struct Game *game) {
|
|||
//PrintConsole(game, "animating");
|
||||
game->intro.position -= tps(game, 600);
|
||||
if (game->intro.position%al_get_display_width(game->display)==0) {
|
||||
//DrawConsole(game);
|
||||
//al_flip_display();
|
||||
game->intro.in_animation = false;
|
||||
//al_set_target_bitmap(game->intro.table);
|
||||
//al_draw_bitmap(game->intro.table_whole, (-1)*game->intro.page*al_get_display_width(game->display), 0, 0);
|
||||
//al_set_target_bitmap(al_get_backbuffer(game->display));
|
||||
FillPage(game, game->intro.page+1);
|
||||
PrintConsole(game, "Animation finished.");
|
||||
//al_draw_bitmap(game->intro.table, 0, 0, 0);
|
||||
}
|
||||
else if (game->intro.position<=-4*al_get_display_width(game->display)) {
|
||||
PrintConsole(game, "This was the last page.");
|
||||
|
@ -76,59 +158,16 @@ void Intro_Preload(struct Game *game) {
|
|||
fprintf(stderr, "Audio clip sample not loaded!\n" );
|
||||
exit(-1);
|
||||
}
|
||||
game->intro.table = al_create_bitmap(al_get_display_width(game->display)*5, al_get_display_height(game->display));
|
||||
//al_set_new_bitmap_flags(ALLEGRO_MEMORY_BITMAP);
|
||||
//game->intro.table_whole = al_create_bitmap(al_get_display_width(game->display)*5, al_get_display_height(game->display));
|
||||
//al_set_new_bitmap_flags(ALLEGRO_MAG_LINEAR | ALLEGRO_MIN_LINEAR);
|
||||
game->intro.table = al_create_bitmap(al_get_display_width(game->display)*2, 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_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;
|
||||
void draw_text(int page, char* text) {
|
||||
float x = page - 1 + 0.45;
|
||||
if (x!=oldx) { y=0.2; oldx=x; }
|
||||
al_draw_text_with_shadow(game->intro.font, al_map_rgb(255,255,255), al_get_display_width(game->display)*x, al_get_display_height(game->display)*y, ALLEGRO_ALIGN_LEFT, text);
|
||||
y+=0.07;
|
||||
}
|
||||
|
||||
draw_text(1, "Since Twilight Sparkle and her five best");
|
||||
draw_text(1, "friends defeated Discord and imprisoned");
|
||||
draw_text(1, "him in a stone using the Elements of");
|
||||
draw_text(1, "Harmony, Equestia has been a peaceful");
|
||||
draw_text(1, "place for a quite long time.");
|
||||
|
||||
draw_text(2, "Suddenly, one day some reckless pony");
|
||||
draw_text(2, "accidentally introduced a tiny little");
|
||||
draw_text(2, "bit of chaos near Discords figure.");
|
||||
|
||||
draw_text(3, "A tiny little bit of chaos turned not to");
|
||||
draw_text(3, "be enough for Discord to escape from rock,");
|
||||
draw_text(3, "but enough to turn nearly dropped muffins");
|
||||
draw_text(3, "into muffinzombies, with aim to destroy all");
|
||||
draw_text(3, "the harmony in Equestria.");
|
||||
|
||||
draw_text(4, "Discord, who has learned his lession after");
|
||||
draw_text(4, "last failure, turned his muffinzombie-gang");
|
||||
draw_text(4, "against the same mares who previously");
|
||||
draw_text(4, "defeated him, prisoning them in their own");
|
||||
draw_text(4, "houses. Thanks to that, he's now able to");
|
||||
draw_text(4, "wait until the world is again chaotic enough");
|
||||
draw_text(4, "for him to escape and rule Equestria");
|
||||
draw_text(4, "once again.");
|
||||
|
||||
draw_text(5, "Who is able to defeat Discord when the");
|
||||
draw_text(5, "Elements of Harmony are unavailable?");
|
||||
draw_text(5, "");
|
||||
draw_text(5, "Well... There is somepony who knows");
|
||||
draw_text(5, "everything about muffins...");
|
||||
|
||||
FillPage(game, 1);
|
||||
//al_set_target_bitmap(game->intro.table);
|
||||
//al_draw_bitmap(game->intro.table, 0, 0, 0);
|
||||
al_set_target_bitmap(al_get_backbuffer(game->display));
|
||||
PrintConsole(game, "Chainpreloading GAMESTATE_MAP...");
|
||||
Map_Preload(game);
|
||||
|
@ -140,17 +179,15 @@ void Intro_Unload(struct Game *game) {
|
|||
for(fadeloop=255; fadeloop>=0; fadeloop-=tps(game, 600)){
|
||||
al_wait_for_event(game->event_queue, &ev);
|
||||
if (game->intro.in_animation)
|
||||
al_draw_tinted_bitmap(game->intro.table, al_map_rgba_f(fadeloop/255.0,fadeloop/255.0,fadeloop/255.0,1), -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.0)*al_get_display_width(game->display) + al_get_display_width(game->display)/2.0, 0, 0); //al_get_display_height(game->display)*((game->intro.position/3.0)/(float)al_get_display_width(game->display)), 0);
|
||||
al_draw_tinted_bitmap(game->intro.table, al_map_rgba_f(fadeloop/255.0,fadeloop/255.0,fadeloop/255.0,1), -1*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.0)*al_get_display_width(game->display) + al_get_display_width(game->display)/2.0, 0, 0); //al_get_display_height(game->display)*((game->intro.position/3.0)/(float)al_get_display_width(game->display)), 0);
|
||||
else
|
||||
al_draw_tinted_bitmap(game->intro.table, al_map_rgba_f(fadeloop/255.0,fadeloop/255.0,fadeloop/255.0,1), -1*(game->intro.page)*al_get_display_width(game->display), 0, 0); //al_get_display_height(game->display)*((game->intro.position/3.0)/(float)al_get_display_width(game->display)), 0);
|
||||
|
||||
al_draw_tinted_bitmap(game->intro.table, al_map_rgba_f(fadeloop/255.0,fadeloop/255.0,fadeloop/255.0,1), 0, 0, 0); //al_get_display_height(game->display)*((game->intro.position/3.0)/(float)al_get_display_width(game->display)), 0);
|
||||
//al_draw_tinted_bitmap(game->intro.table_bitmap,al_map_rgba_f(fadeloop/255.0,fadeloop/255.0,fadeloop/255.0,1),-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);
|
||||
DrawConsole(game);
|
||||
al_flip_display();
|
||||
}
|
||||
al_destroy_bitmap(game->intro.table_bitmap);
|
||||
al_destroy_bitmap(game->intro.table);
|
||||
al_destroy_font(game->intro.font);
|
||||
al_destroy_sample(game->intro.sample);
|
||||
|
||||
al_destroy_bitmap(game->intro.table_bitmap);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue