diff --git a/TODO b/TODO index 02fdb0e..4d1a7ab 100644 --- a/TODO +++ b/TODO @@ -1,5 +1,5 @@ - obstracles/bonuses -- HUD +- moar love for HUD - some love for about screen - voice manager - night map diff --git a/src/level.c b/src/level.c index 8815d47..4468a81 100644 --- a/src/level.c +++ b/src/level.c @@ -42,9 +42,8 @@ void SelectDerpySpritesheet(struct Game *game, char* name) { game->level.sheet_blanks = tmp->blanks; game->level.sheet_speed_modifier = tmp->speed; game->level.sheet_pos = 0; - al_destroy_bitmap(game->level.derpy); - /*int w = al_get_bitmap_width(tmp->bitmap)/tmp->cols; - int h = al_get_bitmap_height(tmp->bitmap)/tmp->rows;*/ + game->level.sheet_scale = tmp->scale; + if (game->level.derpy) al_destroy_bitmap(game->level.derpy); game->level.derpy = al_create_bitmap(al_get_display_height(game->display)*0.25*tmp->aspect*tmp->scale, al_get_display_height(game->display)*0.25*tmp->scale); return; } @@ -235,19 +234,19 @@ void Level_Draw(struct Game *game) { game->level.derpy_y += tps(game, 60*0.005); /*PrintConsole(game, "Derpy Y position: %f", game->level.derpy_y);*/ } - if ((game->level.derpy_y > 0.5) && (game->level.flying)) { + if ((game->level.derpy_y > 0.6) && (game->level.flying)) { SelectDerpySpritesheet(game, "run"); game->level.flying = false; game->level.sheet_speed = tps(game, 60*0.0020/game->level.speed); } - else if ((game->level.derpy_y <= 0.5) && (!game->level.flying)) { + else if ((game->level.derpy_y <= 0.6) && (!game->level.flying)) { SelectDerpySpritesheet(game, "fly"); game->level.flying = true; game->level.sheet_speed = tps(game, 60*2.4); } if (!game->level.flying) game->level.sheet_speed = tps(game, 60*0.0020/game->level.speed); if (game->level.derpy_y < 0) game->level.derpy_y=0; - else if (game->level.derpy_y > 0.75) game->level.derpy_y=0.75; + else if (game->level.derpy_y > 0.8) game->level.derpy_y=0.8; } al_hold_bitmap_drawing(true); @@ -445,7 +444,6 @@ void Level_Load(struct Game *game) { game->level.speed = 0; game->level.derpy_x = -0.2; game->level.derpy_y = 0.6; - SelectDerpySpritesheet(game, "stand"); game->level.sheet_speed = tps(game, 60*2.4); game->level.sheet_tmp = 0; game->level.handle_input = false; @@ -516,6 +514,7 @@ void Level_ProcessLogic(struct Game *game, ALLEGRO_EVENT *ev) { void Level_Preload(struct Game *game) { game->level.derpy_sheets = NULL; + game->level.derpy = NULL; Pause_Preload(game); RegisterDerpySpritesheet(game, "walk"); RegisterDerpySpritesheet(game, "fly"); @@ -591,7 +590,10 @@ void Level_PreloadBitmaps(struct Game *game) { tmp = tmp->next; } - game->level.derpy = al_create_bitmap(al_get_display_width(game->display)*0.1953125, al_get_display_height(game->display)*0.25); + if (!game->level.derpy) SelectDerpySpritesheet(game, "stand"); + + game->level.derpy = al_create_bitmap(al_get_bitmap_width(*(game->level.derpy_sheet))/game->level.sheet_cols, al_get_bitmap_height(*(game->level.derpy_sheet))/game->level.sheet_rows); + if (game->level.current_level!=1) Moonwalk_PreloadBitmaps(game); else { /* TODO: handle strange display aspects */ diff --git a/src/main.h b/src/main.h index 7108b43..72678fc 100644 --- a/src/main.h +++ b/src/main.h @@ -80,7 +80,7 @@ struct Level { bool flying; float meter_alpha; int sheet_rows, sheet_cols, sheet_pos, sheet_blanks; - float sheet_tmp, sheet_speed, sheet_speed_modifier; + float sheet_tmp, sheet_speed, sheet_speed_modifier, sheet_scale; ALLEGRO_SAMPLE *sample; /*!< Sample with background music. */ ALLEGRO_SAMPLE_INSTANCE *music; /*!< Sample instance with background music. */ unsigned int music_pos; /*!< Position of sample instance. Used when pausing game. */