mirror of
https://gitlab.com/dosowisko.net/libsuperderpy.git
synced 2025-02-01 19:16:44 +01:00
memory bitmaps, linear filtering, menu stopping instead of unloading and other stuff...
This commit is contained in:
parent
576a206f00
commit
e5dda46b31
8 changed files with 93 additions and 24 deletions
|
@ -36,8 +36,8 @@ void About_Load(struct Game *game) {
|
||||||
int About_Keydown(struct Game *game, ALLEGRO_EVENT *ev) {
|
int About_Keydown(struct Game *game, ALLEGRO_EVENT *ev) {
|
||||||
if (ev->keyboard.keycode == ALLEGRO_KEY_ESCAPE) {
|
if (ev->keyboard.keycode == ALLEGRO_KEY_ESCAPE) {
|
||||||
UnloadGameState(game);
|
UnloadGameState(game);
|
||||||
game->gamestate = GAMESTATE_LOADING;
|
|
||||||
game->loadstate = GAMESTATE_MENU;
|
game->loadstate = GAMESTATE_MENU;
|
||||||
|
LoadGameState(game);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,8 +16,8 @@ void Level_Draw(struct Game *game) {
|
||||||
|
|
||||||
game->level.derpy_pos=game->level.derpy_pos+0.00092;
|
game->level.derpy_pos=game->level.derpy_pos+0.00092;
|
||||||
if (game->level.derpy_pos>1) { UnloadGameState(game);
|
if (game->level.derpy_pos>1) { UnloadGameState(game);
|
||||||
game->gamestate = GAMESTATE_LOADING;
|
game->loadstate = GAMESTATE_MENU;
|
||||||
game->loadstate = GAMESTATE_MENU; return; }
|
LoadGameState(game); return; }
|
||||||
game->level.derpy_frame_tmp++;
|
game->level.derpy_frame_tmp++;
|
||||||
if (game->level.derpy_frame_tmp%3==0) {
|
if (game->level.derpy_frame_tmp%3==0) {
|
||||||
if (game->level.derpy_frame_tmp%5==0) game->level.derpy_frame++;
|
if (game->level.derpy_frame_tmp%5==0) game->level.derpy_frame++;
|
||||||
|
@ -47,8 +47,8 @@ void Level_Load(struct Game *game) {
|
||||||
int Level_Keydown(struct Game *game, ALLEGRO_EVENT *ev) {
|
int Level_Keydown(struct Game *game, ALLEGRO_EVENT *ev) {
|
||||||
if (ev->keyboard.keycode == ALLEGRO_KEY_ESCAPE) {
|
if (ev->keyboard.keycode == ALLEGRO_KEY_ESCAPE) {
|
||||||
UnloadGameState(game);
|
UnloadGameState(game);
|
||||||
game->gamestate = GAMESTATE_LOADING;
|
|
||||||
game->loadstate = GAMESTATE_MENU;
|
game->loadstate = GAMESTATE_MENU;
|
||||||
|
LoadGameState(game);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,12 +36,41 @@ void Loading_Draw(struct Game *game) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Loading_Load(struct Game *game) {
|
void Loading_Load(struct Game *game) {
|
||||||
game->loading.image = al_load_bitmap( "data/loading.png" );
|
al_clear_to_color(al_map_rgb(0,0,0));
|
||||||
|
al_draw_text_with_shadow(game->font, al_map_rgb(255,255,255), al_get_display_width(game->display)*0.0234, al_get_display_height(game->display)*0.85, ALLEGRO_ALIGN_LEFT, "Loading...");
|
||||||
|
DrawConsole(game);
|
||||||
|
al_flip_display();
|
||||||
|
|
||||||
|
al_set_new_bitmap_flags(ALLEGRO_MEMORY_BITMAP);
|
||||||
|
game->loading.image = al_load_bitmap( "data/loading.png" );
|
||||||
|
al_set_new_bitmap_flags(ALLEGRO_MAG_LINEAR | ALLEGRO_MIN_LINEAR);
|
||||||
|
|
||||||
// Scale "Loading" bitmap
|
|
||||||
game->loading.loading_bitmap = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display));
|
game->loading.loading_bitmap = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display));
|
||||||
al_set_target_bitmap(game->loading.loading_bitmap);
|
al_set_target_bitmap(game->loading.loading_bitmap);
|
||||||
al_draw_scaled_bitmap(game->loading.image,0, 0, al_get_bitmap_width(game->loading.image), al_get_bitmap_height(game->loading.image), 0, 0, al_get_display_width(game->display), al_get_display_height(game->display),0);
|
|
||||||
|
int width = al_get_display_width(game->display);
|
||||||
|
int height = al_get_display_height(game->display);
|
||||||
|
int x, y;
|
||||||
|
for (y = 0; y < height; y++) {
|
||||||
|
float pixy = ((float)y / height) * al_get_bitmap_height(game->loading.image);
|
||||||
|
for (x = 0; x < width; x++) {
|
||||||
|
float pixx = ((float)x / width) * al_get_bitmap_width(game->loading.image);
|
||||||
|
ALLEGRO_COLOR a = al_get_pixel(game->loading.image, pixx-0.25, pixy-0.25);
|
||||||
|
ALLEGRO_COLOR b = al_get_pixel(game->loading.image, pixx+0.25, pixy-0.25);
|
||||||
|
ALLEGRO_COLOR c = al_get_pixel(game->loading.image, pixx-0.25, pixy+0.25);
|
||||||
|
ALLEGRO_COLOR d = al_get_pixel(game->loading.image, pixx+0.25, pixy+0.25);
|
||||||
|
ALLEGRO_COLOR result = al_map_rgba_f(
|
||||||
|
(a.r+b.r+c.r+d.r) / 4,
|
||||||
|
(a.g+b.b+c.g+d.g) / 4,
|
||||||
|
(a.b+b.g+c.b+d.b) / 4,
|
||||||
|
(a.a+b.a+c.a+d.a) / 4
|
||||||
|
);
|
||||||
|
al_put_pixel(x, y, result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Scale "Loading" bitmap
|
||||||
|
//al_draw_scaled_bitmap(game->loading.image,0, 0, al_get_bitmap_width(game->loading.image), al_get_bitmap_height(game->loading.image), 0, 0, al_get_display_width(game->display), al_get_display_height(game->display),0);
|
||||||
al_draw_text_with_shadow(game->font, al_map_rgb(255,255,255), al_get_display_width(game->display)*0.0234, al_get_display_height(game->display)*0.85, ALLEGRO_ALIGN_LEFT, "Loading...");
|
al_draw_text_with_shadow(game->font, al_map_rgb(255,255,255), al_get_display_width(game->display)*0.0234, al_get_display_height(game->display)*0.85, ALLEGRO_ALIGN_LEFT, "Loading...");
|
||||||
al_set_target_bitmap(al_get_backbuffer(game->display));
|
al_set_target_bitmap(al_get_backbuffer(game->display));
|
||||||
al_destroy_bitmap(game->loading.image);
|
al_destroy_bitmap(game->loading.image);
|
||||||
|
|
21
src/main.c
21
src/main.c
|
@ -67,6 +67,10 @@ void DrawConsole(struct Game *game) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void PreloadGameState(struct Game *game) {
|
void PreloadGameState(struct Game *game) {
|
||||||
|
if ((game->loadstate==GAMESTATE_MENU) && (game->menu.loaded)) {
|
||||||
|
PrintConsole(game, "GAMESTATE_MENU already loaded, skipping...");
|
||||||
|
return;
|
||||||
|
}
|
||||||
switch (game->loadstate) {
|
switch (game->loadstate) {
|
||||||
PRELOAD_STATE(GAMESTATE_MENU, Menu)
|
PRELOAD_STATE(GAMESTATE_MENU, Menu)
|
||||||
PRELOAD_STATE(GAMESTATE_LOADING, Loading)
|
PRELOAD_STATE(GAMESTATE_LOADING, Loading)
|
||||||
|
@ -83,7 +87,13 @@ void PreloadGameState(struct Game *game) {
|
||||||
|
|
||||||
void UnloadGameState(struct Game *game) {
|
void UnloadGameState(struct Game *game) {
|
||||||
switch (game->gamestate) {
|
switch (game->gamestate) {
|
||||||
UNLOAD_STATE(GAMESTATE_MENU, Menu)
|
case GAMESTATE_MENU:
|
||||||
|
if (game->shuttingdown) {
|
||||||
|
PrintConsole(game, "Unload GAMESTATE_MENU..."); Menu_Unload(game);
|
||||||
|
} else {
|
||||||
|
PrintConsole(game, "Just stopping GAMESTATE_MENU..."); Menu_Stop(game);
|
||||||
|
}
|
||||||
|
break;
|
||||||
UNLOAD_STATE(GAMESTATE_LOADING, Loading)
|
UNLOAD_STATE(GAMESTATE_LOADING, Loading)
|
||||||
UNLOAD_STATE(GAMESTATE_ABOUT, About)
|
UNLOAD_STATE(GAMESTATE_ABOUT, About)
|
||||||
UNLOAD_STATE(GAMESTATE_INTRO, Intro)
|
UNLOAD_STATE(GAMESTATE_INTRO, Intro)
|
||||||
|
@ -137,8 +147,6 @@ int main(int argc, char **argv){
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
al_set_new_bitmap_flags(ALLEGRO_MIN_LINEAR^ALLEGRO_MAG_LINEAR);
|
|
||||||
|
|
||||||
game.timer = al_create_timer(ALLEGRO_BPS_TO_SECS(game.fps));
|
game.timer = al_create_timer(ALLEGRO_BPS_TO_SECS(game.fps));
|
||||||
if(!game.timer) {
|
if(!game.timer) {
|
||||||
fprintf(stderr, "failed to create timer!\n");
|
fprintf(stderr, "failed to create timer!\n");
|
||||||
|
@ -181,6 +189,7 @@ int main(int argc, char **argv){
|
||||||
|
|
||||||
if (game.fullscreen) al_set_new_display_flags(ALLEGRO_FULLSCREEN_WINDOW);
|
if (game.fullscreen) al_set_new_display_flags(ALLEGRO_FULLSCREEN_WINDOW);
|
||||||
al_set_new_display_option(ALLEGRO_VSYNC, 1, ALLEGRO_SUGGEST);
|
al_set_new_display_option(ALLEGRO_VSYNC, 1, ALLEGRO_SUGGEST);
|
||||||
|
al_set_new_display_option(ALLEGRO_OPENGL, 1, ALLEGRO_SUGGEST);
|
||||||
game.display = al_create_display(game.width, game.height);
|
game.display = al_create_display(game.width, game.height);
|
||||||
if(!game.display) {
|
if(!game.display) {
|
||||||
fprintf(stderr, "failed to create display!\n");
|
fprintf(stderr, "failed to create display!\n");
|
||||||
|
@ -188,6 +197,9 @@ int main(int argc, char **argv){
|
||||||
}
|
}
|
||||||
al_set_window_title(game.display, "Super Derpy: Muffin Attack");
|
al_set_window_title(game.display, "Super Derpy: Muffin Attack");
|
||||||
if (game.fullscreen) al_hide_mouse_cursor(game.display);
|
if (game.fullscreen) al_hide_mouse_cursor(game.display);
|
||||||
|
|
||||||
|
al_set_new_bitmap_flags(ALLEGRO_MAG_LINEAR | ALLEGRO_MIN_LINEAR);
|
||||||
|
|
||||||
game.font = al_load_ttf_font("data/ShadowsIntoLight.ttf",al_get_display_height(game.display)*0.09,0 );
|
game.font = al_load_ttf_font("data/ShadowsIntoLight.ttf",al_get_display_height(game.display)*0.09,0 );
|
||||||
game.font_console = al_load_ttf_font("data/DejaVuSansMono.ttf",al_get_display_height(game.display)*0.018,0 );
|
game.font_console = al_load_ttf_font("data/DejaVuSansMono.ttf",al_get_display_height(game.display)*0.018,0 );
|
||||||
|
|
||||||
|
@ -213,6 +225,8 @@ int main(int argc, char **argv){
|
||||||
|
|
||||||
al_start_timer(game.timer);
|
al_start_timer(game.timer);
|
||||||
|
|
||||||
|
game.shuttingdown = false;
|
||||||
|
game.menu.loaded = false;
|
||||||
game.loadstate = GAMESTATE_LOADING;
|
game.loadstate = GAMESTATE_LOADING;
|
||||||
PreloadGameState(&game);
|
PreloadGameState(&game);
|
||||||
LoadGameState(&game);
|
LoadGameState(&game);
|
||||||
|
@ -273,6 +287,7 @@ int main(int argc, char **argv){
|
||||||
al_flip_display();
|
al_flip_display();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
game.shuttingdown = true;
|
||||||
UnloadGameState(&game);
|
UnloadGameState(&game);
|
||||||
if (game.gamestate != GAMESTATE_LOADING) {
|
if (game.gamestate != GAMESTATE_LOADING) {
|
||||||
game.gamestate = GAMESTATE_LOADING;
|
game.gamestate = GAMESTATE_LOADING;
|
||||||
|
|
|
@ -50,8 +50,10 @@ struct Menu {
|
||||||
ALLEGRO_BITMAP *pie;
|
ALLEGRO_BITMAP *pie;
|
||||||
ALLEGRO_BITMAP *pie_bitmap;
|
ALLEGRO_BITMAP *pie_bitmap;
|
||||||
ALLEGRO_BITMAP *pinkcloud_bitmap;
|
ALLEGRO_BITMAP *pinkcloud_bitmap;
|
||||||
|
ALLEGRO_BITMAP *pinkcloud_scaled;
|
||||||
ALLEGRO_BITMAP *pinkcloud;
|
ALLEGRO_BITMAP *pinkcloud;
|
||||||
ALLEGRO_BITMAP *rain;
|
ALLEGRO_BITMAP *rain;
|
||||||
|
ALLEGRO_BITMAP *rain_bitmap;
|
||||||
ALLEGRO_BITMAP *mountain_bitmap;
|
ALLEGRO_BITMAP *mountain_bitmap;
|
||||||
ALLEGRO_BITMAP *mountain;
|
ALLEGRO_BITMAP *mountain;
|
||||||
float cloud_position;
|
float cloud_position;
|
||||||
|
@ -67,6 +69,7 @@ struct Menu {
|
||||||
int selected;
|
int selected;
|
||||||
bool options;
|
bool options;
|
||||||
bool draw_while_fading;
|
bool draw_while_fading;
|
||||||
|
bool loaded;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*! \brief Resources used by Loading state. */
|
/*! \brief Resources used by Loading state. */
|
||||||
|
@ -129,6 +132,7 @@ struct Game {
|
||||||
int fps;
|
int fps;
|
||||||
int width;
|
int width;
|
||||||
int height;
|
int height;
|
||||||
|
bool shuttingdown;
|
||||||
struct Menu menu;
|
struct Menu menu;
|
||||||
struct Loading loading;
|
struct Loading loading;
|
||||||
struct Intro intro;
|
struct Intro intro;
|
||||||
|
|
|
@ -71,8 +71,8 @@ int Map_Keydown(struct Game *game, ALLEGRO_EVENT *ev) {
|
||||||
return 0;
|
return 0;
|
||||||
} else if (ev->keyboard.keycode == ALLEGRO_KEY_ESCAPE) {
|
} else if (ev->keyboard.keycode == ALLEGRO_KEY_ESCAPE) {
|
||||||
UnloadGameState(game);
|
UnloadGameState(game);
|
||||||
game->gamestate = GAMESTATE_LOADING;
|
|
||||||
game->loadstate = GAMESTATE_MENU;
|
game->loadstate = GAMESTATE_MENU;
|
||||||
|
LoadGameState(game);
|
||||||
return 0;
|
return 0;
|
||||||
} else { return 0; }
|
} else { return 0; }
|
||||||
if (game->map.selected<1) game->map.selected=1;
|
if (game->map.selected<1) game->map.selected=1;
|
||||||
|
|
46
src/menu.c
46
src/menu.c
|
@ -15,11 +15,11 @@ 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(-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_bitmap(game->menu.rain_bitmap, 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), 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_bitmap(game->menu.rain_bitmap, 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), 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.rain_bitmap, 0, 0, al_get_bitmap_width(game->menu.rain_bitmap), al_get_bitmap_height(game->menu.rain_bitmap), 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.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.4, al_get_bitmap_height(game->menu.pinkcloud_bitmap)*(0.9+(fmod(-5*(game->menu.cloud_position+86), 8))/20.0), al_get_bitmap_width(game->menu.pinkcloud_bitmap)*0.35, al_get_bitmap_height(game->menu.pinkcloud_bitmap)*0.07, 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.4, al_get_bitmap_height(game->menu.pinkcloud_bitmap)*(0.9+(fmod(-5*(game->menu.cloud_position+86), 8))/20.0), al_get_bitmap_width(game->menu.pinkcloud_bitmap)*0.35, al_get_bitmap_height(game->menu.pinkcloud_bitmap)*0.07, 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_bitmap(game->menu.pinkcloud_scaled, 0, 0, 0);
|
||||||
al_set_target_bitmap(al_get_backbuffer(game->display));
|
al_set_target_bitmap(al_get_backbuffer(game->display));
|
||||||
|
|
||||||
al_clear_to_color(al_map_rgb(183,234,193));
|
al_clear_to_color(al_map_rgb(183,234,193));
|
||||||
|
@ -68,22 +68,26 @@ void Menu_Draw(struct Game *game) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Menu_Preload(struct Game *game) {
|
void Menu_Preload(struct Game *game) {
|
||||||
|
game->menu.loaded = true;
|
||||||
game->menu.draw_while_fading = atoi(GetConfigOptionDefault("[MuffinAttack]", "menu_draw_while_fading", "1"));
|
game->menu.draw_while_fading = atoi(GetConfigOptionDefault("[MuffinAttack]", "menu_draw_while_fading", "1"));
|
||||||
game->menu.cloud_position = 100;
|
game->menu.cloud_position = 100;
|
||||||
game->menu.cloud2_position = 100;
|
game->menu.cloud2_position = 100;
|
||||||
game->menu.options = false;
|
game->menu.options = false;
|
||||||
//game->menu.image = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display));
|
//game->menu.image = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display));
|
||||||
//al_destroy_bitmap(game->menu.image); // ugh...
|
//al_destroy_bitmap(game->menu.image); // ugh...
|
||||||
|
al_set_new_bitmap_flags(ALLEGRO_MAG_LINEAR | ALLEGRO_MEMORY_BITMAP);
|
||||||
game->menu.image = al_load_bitmap( "data/menu.png" );
|
game->menu.image = al_load_bitmap( "data/menu.png" );
|
||||||
game->menu.mountain = al_load_bitmap( "data/mountain.png" );
|
game->menu.mountain = al_load_bitmap( "data/mountain.png" );
|
||||||
|
game->menu.cloud = al_load_bitmap( "data/cloud.png" );
|
||||||
|
game->menu.cloud2 = al_load_bitmap( "data/cloud2.png" );
|
||||||
|
game->menu.rain = al_load_bitmap( "data/rain.png" );
|
||||||
|
game->menu.pie = al_load_bitmap( "data/pie.png" );
|
||||||
|
game->menu.pinkcloud = al_load_bitmap( "data/pinkcloud.png" );
|
||||||
|
al_set_new_bitmap_flags(ALLEGRO_MAG_LINEAR);
|
||||||
|
|
||||||
game->menu.sample = al_load_sample( "data/menu.flac" );
|
game->menu.sample = al_load_sample( "data/menu.flac" );
|
||||||
game->menu.rain_sample = al_load_sample( "data/rain.flac" );
|
game->menu.rain_sample = al_load_sample( "data/rain.flac" );
|
||||||
game->menu.click_sample = al_load_sample( "data/click.flac" );
|
game->menu.click_sample = al_load_sample( "data/click.flac" );
|
||||||
game->menu.cloud = al_load_bitmap( "data/cloud.png" );
|
|
||||||
game->menu.cloud2 = al_load_bitmap( "data/cloud2.png" );
|
|
||||||
game->menu.pinkcloud = al_load_bitmap( "data/pinkcloud.png" );
|
|
||||||
game->menu.pie = al_load_bitmap( "data/pie.png" );
|
|
||||||
game->menu.rain = al_load_bitmap( "data/rain.png" );
|
|
||||||
game->menu.mountain_position = al_get_display_width(game->display)*0.7;
|
game->menu.mountain_position = al_get_display_width(game->display)*0.7;
|
||||||
|
|
||||||
game->menu.font_title = al_load_ttf_font("data/ShadowsIntoLight.ttf",al_get_display_height(game->display)*0.16,0 );
|
game->menu.font_title = al_load_ttf_font("data/ShadowsIntoLight.ttf",al_get_display_height(game->display)*0.16,0 );
|
||||||
|
@ -127,6 +131,10 @@ void Menu_Preload(struct Game *game) {
|
||||||
al_destroy_bitmap(game->menu.cloud2);
|
al_destroy_bitmap(game->menu.cloud2);
|
||||||
|
|
||||||
game->menu.pinkcloud_bitmap = al_create_bitmap(al_get_display_width(game->display)*0.33125, al_get_display_height(game->display)); //*0.8122);
|
game->menu.pinkcloud_bitmap = al_create_bitmap(al_get_display_width(game->display)*0.33125, al_get_display_height(game->display)); //*0.8122);
|
||||||
|
game->menu.pinkcloud_scaled = al_create_bitmap(al_get_bitmap_width(game->menu.pinkcloud_bitmap), al_get_bitmap_height(game->menu.pinkcloud_bitmap)*0.8122);
|
||||||
|
al_set_target_bitmap(game->menu.pinkcloud_scaled);
|
||||||
|
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_scaled), al_get_bitmap_height(game->menu.pinkcloud_scaled),0);
|
||||||
|
al_destroy_bitmap(game->menu.pinkcloud);
|
||||||
|
|
||||||
game->menu.pie_bitmap = al_create_bitmap(al_get_display_width(game->display)/2, al_get_display_height(game->display)); //*0.8122);
|
game->menu.pie_bitmap = al_create_bitmap(al_get_display_width(game->display)/2, al_get_display_height(game->display)); //*0.8122);
|
||||||
al_set_target_bitmap(game->menu.pie_bitmap);
|
al_set_target_bitmap(game->menu.pie_bitmap);
|
||||||
|
@ -142,11 +150,18 @@ void Menu_Preload(struct Game *game) {
|
||||||
al_draw_scaled_bitmap(game->menu.mountain,0, 0, al_get_bitmap_width(game->menu.mountain), al_get_bitmap_height(game->menu.mountain), 0, 0, al_get_bitmap_width(game->menu.mountain_bitmap), al_get_bitmap_height(game->menu.mountain_bitmap),0);
|
al_draw_scaled_bitmap(game->menu.mountain,0, 0, al_get_bitmap_width(game->menu.mountain), al_get_bitmap_height(game->menu.mountain), 0, 0, al_get_bitmap_width(game->menu.mountain_bitmap), al_get_bitmap_height(game->menu.mountain_bitmap),0);
|
||||||
al_destroy_bitmap(game->menu.mountain);
|
al_destroy_bitmap(game->menu.mountain);
|
||||||
|
|
||||||
|
al_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP);
|
||||||
|
game->menu.rain_bitmap = al_create_bitmap(al_get_bitmap_width(game->menu.pinkcloud_bitmap)*0.5, al_get_bitmap_height(game->menu.pinkcloud_bitmap)*0.1);
|
||||||
|
al_set_new_bitmap_flags(ALLEGRO_MIN_LINEAR | ALLEGRO_MAG_LINEAR);
|
||||||
|
al_set_target_bitmap(game->menu.rain_bitmap);
|
||||||
|
al_clear_to_color(al_map_rgba(0,0,0,0));
|
||||||
|
al_draw_scaled_bitmap(game->menu.rain,0, 0, al_get_bitmap_width(game->menu.rain), al_get_bitmap_height(game->menu.rain), 0, 0, al_get_bitmap_width(game->menu.rain_bitmap), al_get_bitmap_height(game->menu.rain_bitmap),0);
|
||||||
|
al_destroy_bitmap(game->menu.rain);
|
||||||
|
|
||||||
game->menu.selected = 0;
|
game->menu.selected = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Menu_Unload(struct Game *game) {
|
void Menu_Stop(struct Game* game) {
|
||||||
|
|
||||||
game->menu.menu_fade_bitmap = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display));
|
game->menu.menu_fade_bitmap = al_create_bitmap(al_get_display_width(game->display), al_get_display_height(game->display));
|
||||||
|
|
||||||
ALLEGRO_EVENT ev;
|
ALLEGRO_EVENT ev;
|
||||||
|
@ -163,13 +178,18 @@ void Menu_Unload(struct Game *game) {
|
||||||
DrawConsole(game);
|
DrawConsole(game);
|
||||||
al_flip_display();
|
al_flip_display();
|
||||||
}
|
}
|
||||||
|
al_stop_samples();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu_Unload(struct Game *game) {
|
||||||
|
Menu_Stop(game);
|
||||||
al_destroy_bitmap(game->menu.menu_fade_bitmap);
|
al_destroy_bitmap(game->menu.menu_fade_bitmap);
|
||||||
al_destroy_bitmap(game->menu.pinkcloud);
|
al_destroy_bitmap(game->menu.pinkcloud_scaled);
|
||||||
al_destroy_bitmap(game->menu.menu_bitmap);
|
al_destroy_bitmap(game->menu.menu_bitmap);
|
||||||
al_destroy_bitmap(game->menu.cloud_bitmap);
|
al_destroy_bitmap(game->menu.cloud_bitmap);
|
||||||
al_destroy_bitmap(game->menu.cloud2_bitmap);
|
al_destroy_bitmap(game->menu.cloud2_bitmap);
|
||||||
al_destroy_bitmap(game->menu.pinkcloud_bitmap);
|
al_destroy_bitmap(game->menu.pinkcloud_bitmap);
|
||||||
al_destroy_bitmap(game->menu.rain);
|
al_destroy_bitmap(game->menu.rain_bitmap);
|
||||||
al_destroy_bitmap(game->menu.mountain_bitmap);
|
al_destroy_bitmap(game->menu.mountain_bitmap);
|
||||||
al_destroy_bitmap(game->menu.pie_bitmap);
|
al_destroy_bitmap(game->menu.pie_bitmap);
|
||||||
al_destroy_font(game->menu.font_title);
|
al_destroy_font(game->menu.font_title);
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
void Menu_Draw(struct Game *game);
|
void Menu_Draw(struct Game *game);
|
||||||
void Menu_Preload(struct Game *game);
|
void Menu_Preload(struct Game *game);
|
||||||
|
void Menu_Stop(struct Game *game);
|
||||||
void Menu_Unload(struct Game *game);
|
void Menu_Unload(struct Game *game);
|
||||||
void Menu_Load(struct Game *game);
|
void Menu_Load(struct Game *game);
|
||||||
int Menu_Keydown(struct Game *game, ALLEGRO_EVENT *ev);
|
int Menu_Keydown(struct Game *game, ALLEGRO_EVENT *ev);
|
||||||
|
|
Loading…
Reference in a new issue