libsuperderpy/src/about.c

158 lines
7.7 KiB
C
Raw Normal View History

2012-02-28 13:09:12 +01:00
/*! \file about.c
* \brief About screen.
*/
2012-02-19 20:18:28 +01:00
#include <stdio.h>
#include "about.h"
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_scaled_bitmap(game->about.letter_bitmap,0,0,al_get_bitmap_width(game->about.letter_bitmap),al_get_bitmap_height(game->about.letter_bitmap),0,0,al_get_display_width(game->display), al_get_display_height(game->display),0);
2012-02-22 13:38:56 +01:00
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);
2012-03-01 10:49:20 +01:00
game->about.x+=tps(game, 60*0.00025);
2012-02-25 22:26:31 +01:00
if (game->about.x>1) {
UnloadGameState(game);
game->loadstate = GAMESTATE_MENU;
2012-03-01 01:46:45 +01:00
LoadGameState(game);
}
}
2012-02-18 06:26:58 +01:00
void About_Load(struct Game *game) {
if (game->music) al_play_sample(game->about.sample, 1.0, 0.0, 1.0, ALLEGRO_PLAYMODE_LOOP, NULL);
2012-02-18 06:26:58 +01:00
ALLEGRO_EVENT ev;
2012-02-29 12:16:11 +01:00
int fadeloop;
2012-03-01 10:49:20 +01:00
for(fadeloop=0; fadeloop<256; fadeloop+=tps(game, 600)){
2012-02-18 06:26:58 +01:00
al_wait_for_event(game->event_queue, &ev);
al_draw_tinted_bitmap(game->about.fade_bitmap,al_map_rgba_f(fadeloop/255.0,fadeloop/255.0,fadeloop/255.0,1),0,0,0);
DrawConsole(game);
al_flip_display();
}
al_destroy_bitmap(game->about.fade_bitmap);
2012-02-19 22:20:05 +01:00
About_Draw(game);
2012-02-18 06:26:58 +01:00
}
2012-02-25 22:26:31 +01:00
2012-02-18 06:26:58 +01:00
int About_Keydown(struct Game *game, ALLEGRO_EVENT *ev) {
if (ev->keyboard.keycode == ALLEGRO_KEY_ESCAPE) {
2012-02-18 06:26:58 +01:00
UnloadGameState(game);
game->loadstate = GAMESTATE_MENU;
LoadGameState(game);
}
2012-02-22 15:21:28 +01:00
return 0;
2012-02-18 06:26:58 +01:00
}
2012-02-25 22:26:31 +01:00
2012-02-18 06:26:58 +01:00
void About_Preload(struct Game *game) {
2012-03-01 01:14:24 +01:00
game->about.image =LoadFromCache(game, "table.png", al_get_display_width(game->display), al_get_display_height(game->display));
//game->about.image = al_load_bitmap( "data/table.png" );
al_set_new_bitmap_flags(ALLEGRO_MEMORY_BITMAP);
game->about.letter = al_load_bitmap( "data/letter.png" );
al_set_new_bitmap_flags(ALLEGRO_MAG_LINEAR | ALLEGRO_MIN_LINEAR);
2012-02-19 20:18:28 +01:00
game->about.sample = al_load_sample( "data/about.flac" );
2012-02-26 13:00:03 +01:00
game->about.font = al_load_ttf_font("data/ShadowsIntoLight.ttf",al_get_display_height(game->display)*0.035,0 );
game->about.x = -0.1;
2012-02-19 20:18:28 +01:00
if (!game->about.sample){
fprintf(stderr, "Audio clip sample not loaded!\n" );
exit(-1);
}
2012-02-26 13:00:03 +01:00
game->about.text_bitmap = al_create_bitmap(al_get_display_width(game->display)*0.4, al_get_display_height(game->display)*2.35);
2012-02-22 13:38:56 +01:00
al_set_target_bitmap(game->about.text_bitmap);
2012-02-26 15:04:12 +01:00
al_clear_to_color(al_map_rgba(0,0,0,0));
2012-02-26 13:00:03 +01:00
al_draw_text(game->about.font, al_map_rgb(255,255,255), 0.5*al_get_bitmap_width(game->about.text_bitmap), 0.015*al_get_bitmap_height(game->about.text_bitmap), ALLEGRO_ALIGN_CENTRE, "Super Derpy: Muffin Attack");
al_draw_text(game->about.font, al_map_rgb(255,255,255), 0.5*al_get_bitmap_width(game->about.text_bitmap), 0.035*al_get_bitmap_height(game->about.text_bitmap), ALLEGRO_ALIGN_CENTRE, "Version 0.1");
float y=0.07;
void draw_text(char* text) {
al_draw_text(game->about.font, al_map_rgb(255,255,255), 0, y*al_get_bitmap_height(game->about.text_bitmap), ALLEGRO_ALIGN_LEFT, text);
2012-02-26 13:00:03 +01:00
y+=0.021;
}
draw_text("Written by:");
draw_text(" - Sebastian Krzyszkowiak");
draw_text(" http://dosowisko.net/");
draw_text("");
draw_text("Graphics:");
2012-03-04 13:24:35 +01:00
draw_text(" - hombre0");
draw_text(" http://hombre0.deviantart.com/");
2012-03-04 13:24:35 +01:00
draw_text(" - Siobhan Brewer");
draw_text(" http://boxdrink.deviantart.com/");
2012-03-04 13:24:35 +01:00
draw_text(" - CptOfTheFriendship");
draw_text(" http://cptofthefriendship.deviantart.com/");
draw_text("");
draw_text("Music:");
draw_text(" - Dr Dissonance (\"Don Discord\")");
draw_text(" http://dr-dissonance.tumblr.com/");
draw_text(" - Dan O'Connor");
draw_text(" http://www.danosongs.com/");
draw_text(" - Kevin MacLeod");
draw_text(" http://incompetech.com/");
draw_text("");
draw_text("Sounds:");
draw_text(" - Sound Jay");
draw_text(" http://www.soundjay.com/");
draw_text("");
draw_text("Super Derpy: Muffin Attack comes");
draw_text("with ABSOLUTELY NO WARRANTY.");
draw_text("You may redistribute copies of this");
draw_text("game under the terms of");
draw_text("GNU General Public License.");
draw_text("For more information, see the file");
draw_text("named COPYING.");
draw_text("");
2012-02-26 13:00:03 +01:00
draw_text("Super Derpy: Muffin Attack is");
draw_text("a fan-made game with no profit");
draw_text("intended. Its author is unpaid");
draw_text("volunteer and doesn't receive");
draw_text("any economical profit from it.");
draw_text("");
2012-02-26 13:00:03 +01:00
draw_text("My Little Pony: Friendship is Magic");
draw_text("is copyrighted trademark owned");
draw_text("by Hasbro.");
draw_text("");
2012-02-26 13:00:03 +01:00
draw_text("Author of Super Derpy is not");
draw_text("affiliated to Hasbro, The Hub");
draw_text("or its associates.");
2012-02-22 13:38:56 +01:00
2012-02-18 06:26:58 +01:00
game->about.fade_bitmap = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display));
game->about.letter_bitmap = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display));
2012-02-22 13:38:56 +01:00
al_set_target_bitmap(game->about.letter_bitmap);
2012-03-03 21:23:25 +01:00
ScaleBitmap(game->about.letter, al_get_display_width(game->display), al_get_display_height(game->display));
al_destroy_bitmap(game->about.letter);
2012-02-18 06:26:58 +01:00
al_set_target_bitmap(game->about.fade_bitmap);
2012-03-01 01:14:24 +01:00
al_draw_bitmap(game->about.image, 0, 0, 0);
al_draw_bitmap(game->about.letter_bitmap, 0, 0, 0);
2012-03-01 01:14:24 +01:00
//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);
//ScaleBitmap(game->about.letter, al_get_display_width(game->display), al_get_display_height(game->display), 0.75);
//al_draw_scaled_bitmap(game->about.letter,0,0,al_get_bitmap_width(game->about.letter),al_get_bitmap_height(game->about.letter),0,0,al_get_display_width(game->display), al_get_display_height(game->display),0);
2012-02-22 13:38:56 +01:00
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);
2012-02-18 06:26:58 +01:00
al_set_target_bitmap(al_get_backbuffer(game->display));
}
2012-02-25 22:26:31 +01:00
2012-02-18 06:26:58 +01:00
void About_Unload(struct Game *game) {
if (game->about.x<0) game->about.x=0;
2012-02-18 06:26:58 +01:00
ALLEGRO_EVENT ev;
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_scaled_bitmap(game->about.letter_bitmap,0,0,al_get_bitmap_width(game->about.letter_bitmap),al_get_bitmap_height(game->about.letter_bitmap),0,0,al_get_display_width(game->display), al_get_display_height(game->display),0);
2012-02-22 13:38:56 +01:00
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);
2012-02-18 06:26:58 +01:00
al_set_target_bitmap(al_get_backbuffer(game->display));
2012-02-29 12:16:11 +01:00
int fadeloop;
2012-03-01 10:49:20 +01:00
for(fadeloop=255; fadeloop>=0; fadeloop-=tps(game, 600)){
2012-02-18 06:26:58 +01:00
al_wait_for_event(game->event_queue, &ev);
al_draw_tinted_bitmap(game->about.fade_bitmap, al_map_rgba_f(fadeloop/255.0,fadeloop/255.0,fadeloop/255.0,1), 0, 0, 0);
DrawConsole(game);
al_flip_display();
}
al_destroy_bitmap(game->about.image);
al_destroy_bitmap(game->about.letter_bitmap);
2012-02-18 06:26:58 +01:00
al_destroy_bitmap(game->about.fade_bitmap);
2012-02-22 13:38:56 +01:00
al_destroy_bitmap(game->about.text_bitmap);
2012-02-19 20:18:28 +01:00
al_destroy_sample(game->about.sample);
2012-02-22 13:38:56 +01:00
al_destroy_font(game->about.font);
2012-02-18 06:26:58 +01:00
}