Skip to content

Commit

Permalink
Scale transfer/resurrect box better for all resolutions (#3858)
Browse files Browse the repository at this point in the history
  • Loading branch information
Loobinex authored Feb 5, 2025
1 parent 2522e5f commit 09a6749
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 139 deletions.
119 changes: 19 additions & 100 deletions src/frontmenu_specials.c
Original file line number Diff line number Diff line change
Expand Up @@ -146,63 +146,24 @@ void draw_resurrect_creature(struct GuiButton *gbtn)
LbTextSetWindow(gbtn->scr_pos_x, gbtn->scr_pos_y, gbtn->width, gbtn->height);
struct Dungeon* dungeon = get_my_dungeon();
int i = selected_resurrect_creature(dungeon, gbtn);
int tx_units_per_px = ( (MyScreenHeight < 400) && (dbc_language > 0) ) ? scale_ui_value(32) : ((gbtn->height * 22 / 26) * 16) / LbTextLineHeight();
int tx_units_per_px = scale_ui_value_lofi(16);
if (i != -1)
{
struct CreatureStorage* cstore = &dungeon->dead_creatures[i];
struct CreatureModelConfig* crconf = &game.conf.crtr_conf.model[cstore->model];
lbDisplay.DrawFlags = Lb_TEXT_HALIGN_LEFT;
long spr_idx = get_creature_model_graphics(cstore->model, CGI_HandSymbol);
const struct TbSprite* spr = get_panel_sprite(spr_idx);
int x;
if (MyScreenWidth <= 640)
{
x = gbtn->scr_pos_x - (spr->SWidth / 8);
}
else
{
x = gbtn->scr_pos_x - (spr->SWidth / 4);
}
LbSpriteDrawResized(x, gbtn->scr_pos_y - (19 * units_per_pixel / 16), tx_units_per_px, spr);
int adjust;
int ratio = (MyScreenWidth / 640);
if (ratio == 0)
{
ratio = 3;
}
int h = 0;
if ((dbc_initialized) && (dbc_enabled))
{
adjust = 2;
if (MyScreenHeight < 400)
{
LbTextSetWindow(gbtn->scr_pos_x + 4, gbtn->scr_pos_y, gbtn->width, gbtn->height);
}
if (dbc_language == 1)
{
if ( (ratio > 1) )
{
if (MyScreenHeight >= 400)
{
tx_units_per_px = ((gbtn->height * 22 / 26) * 14) / LbTextLineHeight();
h = (gbtn->height / 4);
}
}
}
if (ratio > 2)
{
ratio = 2;
}
}
else
int x = gbtn->scr_pos_x - scale_ui_value_lofi(1);
int y = gbtn->scr_pos_y - (19 * tx_units_per_px / 16);

if (LbGraphicsScreenHeight() < 400)
{
adjust = (ratio >= 3) ? 0 : 1;
if (ratio > 2)
{
ratio = (MyScreenHeight >= 400) ? 2 : 1;
}
y = gbtn->scr_pos_y - (19 * tx_units_per_px / 32);
}
int w = ((spr->SWidth - 10) + (4 * ratio)) + ((4 * ((MyScreenWidth / 320) - adjust)) * ratio);
LbSpriteDrawResized(x, y, tx_units_per_px, spr);
int h = scale_ui_value_lofi(gbtn->height) / 16;
int w = scale_ui_value_lofi(spr->SWidth + 2);
LbTextDrawResizedFmt(w, h, tx_units_per_px, "%s", get_string(crconf->namestr_idx));
lbDisplay.DrawFlags = Lb_TEXT_HALIGN_RIGHT;
if ( (MyScreenHeight < 400) && (dbc_language == 1) )
Expand Down Expand Up @@ -266,14 +227,12 @@ void draw_transfer_creature(struct GuiButton *gbtn)
unsigned long flgmem = lbDisplay.DrawFlags;
lbDisplay.DrawFlags = Lb_SPRITE_TRANSPAR4;
LbTextSetFont(winfont);
LbDrawBox(gbtn->scr_pos_x, gbtn->scr_pos_y,
gbtn->width, gbtn->height, 0); // The 0 means black color
LbTextSetWindow(gbtn->scr_pos_x, gbtn->scr_pos_y,
gbtn->width, gbtn->height);
LbDrawBox(gbtn->scr_pos_x, gbtn->scr_pos_y, gbtn->width, gbtn->height, 0); // The 0 means black color
LbTextSetWindow(gbtn->scr_pos_x, gbtn->scr_pos_y, gbtn->width, gbtn->height);
struct Dungeon* dungeon = get_my_dungeon();
struct Thing* thing = INVALID_THING;
int listitm_idx = selected_transfer_creature(dungeon, gbtn);
int tx_units_per_px = ( (MyScreenHeight < 400) && (dbc_language > 0) ) ? scale_ui_value(32) : ((gbtn->height * 22 / 26) * 16) / LbTextLineHeight();
int tx_units_per_px = scale_ui_value_lofi(16);
if (listitm_idx != -1)
{
thing = get_player_list_nth_creature_with_property(dungeon->creatr_list_start, CMF_NoTransfer, listitm_idx);
Expand All @@ -285,55 +244,15 @@ void draw_transfer_creature(struct GuiButton *gbtn)
lbDisplay.DrawFlags = Lb_TEXT_HALIGN_LEFT;
long spr_idx = get_creature_model_graphics(thing->model, CGI_HandSymbol);
const struct TbSprite* spr = get_panel_sprite(spr_idx);
int x;
if (MyScreenWidth <= 640)
{
x = gbtn->scr_pos_x - (spr->SWidth / 8);
}
else
{
x = gbtn->scr_pos_x - (spr->SWidth / 4);
}
LbSpriteDrawResized(x, gbtn->scr_pos_y - (19 * units_per_pixel / 16), tx_units_per_px, spr);
int adjust;
int ratio = (MyScreenWidth / 640);
if (ratio == 0)
{
ratio = 3;
}
int h = 0;
if ((dbc_initialized) && (dbc_enabled))
{
adjust = 2;
if (MyScreenHeight < 400)
{
LbTextSetWindow(gbtn->scr_pos_x + 4, gbtn->scr_pos_y, gbtn->width, gbtn->height);
}
if (dbc_language == 1)
{
if ( (ratio > 1) )
{
if (MyScreenHeight >= 400)
{
tx_units_per_px = ((gbtn->height * 22 / 26) * 14) / LbTextLineHeight();
h = (gbtn->height / 4);
}
}
}
if (ratio > 2)
{
ratio = 2;
}
}
else
int x = gbtn->scr_pos_x - scale_ui_value_lofi(1);
int y = gbtn->scr_pos_y - (19 * tx_units_per_px / 16);
if (LbGraphicsScreenHeight() < 400)
{
adjust = (ratio >= 3) ? 0 : 1;
if (ratio > 2)
{
ratio = (MyScreenHeight >= 400) ? 2 : 1;
}
y = gbtn->scr_pos_y - (19 * tx_units_per_px / 32);
}
int w = ((spr->SWidth - 10) + (4 * ratio)) + ((4 * ((MyScreenWidth / 320) - adjust)) * ratio);
LbSpriteDrawResized(x, y, tx_units_per_px, spr);
int h = scale_ui_value_lofi(gbtn->height)/16;
int w = scale_ui_value_lofi(spr->SWidth + 2);
LbTextDrawResizedFmt(w, h, tx_units_per_px, "%s", get_string(crconf->namestr_idx));
lbDisplay.DrawFlags = Lb_TEXT_HALIGN_RIGHT;
if ( (MyScreenHeight < 400) && (dbc_language == 1) )
Expand Down
74 changes: 37 additions & 37 deletions src/gui_draw.c
Original file line number Diff line number Diff line change
Expand Up @@ -213,80 +213,80 @@ void draw_ornate_slab64k(long pos_x, long pos_y, int units_per_px, long width, l
{
draw_slab64k_background(pos_x, pos_y, width, height);
const struct TbSprite* spr = get_button_sprite(GBS_parchment_map_frame_deco_a_tl);
int bs_units_per_spr = 128*units_per_px/spr->SWidth;
int bs_units_per_spr = scale_ui_value(2048/spr->SWidth);
int i;
for (i=10*units_per_px/16; i < width-12*units_per_px/16; i+=32*units_per_px/16)
for (i= scale_ui_value(10); i < width- scale_ui_value(12); i+= scale_ui_value(32))
{
spr = get_button_sprite(GBS_borders_frame_thin_tc);
LbSpriteDrawResized(pos_x + i, pos_y - 4*units_per_px/16, bs_units_per_spr, spr);
LbSpriteDrawResized(pos_x + i, pos_y - scale_ui_value(4), bs_units_per_spr, spr);
spr = get_button_sprite(GBS_borders_frame_thin_bc);
LbSpriteDrawResized(pos_x + i, pos_y + height, bs_units_per_spr, spr);
}
for (i=10*units_per_px/16; i < height-16*units_per_px/16; i+=32*units_per_px/16)
for (i= scale_ui_value(10); i < height- scale_ui_value(16); i+= scale_ui_value(32))
{
spr = get_button_sprite(GBS_borders_frame_thin_ml);
LbSpriteDrawResized(pos_x - 4*units_per_px/16, pos_y + i, bs_units_per_spr, spr);
LbSpriteDrawResized(pos_x - scale_ui_value(4), pos_y + i, bs_units_per_spr, spr);
spr = get_button_sprite(GBS_borders_frame_thin_mr);
LbSpriteDrawResized(pos_x + width, pos_y + i, bs_units_per_spr, spr);
}
spr = get_button_sprite(GBS_borders_frame_thin_tl);
LbSpriteDrawResized(pos_x - 4*units_per_px/16, pos_y - 4*units_per_px/16, bs_units_per_spr, spr);
LbSpriteDrawResized(pos_x - scale_ui_value(4), pos_y - scale_ui_value(4), bs_units_per_spr, spr);
spr = get_button_sprite(GBS_borders_frame_thin_tr);
LbSpriteDrawResized(pos_x + width - 28*units_per_px/16, pos_y - 4*units_per_px/16, bs_units_per_spr, spr);
LbSpriteDrawResized(pos_x + width - scale_ui_value(28), pos_y - scale_ui_value(4), bs_units_per_spr, spr);
spr = get_button_sprite(GBS_borders_frame_thin_bl);
LbSpriteDrawResized(pos_x - 4*units_per_px/16, pos_y + height - 28*units_per_px/16, bs_units_per_spr, spr);
LbSpriteDrawResized(pos_x - scale_ui_value(4), pos_y + height - scale_ui_value(28), bs_units_per_spr, spr);
spr = get_button_sprite(GBS_borders_frame_thin_br);
LbSpriteDrawResized(pos_x + width - 28*units_per_px/16, pos_y + height - 28*units_per_px/16, bs_units_per_spr, spr);
LbSpriteDrawResized(pos_x + width - scale_ui_value(28), pos_y + height - scale_ui_value(28), bs_units_per_spr, spr);
spr = get_button_sprite(GBS_parchment_map_frame_deco_a_tl);
LbSpriteDrawResized(pos_x - 32*units_per_px/16, pos_y - 14*units_per_px/16, bs_units_per_spr, spr);
LbSpriteDrawResized(pos_x - scale_ui_value(32), pos_y - scale_ui_value(14), bs_units_per_spr, spr);
spr = get_button_sprite(GBS_parchment_map_frame_deco_a_bl);
LbSpriteDrawResized(pos_x - 34*units_per_px/16, pos_y + height - 78*units_per_px/16, bs_units_per_spr, spr);
LbSpriteDrawResized(pos_x - scale_ui_value(34), pos_y + height - scale_ui_value(78), bs_units_per_spr, spr);
lbDisplay.DrawFlags |= Lb_SPRITE_FLIP_HORIZ;
spr = get_button_sprite(GBS_parchment_map_frame_deco_a_tl);
LbSpriteDrawResized(pos_x + width - 96*units_per_px/16, pos_y - 14*units_per_px/16, bs_units_per_spr, spr);
LbSpriteDrawResized(pos_x + width - scale_ui_value(96), pos_y - scale_ui_value(14), bs_units_per_spr, spr);
spr = get_button_sprite(GBS_parchment_map_frame_deco_a_bl);
LbSpriteDrawResized(pos_x + width - 92*units_per_px/16, pos_y + height - 78*units_per_px/16, bs_units_per_spr, spr);
LbSpriteDrawResized(pos_x + width - scale_ui_value(92), pos_y + height - scale_ui_value(78), bs_units_per_spr, spr);
lbDisplay.DrawFlags &= ~Lb_SPRITE_FLIP_HORIZ;
}

void draw_ornate_slab_outline64k(long pos_x, long pos_y, int units_per_px, long width, long height)
{
const struct TbSprite* spr = get_button_sprite(GBS_parchment_map_frame_deco_a_tl);
int bs_units_per_spr = 128*units_per_px/spr->SWidth;
int bs_units_per_spr = scale_ui_value_lofi(2048)/spr->SWidth;
long x = pos_x;
long y = pos_y;
int i;
for (i=10*units_per_px/16; i < width - 12*units_per_px/16; i+=32*units_per_px/16)
for (i = scale_ui_value_lofi(10); i < width - scale_ui_value_lofi(12); i += scale_ui_value_lofi(32))
{
spr = get_button_sprite(GBS_borders_frame_thin_tc);
LbSpriteDrawResized(pos_x + i, pos_y - 4*units_per_px/16, bs_units_per_spr, spr);
LbSpriteDrawResized(pos_x + i, pos_y - scale_ui_value_lofi(4), bs_units_per_spr, spr);
spr = get_button_sprite(GBS_borders_frame_thin_bc);
LbSpriteDrawResized(pos_x + i, pos_y + height, bs_units_per_spr, spr);
}
for (i=10*units_per_px/16; i < height - 16*units_per_px/16; i+=32*units_per_px/16)
for (i= scale_ui_value_lofi(10); i < height - scale_ui_value_lofi(16); i+= scale_ui_value_lofi(32))
{
spr = get_button_sprite(GBS_borders_frame_thin_ml);
LbSpriteDrawResized(x - 4*units_per_px/16, y + i, bs_units_per_spr, spr);
LbSpriteDrawResized(x - scale_ui_value_lofi(4), y + i, bs_units_per_spr, spr);
spr = get_button_sprite(GBS_borders_frame_thin_mr);
LbSpriteDrawResized(x + width, y + i, bs_units_per_spr, spr);
}
spr = get_button_sprite(GBS_borders_frame_thin_tl);
LbSpriteDrawResized(x - 4*units_per_px/16, y - 4*units_per_px/16, bs_units_per_spr, spr);
LbSpriteDrawResized(x - scale_ui_value_lofi(4), y - scale_ui_value_lofi(4), bs_units_per_spr, spr);
spr = get_button_sprite(GBS_borders_frame_thin_tr);
LbSpriteDrawResized(x + width - 28*units_per_px/16, y - 4*units_per_px/16, bs_units_per_spr, spr);
LbSpriteDrawResized(x + width - scale_ui_value_lofi(28), y - scale_ui_value_lofi(4), bs_units_per_spr, spr);
spr = get_button_sprite(GBS_borders_frame_thin_bl);
LbSpriteDrawResized(x - 4*units_per_px/16, y + height - 28*units_per_px/16, bs_units_per_spr, spr);
LbSpriteDrawResized(x - scale_ui_value_lofi(4), y + height - scale_ui_value_lofi(28), bs_units_per_spr, spr);
spr = get_button_sprite(GBS_borders_frame_thin_br);
LbSpriteDrawResized(x + width - 28*units_per_px/16, y + height - 28*units_per_px/16, bs_units_per_spr, spr);
LbSpriteDrawResized(x + width - scale_ui_value_lofi(28), y + height - scale_ui_value_lofi(28), bs_units_per_spr, spr);
spr = get_button_sprite(GBS_parchment_map_frame_deco_a_tl);
LbSpriteDrawResized(x - 32*units_per_px/16, y - 14*units_per_px/16, bs_units_per_spr, spr);
LbSpriteDrawResized(x - scale_ui_value_lofi(32), y - scale_ui_value_lofi(14), bs_units_per_spr, spr);
spr = get_button_sprite(GBS_parchment_map_frame_deco_a_bl);
LbSpriteDrawResized(x - 34*units_per_px/16, y + height - 78*units_per_px/16, bs_units_per_spr, spr);
LbSpriteDrawResized(x - scale_ui_value_lofi(34), y + height - scale_ui_value_lofi(78), bs_units_per_spr, spr);
lbDisplay.DrawFlags |= Lb_SPRITE_FLIP_HORIZ;
spr = get_button_sprite(GBS_parchment_map_frame_deco_a_tl);
LbSpriteDrawResized(x + width - 96*units_per_px/16, y - 14*units_per_px/16, bs_units_per_spr, spr);
LbSpriteDrawResized(x + width - scale_ui_value_lofi(96), y - scale_ui_value_lofi(14), bs_units_per_spr, spr);
spr = get_button_sprite(GBS_parchment_map_frame_deco_a_bl);
LbSpriteDrawResized(x + width - 92*units_per_px/16, y + height - 78*units_per_px/16, bs_units_per_spr, spr);
LbSpriteDrawResized(x + width - scale_ui_value_lofi(92), y + height - scale_ui_value_lofi(78), bs_units_per_spr, spr);
lbDisplay.DrawFlags &= ~Lb_SPRITE_FLIP_HORIZ;
}

Expand All @@ -296,40 +296,40 @@ void draw_round_slab64k(long pos_x, long pos_y, int units_per_px, long width, lo
lbDisplay.DrawFlags &= ~Lb_SPRITE_OUTLINE;
if (style_type == ROUNDSLAB64K_LIGHT) {
lbDisplay.DrawFlags |= Lb_SPRITE_TRANSPAR4;
LbDrawBox(pos_x + 4*units_per_px/16, pos_y + 4*units_per_px/16, width - 8*units_per_px/16, height - 8*units_per_px/16, 1);
LbDrawBox(pos_x + scale_ui_value_lofi(4), pos_y + scale_ui_value_lofi(4), width - scale_ui_value_lofi(8), height - scale_ui_value_lofi(8), 1);
lbDisplay.DrawFlags &= ~Lb_SPRITE_TRANSPAR4;
} else {
lbDisplay.DrawFlags |= Lb_SPRITE_TRANSPAR8;
LbDrawBox(pos_x + 4*units_per_px/16, pos_y + 4*units_per_px/16, width - 8*units_per_px/16, height - 8*units_per_px/16, 1);
LbDrawBox(pos_x + scale_ui_value_lofi(4), pos_y + scale_ui_value_lofi(4), width - scale_ui_value_lofi(8), height - scale_ui_value_lofi(8), 1);
lbDisplay.DrawFlags &= ~Lb_SPRITE_TRANSPAR8;
}
int x;
int y;
const struct TbSprite* spr = get_panel_sprite(GPS_message_frame_thin_hex_ct);
int ps_units_per_spr = 26*units_per_px/spr->SWidth;
int ps_units_per_spr = scale_ui_value_lofi(416)/spr->SWidth;
long i;
for (i = 0; i < width - 68*units_per_px/16; i += 26*units_per_px/16)
for (i = 0; i < width - scale_ui_value_lofi(68); i += scale_ui_value_lofi(26))
{
x = pos_x + i + 34*units_per_px/16;
x = pos_x + i + scale_ui_value_lofi(34);
y = pos_y;
spr = get_panel_sprite(GPS_message_frame_thin_hex_ct);
LbSpriteDrawResized(x, y, ps_units_per_spr, spr);
y += height - 4*units_per_px/16;
y += height - scale_ui_value_lofi(4);
spr = get_panel_sprite(GPS_message_frame_thin_hex_cb);
LbSpriteDrawResized(x, y, ps_units_per_spr, spr);
}
for (i = 0; i < height - 56*units_per_px/16; i += 20*units_per_px/16)
for (i = 0; i < height - scale_ui_value_lofi(56); i += scale_ui_value_lofi(20))
{
x = pos_x;
y = pos_y + i + 28*units_per_px/16;
y = pos_y + i + scale_ui_value_lofi(28);
spr = get_panel_sprite(GPS_message_frame_thin_hex_cr);
LbSpriteDrawResized(x, y, ps_units_per_spr, spr);
x += width - 4*units_per_px/16;
x += width - scale_ui_value_lofi(4);
spr = get_panel_sprite(GPS_message_frame_thin_hex_cl);
LbSpriteDrawResized(x, y, ps_units_per_spr, spr);
}
x = pos_x + width - 34*units_per_px/16;
y = pos_y + height - 28*units_per_px/16;
x = pos_x + width - scale_ui_value_lofi(34);
y = pos_y + height - scale_ui_value_lofi(28);
spr = get_panel_sprite(GPS_message_frame_thin_hex_tl);
LbSpriteDrawResized(pos_x, pos_y, ps_units_per_spr, spr);
spr = get_panel_sprite(GPS_message_frame_thin_hex_tr);
Expand Down
4 changes: 2 additions & 2 deletions src/gui_frontbtns.c
Original file line number Diff line number Diff line change
Expand Up @@ -486,8 +486,8 @@ void gui_pretty_background(struct GuiMenu *gmnu)
switch (gmnu->visual_state)
{
case 1:
width = fade_w * (gmnu->menu_init->fade_time - gmnu->fade_time) + 86*units_per_pixel/16;
height = fade_h * (gmnu->menu_init->fade_time - gmnu->fade_time) + 64*units_per_pixel/16;
width = fade_w * (gmnu->menu_init->fade_time - gmnu->fade_time) + scale_ui_value_lofi(86);
height = fade_h * (gmnu->menu_init->fade_time - gmnu->fade_time) + scale_ui_value_lofi(64);
px = gmnu->pos_x + gmnu->width/2 - width/2;
py = gmnu->pos_y + gmnu->height/2 - height/2;
draw_ornate_slab_outline64k(px, py, units_per_pixel, width, height);
Expand Down

0 comments on commit 09a6749

Please sign in to comment.