mirror of
https://gitlab.com/dosowisko.net/libsuperderpy.git
synced 2025-02-01 11:06:44 +01:00
implement animations in intro state
This commit is contained in:
parent
89c4d4096d
commit
6583662d9f
3 changed files with 47 additions and 6 deletions
4
build
4
build
|
@ -1,2 +1,4 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
make -j10 && bin/superderpy
|
echo run > gdb.tmp
|
||||||
|
make -j10 && gdb bin/superderpy -x gdb.tmp
|
||||||
|
rm gdb.tmp
|
||||||
|
|
44
src/intro.c
44
src/intro.c
|
@ -23,6 +23,17 @@
|
||||||
#include "intro.h"
|
#include "intro.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
|
|
||||||
|
void AnimPage(struct Game *game, int page) {
|
||||||
|
al_set_target_bitmap(game->intro.animation);
|
||||||
|
al_clear_to_color(al_map_rgba(0,0,0,0));
|
||||||
|
|
||||||
|
if (page<6) al_draw_bitmap_region(game->intro.animsprites[page-1],al_get_display_width(game->display)*0.3125*(int)fmod(game->intro.anim,3),al_get_display_height(game->display)*0.63*(((int)(game->intro.anim/3))%3),al_get_display_width(game->display)*0.3125, al_get_display_height(game->display)*0.63,al_get_display_width(game->display)*0.08, al_get_display_height(game->display)*0.18,0);
|
||||||
|
if (page<5) al_draw_bitmap_region(game->intro.animsprites[page],al_get_display_width(game->display)*0.3125*(int)fmod(game->intro.anim,3),al_get_display_height(game->display)*0.63*(((int)(game->intro.anim/3))%3),al_get_display_width(game->display)*0.3125, al_get_display_height(game->display)*0.63,al_get_display_width(game->display)*1.08, al_get_display_height(game->display)*0.18,0);
|
||||||
|
|
||||||
|
al_set_target_bitmap(al_get_backbuffer(game->display));
|
||||||
|
game->intro.anim += tps(game, 2);
|
||||||
|
}
|
||||||
|
|
||||||
void FillPage(struct Game *game, int page) {
|
void FillPage(struct Game *game, int page) {
|
||||||
char filename[30] = { };
|
char filename[30] = { };
|
||||||
sprintf(filename, "data/intro/%d.flac", page);
|
sprintf(filename, "data/intro/%d.flac", page);
|
||||||
|
@ -105,10 +116,16 @@ void FillPage(struct Game *game, int page) {
|
||||||
|
|
||||||
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));
|
||||||
if (game->intro.in_animation)
|
if (game->intro.in_animation) {
|
||||||
|
AnimPage(game, game->intro.page);
|
||||||
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);
|
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.animation, -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 {
|
||||||
|
AnimPage(game, game->intro.page+1);
|
||||||
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_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_bitmap(game->intro.animation, 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_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...");
|
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");
|
//PrintConsole(game, "drawing");
|
||||||
if (game->intro.in_animation) {
|
if (game->intro.in_animation) {
|
||||||
|
@ -141,6 +158,7 @@ void Intro_Load(struct Game *game) {
|
||||||
for(fadeloop=0; fadeloop<256; fadeloop+=tps(game, 600)){
|
for(fadeloop=0; fadeloop<256; fadeloop+=tps(game, 600)){
|
||||||
al_wait_for_event(game->event_queue, &ev);
|
al_wait_for_event(game->event_queue, &ev);
|
||||||
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_draw_tinted_bitmap(game->intro.table,al_map_rgba_f(fadeloop/255.0,fadeloop/255.0,fadeloop/255.0,1),0,0,0);
|
||||||
|
al_draw_tinted_bitmap(game->intro.animation,al_map_rgba_f(fadeloop/255.0,fadeloop/255.0,fadeloop/255.0,1),0,0,0);
|
||||||
DrawConsole(game);
|
DrawConsole(game);
|
||||||
al_flip_display();
|
al_flip_display();
|
||||||
}
|
}
|
||||||
|
@ -172,6 +190,13 @@ void Intro_Preload(struct Game *game) {
|
||||||
game->intro.position = 0;
|
game->intro.position = 0;
|
||||||
game->intro.page = 0;
|
game->intro.page = 0;
|
||||||
game->intro.in_animation = false;
|
game->intro.in_animation = false;
|
||||||
|
game->intro.anim = 0;
|
||||||
|
|
||||||
|
game->intro.animsprites[0] = LoadScaledBitmap("discord.png", al_get_display_width(game->display)*0.3125*3, al_get_display_height(game->display)*0.63*3);
|
||||||
|
game->intro.animsprites[1] = LoadScaledBitmap("derpcycle.png", al_get_display_width(game->display)*0.3125*3, al_get_display_height(game->display)*0.63*3);
|
||||||
|
game->intro.animsprites[2] = LoadScaledBitmap("zombie.png", al_get_display_width(game->display)*0.3125*3, al_get_display_height(game->display)*0.63*3);
|
||||||
|
game->intro.animsprites[3] = LoadScaledBitmap("loading.png", al_get_display_width(game->display)*0.3125*3, al_get_display_height(game->display)*0.63*3);
|
||||||
|
game->intro.animsprites[4] = LoadScaledBitmap("letter.png", al_get_display_width(game->display)*0.3125*3, al_get_display_height(game->display)*0.63*3);
|
||||||
|
|
||||||
game->intro.table_bitmap =LoadScaledBitmap("paper.png", al_get_display_width(game->display), al_get_display_height(game->display));
|
game->intro.table_bitmap =LoadScaledBitmap("paper.png", al_get_display_width(game->display), al_get_display_height(game->display));
|
||||||
|
|
||||||
|
@ -186,10 +211,12 @@ void Intro_Preload(struct Game *game) {
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
game->intro.table = al_create_bitmap(al_get_display_width(game->display)*2, al_get_display_height(game->display));
|
game->intro.table = al_create_bitmap(al_get_display_width(game->display)*2, al_get_display_height(game->display));
|
||||||
|
game->intro.animation = 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 );
|
game->intro.font = al_load_ttf_font("data/ShadowsIntoLight.ttf",al_get_display_height(game->display)*0.04,0 );
|
||||||
|
|
||||||
FillPage(game, 1);
|
FillPage(game, 1);
|
||||||
|
AnimPage(game, 1);
|
||||||
al_set_target_bitmap(al_get_backbuffer(game->display));
|
al_set_target_bitmap(al_get_backbuffer(game->display));
|
||||||
PrintConsole(game, "Chainpreloading GAMESTATE_MAP...");
|
PrintConsole(game, "Chainpreloading GAMESTATE_MAP...");
|
||||||
Map_Preload(game);
|
Map_Preload(game);
|
||||||
|
@ -201,14 +228,23 @@ void Intro_Unload(struct Game *game) {
|
||||||
int fadeloop;
|
int fadeloop;
|
||||||
for(fadeloop=255; fadeloop>=0; fadeloop-=tps(game, 600)){
|
for(fadeloop=255; fadeloop>=0; fadeloop-=tps(game, 600)){
|
||||||
al_wait_for_event(game->event_queue, &ev);
|
al_wait_for_event(game->event_queue, &ev);
|
||||||
if (game->intro.in_animation)
|
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*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.animation, 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), 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), 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.animation, 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);
|
||||||
|
}
|
||||||
DrawConsole(game);
|
DrawConsole(game);
|
||||||
al_flip_display();
|
al_flip_display();
|
||||||
}
|
}
|
||||||
al_destroy_bitmap(game->intro.table);
|
al_destroy_bitmap(game->intro.table);
|
||||||
|
al_destroy_bitmap(game->intro.animation);
|
||||||
|
int i;
|
||||||
|
for (i=0; i<5; i++) {
|
||||||
|
al_destroy_bitmap(game->intro.animsprites[i]);
|
||||||
|
}
|
||||||
al_destroy_font(game->intro.font);
|
al_destroy_font(game->intro.font);
|
||||||
al_destroy_sample_instance(game->intro.music);
|
al_destroy_sample_instance(game->intro.music);
|
||||||
al_destroy_sample(game->intro.sample);
|
al_destroy_sample(game->intro.sample);
|
||||||
|
|
|
@ -148,9 +148,12 @@ struct Map {
|
||||||
struct Intro {
|
struct Intro {
|
||||||
int position;
|
int position;
|
||||||
int page;
|
int page;
|
||||||
bool in_animation;
|
bool in_animation; /*!< Animation as in page transition animation. */
|
||||||
|
float anim;
|
||||||
ALLEGRO_BITMAP *table;
|
ALLEGRO_BITMAP *table;
|
||||||
ALLEGRO_BITMAP *table_bitmap;
|
ALLEGRO_BITMAP *table_bitmap;
|
||||||
|
ALLEGRO_BITMAP *animation;
|
||||||
|
ALLEGRO_BITMAP *animsprites[5];
|
||||||
ALLEGRO_FONT *font;
|
ALLEGRO_FONT *font;
|
||||||
ALLEGRO_SAMPLE *sample;
|
ALLEGRO_SAMPLE *sample;
|
||||||
ALLEGRO_SAMPLE_INSTANCE *music; /*!< Sample instance with background music. */
|
ALLEGRO_SAMPLE_INSTANCE *music; /*!< Sample instance with background music. */
|
||||||
|
|
Loading…
Reference in a new issue