mirror of
https://gitlab.com/dosowisko.net/libsuperderpy.git
synced 2025-02-01 11:06:44 +01:00
fix bug with spritesheets derped when toggling fullscreen
This commit is contained in:
parent
8b1b60ebde
commit
3e36e0c264
3 changed files with 12 additions and 10 deletions
2
TODO
2
TODO
|
@ -1,5 +1,5 @@
|
||||||
- obstracles/bonuses
|
- obstracles/bonuses
|
||||||
- HUD
|
- moar love for HUD
|
||||||
- some love for about screen
|
- some love for about screen
|
||||||
- voice manager
|
- voice manager
|
||||||
- night map
|
- night map
|
||||||
|
|
18
src/level.c
18
src/level.c
|
@ -42,9 +42,8 @@ void SelectDerpySpritesheet(struct Game *game, char* name) {
|
||||||
game->level.sheet_blanks = tmp->blanks;
|
game->level.sheet_blanks = tmp->blanks;
|
||||||
game->level.sheet_speed_modifier = tmp->speed;
|
game->level.sheet_speed_modifier = tmp->speed;
|
||||||
game->level.sheet_pos = 0;
|
game->level.sheet_pos = 0;
|
||||||
al_destroy_bitmap(game->level.derpy);
|
game->level.sheet_scale = tmp->scale;
|
||||||
/*int w = al_get_bitmap_width(tmp->bitmap)/tmp->cols;
|
if (game->level.derpy) al_destroy_bitmap(game->level.derpy);
|
||||||
int h = al_get_bitmap_height(tmp->bitmap)/tmp->rows;*/
|
|
||||||
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);
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -235,19 +234,19 @@ void Level_Draw(struct Game *game) {
|
||||||
game->level.derpy_y += tps(game, 60*0.005);
|
game->level.derpy_y += tps(game, 60*0.005);
|
||||||
/*PrintConsole(game, "Derpy Y position: %f", game->level.derpy_y);*/
|
/*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");
|
SelectDerpySpritesheet(game, "run");
|
||||||
game->level.flying = false;
|
game->level.flying = false;
|
||||||
game->level.sheet_speed = tps(game, 60*0.0020/game->level.speed);
|
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");
|
SelectDerpySpritesheet(game, "fly");
|
||||||
game->level.flying = true;
|
game->level.flying = true;
|
||||||
game->level.sheet_speed = tps(game, 60*2.4);
|
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.flying) game->level.sheet_speed = tps(game, 60*0.0020/game->level.speed);
|
||||||
if (game->level.derpy_y < 0) game->level.derpy_y=0;
|
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);
|
al_hold_bitmap_drawing(true);
|
||||||
|
|
||||||
|
@ -445,7 +444,6 @@ void Level_Load(struct Game *game) {
|
||||||
game->level.speed = 0;
|
game->level.speed = 0;
|
||||||
game->level.derpy_x = -0.2;
|
game->level.derpy_x = -0.2;
|
||||||
game->level.derpy_y = 0.6;
|
game->level.derpy_y = 0.6;
|
||||||
SelectDerpySpritesheet(game, "stand");
|
|
||||||
game->level.sheet_speed = tps(game, 60*2.4);
|
game->level.sheet_speed = tps(game, 60*2.4);
|
||||||
game->level.sheet_tmp = 0;
|
game->level.sheet_tmp = 0;
|
||||||
game->level.handle_input = false;
|
game->level.handle_input = false;
|
||||||
|
@ -516,6 +514,7 @@ void Level_ProcessLogic(struct Game *game, ALLEGRO_EVENT *ev) {
|
||||||
|
|
||||||
void Level_Preload(struct Game *game) {
|
void Level_Preload(struct Game *game) {
|
||||||
game->level.derpy_sheets = NULL;
|
game->level.derpy_sheets = NULL;
|
||||||
|
game->level.derpy = NULL;
|
||||||
Pause_Preload(game);
|
Pause_Preload(game);
|
||||||
RegisterDerpySpritesheet(game, "walk");
|
RegisterDerpySpritesheet(game, "walk");
|
||||||
RegisterDerpySpritesheet(game, "fly");
|
RegisterDerpySpritesheet(game, "fly");
|
||||||
|
@ -591,7 +590,10 @@ void Level_PreloadBitmaps(struct Game *game) {
|
||||||
tmp = tmp->next;
|
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);
|
if (game->level.current_level!=1) Moonwalk_PreloadBitmaps(game);
|
||||||
else {
|
else {
|
||||||
/* TODO: handle strange display aspects */
|
/* TODO: handle strange display aspects */
|
||||||
|
|
|
@ -80,7 +80,7 @@ struct Level {
|
||||||
bool flying;
|
bool flying;
|
||||||
float meter_alpha;
|
float meter_alpha;
|
||||||
int sheet_rows, sheet_cols, sheet_pos, sheet_blanks;
|
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 *sample; /*!< Sample with background music. */
|
||||||
ALLEGRO_SAMPLE_INSTANCE *music; /*!< Sample instance with background music. */
|
ALLEGRO_SAMPLE_INSTANCE *music; /*!< Sample instance with background music. */
|
||||||
unsigned int music_pos; /*!< Position of sample instance. Used when pausing game. */
|
unsigned int music_pos; /*!< Position of sample instance. Used when pausing game. */
|
||||||
|
|
Loading…
Reference in a new issue