Exemplo n.º 1
0
void frontnet_draw_small_scroll_selection_box(struct GuiButton *gbtn, long font_idx, const char *text)
{
    struct TbSprite *spr;
    int pos_x, pos_y;
    pos_x = gbtn->scr_pos_x;
    pos_y = gbtn->scr_pos_y;
    spr = &frontend_sprite[55];
    int fs_units_per_px;
    fs_units_per_px = gbtn->height * 16 / spr->SHeight;
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth * fs_units_per_px / 16;
    spr = &frontend_sprite[56];
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth * fs_units_per_px / 16;
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth * fs_units_per_px / 16;
    spr = &frontend_sprite[60];
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    if (text != NULL)
    {
        LbTextSetFont(frontend_font[font_idx]);
        lbDisplay.DrawFlags = 0;
        int tx_units_per_px;
        tx_units_per_px = (gbtn->height*13/14) * 16 / LbTextLineHeight();
        int height;
        height = LbTextLineHeight() * tx_units_per_px / 16;
        LbTextSetWindow(gbtn->scr_pos_x + 13*fs_units_per_px/16, gbtn->scr_pos_y, gbtn->width - 26*fs_units_per_px/16, height);
        LbTextDrawResized(0, 0, tx_units_per_px, text);
    }
}
Exemplo n.º 2
0
void draw_lit_bar64k(long pos_x, long pos_y, int units_per_px, long width)
{
    long body_end;
    long x;
    if (width < 32*units_per_px/16)
    {
        ERRORLOG("Bar is too small");
        return;
    }
    // opening sprite
    struct TbSprite *spr;
    x = pos_x;
    spr = &button_sprite[7];
    LbSpriteDrawResized(x, pos_y, units_per_px, spr);
    x += (spr->SWidth * units_per_px + 8) / 16;
    // body
    body_end = pos_x + width - 2 * ((32*units_per_px+8) / 16);
    while (x < body_end)
    {
        spr = &button_sprite[8];
        LbSpriteDrawResized(x, pos_y, units_per_px, spr);
        x += (spr->SWidth * units_per_px + 8) / 16;
    }
    x = body_end;
    spr = &button_sprite[8];
    LbSpriteDrawResized(x, pos_y, units_per_px, spr);
    x += (spr->SWidth * units_per_px + 8) / 16;
    // ending sprite
    spr = &button_sprite[9];
    LbSpriteDrawResized(x, pos_y, units_per_px, spr);
}
Exemplo n.º 3
0
void draw_bar64k(long pos_x, long pos_y, int units_per_px, long width)
{
    long body_end;
    long x;
    if (width < 72*units_per_px/16)
    {
        ERRORLOG("Bar is too small");
        return;
    }
    // Button opening sprite
    struct TbSprite *spr;
    spr = &button_sprite[1];
    x = pos_x;
    LbSpriteDrawResized(x, pos_y, units_per_px, spr);
    x += (spr->SWidth * units_per_px + 8) / 16;
    // Button body
    body_end = pos_x + width - 2 * ((32*units_per_px+8) / 16);
    while (x < body_end)
    {
        spr = &button_sprite[2];
        LbSpriteDrawResized(x/pixel_size, pos_y/pixel_size, units_per_px, spr);
        x += spr->SWidth * units_per_px / 16;
    }
    x = body_end;
    spr = &button_sprite[2];
    LbSpriteDrawResized(x/pixel_size, pos_y/pixel_size, units_per_px, spr);
    x += (spr->SWidth * units_per_px + 8) / 16;
    // Button ending sprite
    spr = &button_sprite[3];
    LbSpriteDrawResized(x/pixel_size, pos_y/pixel_size, units_per_px, spr);
}
Exemplo n.º 4
0
void frontnet_draw_text_cont_bar(struct GuiButton *gbtn)
{
    int units_per_px;
    units_per_px = (gbtn->width * 16 + 165/2) / 165;

    int pos_x, pos_y;
    pos_y = gbtn->scr_pos_y;
    struct TbSprite *spr;
    int netplyr_idx;
    pos_x = gbtn->scr_pos_x;

    spr = &frontend_sprite[80];
    int fs_units_per_px;
    fs_units_per_px = spr->SHeight * units_per_px / 28;
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth*fs_units_per_px/16;

    spr = &frontend_sprite[81];
    for (netplyr_idx=0; netplyr_idx < NET_PLAYERS_COUNT; netplyr_idx++)
    {
        LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
        pos_x += spr->SWidth*fs_units_per_px/16;
    }

    spr = &frontend_sprite[82];
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
}
Exemplo n.º 5
0
void draw_scroll_box(struct GuiButton *gbtn, int units_per_px, int num_rows)
{
    struct TbSprite *spr;
    int pos_x,pos_y;
    int spridx;
    int delta;
    int i;
    lbDisplay.DrawFlags = 0;
    pos_y = gbtn->scr_pos_y;
    { // First row
        pos_x = gbtn->scr_pos_x;
        spr = &frontend_sprite[25];
        for (i = 6; i > 0; i--)
        {
            LbSpriteDrawResized(pos_x, pos_y, units_per_px, spr);
            pos_x += spr->SWidth * units_per_px / 16;
            spr++;
        }
        spr = &frontend_sprite[25];
        pos_y += spr->SHeight * units_per_px / 16;
    }
    // Further rows
    while (num_rows > 0)
    {
        spridx = 40;
        if (num_rows < 3)
          spridx = 33;
        spr = &frontend_sprite[spridx];
        pos_x = gbtn->scr_pos_x;
        for (i = 6; i > 0; i--)
        {
            LbSpriteDrawResized(pos_x, pos_y, units_per_px, spr);
            pos_x += spr->SWidth * units_per_px / 16;
            spr++;
        }
        spr = &frontend_sprite[spridx];
        pos_y += spr->SHeight * units_per_px / 16;
        delta = 3;
        if (num_rows < 3)
            delta = 1;
        num_rows -= delta;
    }
    // Last row
    spr = &frontend_sprite[47];
    pos_x = gbtn->scr_pos_x;
    for (i = 6; i > 0; i--)
    {
        LbSpriteDrawResized(pos_x, pos_y, units_per_px, spr);
        pos_x += spr->SWidth * units_per_px / 16;
        spr++;
    }
}
Exemplo n.º 6
0
void draw_slab64k(long pos_x, long pos_y, int units_per_px, long width, long height)
{
    // Draw one pixel more, to make sure we won't get empty area after scaling
    draw_slab64k_background(pos_x, pos_y, width+1, height+1);
    struct TbSprite *spr;
    spr = &button_sprite[206];
    int bs_units_per_spr = 16*units_per_px/spr->SWidth;
    int border_shift = 6*units_per_px/16;
    int i;
    for (i=16*units_per_px/16 - border_shift; i < width-2*border_shift; i += 16*units_per_px/16)
    {
        spr = &button_sprite[210];
        LbSpriteDrawResized(pos_x + i, pos_y - border_shift, bs_units_per_spr, spr);
        spr = &button_sprite[211];
        LbSpriteDrawResized(pos_x + i, pos_y + height, bs_units_per_spr, spr);
    }
    for (i=16*units_per_px/16 - border_shift; i < height-2*border_shift; i += 16*units_per_px/16)
    {
        spr = &button_sprite[212];
        LbSpriteDrawResized(pos_x - border_shift, pos_y + i, bs_units_per_spr, spr);
        spr = &button_sprite[213];
        LbSpriteDrawResized(pos_x + width, pos_y + i, bs_units_per_spr, spr);
    }
    spr = &button_sprite[206];
    LbSpriteDrawResized(pos_x - border_shift, pos_y - border_shift, bs_units_per_spr, spr);
    spr = &button_sprite[207];
    LbSpriteDrawResized(pos_x + width - 2*border_shift, pos_y - border_shift, bs_units_per_spr, spr);
    spr = &button_sprite[208];
    LbSpriteDrawResized(pos_x - border_shift, pos_y + height - 2*border_shift, bs_units_per_spr, spr);
    spr = &button_sprite[209];
    LbSpriteDrawResized(pos_x + width - 2*border_shift, pos_y + height - 2*border_shift, bs_units_per_spr, spr);
}
Exemplo n.º 7
0
TbBool fronttorture_draw(void)
{
  struct TbSprite *spr;
  const int img_width = 640;
  const int img_height = 480;
  int w,h,i;
  int spx,spy;
  // Only 8bpp supported for now
  if (LbGraphicsScreenBPP() != 8)
    return false;
  int units_per_px;
  units_per_px = min(units_per_pixel,units_per_pixel_min*16/10);
  w = img_width * units_per_px / 16;
  h = img_height * units_per_px / 16;
  // Starting point coords
  spx = (LbScreenWidth() - w) >> 1;
  spy = (LbScreenHeight() - h) >> 1;
  copy_raw8_image_buffer(lbDisplay.WScreen,LbGraphicsScreenWidth(),LbGraphicsScreenHeight(),
      w,h,spx,spy,torture_background,img_width,img_height);

  for (i=0; i < torture_doors_available; i++)
  {
    if (i == torture_door_selected)
    {
      spr = &doors[i].sprites[torture_sprite_frame];
    } else
    {
      spr = &doors[i].sprites[1];
    }
    LbSpriteDrawResized(spx + doors[i].pos_spr_x*units_per_px/16, spy + doors[i].pos_spr_y*units_per_px/16, units_per_px, spr);
  }
  return true;
}
Exemplo n.º 8
0
void frontnet_draw_net_session_players(struct GuiButton *gbtn)
{
    int i;
    i = frontend_button_caption_font(gbtn, 0);
    lbDisplay.DrawFlags = 0;
    LbTextSetFont(frontend_font[i]);
    int tx_units_per_px;
    tx_units_per_px = gbtn->height * 16 / (2*LbTextLineHeight());
    const struct TbSprite *spr;
    spr = &frontend_sprite[21];
    int fs_units_per_px;
    fs_units_per_px = gbtn->height * 16 / (2*(spr->SHeight*13/8));
    int height;
    height = LbTextLineHeight() * tx_units_per_px / 16;
    long netplyr_idx;
    int shift_y;
    netplyr_idx = net_player_scroll_offset;
    for (shift_y=0; shift_y < gbtn->height; shift_y += height, netplyr_idx++)
    {
        const char *text;
        text = net_player[netplyr_idx].name;
        if (netplyr_idx >= net_number_of_enum_players)
            break;
        spr = &frontend_sprite[21+netplyr_idx];
        i = height - spr->SHeight * fs_units_per_px / 16;
        LbSpriteDrawResized(gbtn->scr_pos_x, gbtn->scr_pos_y + shift_y + abs(i)/2, fs_units_per_px, spr);
        LbTextSetWindow(gbtn->scr_pos_x, shift_y + gbtn->scr_pos_y, gbtn->width - spr->SWidth * fs_units_per_px / 16, height);
        LbTextDrawResized(spr->SWidth * fs_units_per_px / 16, 0, tx_units_per_px, text);
    }
}
Exemplo n.º 9
0
void draw_frontend_sprite_left(long x, long y, int units_per_px, long spridx)
{
    struct TbSprite *spr;
    spr = &frontend_sprite[spridx];
    if ((spr <= frontend_sprite) || (spr >= frontend_end_sprite))
        return;
    LbSpriteDrawResized(x, y, units_per_px, spr);
}
Exemplo n.º 10
0
void draw_button_sprite_left(long x, long y, int units_per_px, long spridx)
{
    struct TbSprite *spr;
    spr = &button_sprite[spridx];
    if ((spr <= button_sprite) || (spr >= end_button_sprites))
      return;
    LbSpriteDrawResized(x, y, units_per_px, spr);
}
Exemplo n.º 11
0
void draw_gui_panel_sprite_left(long x, long y, int units_per_px, long spridx)
{
    struct TbSprite *spr;
    if ((spridx <= 0) || (spridx > GUI_PANEL_SPRITES_COUNT))
      return;
    spr = &gui_panel_sprites[spridx];
    LbSpriteDrawResized(x, y, units_per_px, spr);
}
Exemplo n.º 12
0
void frontnet_draw_alliance_grid(struct GuiButton *gbtn)
{
    //_DK_frontnet_draw_alliance_grid(gbtn);
    int pos_x, pos_y;
    pos_y = gbtn->scr_pos_y;
    struct TbSprite *spr;
    int netplyr_idx;
    int units_per_px;
    units_per_px = gbtn->height * 16 / (22*4);

    pos_x = gbtn->scr_pos_x;
    spr = &frontend_sprite[83];
    for (netplyr_idx=0; netplyr_idx < NET_PLAYERS_COUNT; netplyr_idx++)
    {
        LbSpriteDrawResized(pos_x / pixel_size, pos_y / pixel_size, units_per_px, spr);
        pos_x += spr->SWidth * units_per_px / 16;
    }
    pos_y += spr->SHeight * units_per_px / 16;

    pos_x = gbtn->scr_pos_x;
    spr = &frontend_sprite[84];
    for (netplyr_idx=0; netplyr_idx < NET_PLAYERS_COUNT; netplyr_idx++)
    {
        LbSpriteDrawResized(pos_x / pixel_size, pos_y / pixel_size, units_per_px, spr);
        pos_x += spr->SWidth * units_per_px / 16;
    }
    pos_y += spr->SHeight * units_per_px / 16;

    pos_x = gbtn->scr_pos_x;
    spr = &frontend_sprite[85];
    for (netplyr_idx=0; netplyr_idx < NET_PLAYERS_COUNT; netplyr_idx++)
    {
        LbSpriteDrawResized(pos_x / pixel_size, pos_y / pixel_size, units_per_px, spr);
        pos_x += spr->SWidth * units_per_px / 16;
    }
    pos_y += spr->SHeight * units_per_px / 16;

    pos_x = gbtn->scr_pos_x;
    spr = &frontend_sprite[85];
    for (netplyr_idx=0; netplyr_idx < NET_PLAYERS_COUNT; netplyr_idx++)
    {
        LbSpriteDrawResized(pos_x / pixel_size, pos_y / pixel_size, units_per_px, spr);
        pos_x += spr->SWidth * units_per_px / 16;
    }
    pos_y += spr->SHeight * units_per_px / 16;
}
Exemplo n.º 13
0
void draw_gui_panel_sprite_centered(long x, long y, int units_per_px, long spridx)
{
    struct TbSprite *spr;
    if ((spridx <= 0) || (spridx > GUI_PANEL_SPRITES_COUNT))
      return;
    spr = &gui_panel_sprites[spridx];
    x -= ((spr->SWidth*units_per_px/16) >> 1);
    y -= ((spr->SHeight*units_per_px/16) >> 1);
    LbSpriteDrawResized(x, y, units_per_px, spr);
}
Exemplo n.º 14
0
void frontnet_draw_text_bar(struct GuiButton *gbtn)
{
    struct TbSprite *spr;
    int i;
    long pos_x, pos_y;
    pos_x = gbtn->scr_pos_x;
    pos_y = gbtn->scr_pos_y;
    int fs_units_per_px;
    fs_units_per_px = simple_frontend_sprite_height_units_per_px(gbtn, 72, 100);
    spr = &frontend_sprite[71];
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth * fs_units_per_px / 16;
    spr = &frontend_sprite[72];
    for (i=0; i < 4; i++)
    {
        LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
        pos_x += spr->SWidth * fs_units_per_px / 16;
    }
    spr = &frontend_sprite[73];
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
}
Exemplo n.º 15
0
void frontnet_draw_small_scroll_box_tab(struct GuiButton *gbtn)
{
    long pos_x, pos_y;
    struct TbSprite *spr;
    pos_x = gbtn->scr_pos_x;
    pos_y = gbtn->scr_pos_y;
    spr = &frontend_sprite[75];
    int fs_units_per_px;
    fs_units_per_px = gbtn->height * 16 / spr->SHeight;
    spr = &frontend_sprite[74];
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth * fs_units_per_px / 16;
    spr = &frontend_sprite[75];
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth * fs_units_per_px / 16;
    spr = &frontend_sprite[77];
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth * fs_units_per_px / 16;
    spr = &frontend_sprite[76];
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
}
Exemplo n.º 16
0
void frontnet_draw_alliance_button(struct GuiButton *gbtn)
{
    int plyr1_idx, plyr2_idx;
    struct TbSprite *spr;
    plyr2_idx = gbtn->btype_value;
    plyr1_idx = (long)gbtn->content - 74;
    if ((plyr1_idx == plyr2_idx) || (frontend_alliances & alliance_grid[plyr1_idx][plyr2_idx]))
      spr = &frontend_sprite[87];
    else
      spr = &frontend_sprite[84];
    int units_per_px;
    units_per_px = gbtn->height * 16 / spr->SHeight;
    LbSpriteDrawResized(gbtn->scr_pos_x, gbtn->scr_pos_y, units_per_px, spr);
}
Exemplo n.º 17
0
void frontnet_draw_bottom_scroll_box_tab(struct GuiButton *gbtn)
{
    int units_per_px;
    units_per_px = (gbtn->width * 16 + 240/2) / 240;

    long pos_x, pos_y;
    struct TbSprite *spr;
    pos_x = gbtn->scr_pos_x;
    pos_y = gbtn->scr_pos_y;
    lbDisplay.DrawFlags = Lb_SPRITE_FLIP_VERTIC;
    spr = &frontend_sprite[74];
    int fs_units_per_px;
    fs_units_per_px = spr->SHeight * units_per_px / 26;
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth*fs_units_per_px/16;
    spr = &frontend_sprite[75];
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth*fs_units_per_px/16;
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth*fs_units_per_px/16;
    spr = &frontend_sprite[76];
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    lbDisplay.DrawFlags = 0;
}
Exemplo n.º 18
0
void draw_round_slab64k(long pos_x, long pos_y, int units_per_px, long width, long height)
{
    unsigned short drwflags_mem;
    drwflags_mem = lbDisplay.DrawFlags;
    lbDisplay.DrawFlags &= ~Lb_SPRITE_OUTLINE;
    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);
    lbDisplay.DrawFlags &= ~Lb_SPRITE_TRANSPAR4;
    int x,y;
    struct TbSprite *spr;
    spr = &gui_panel_sprites[242];
    int ps_units_per_spr = 26*units_per_px/spr->SWidth;
    long i;
    for (i = 0; i < width - 68*units_per_px/16; i += 26*units_per_px/16)
    {
        x = pos_x + i + 34*units_per_px/16;
        y = pos_y;
        spr = &gui_panel_sprites[242];
        LbSpriteDrawResized(x, y, ps_units_per_spr, spr);
        y += height - 4*units_per_px/16;
        spr = &gui_panel_sprites[248];
        LbSpriteDrawResized(x, y, ps_units_per_spr, spr);
    }
    for (i = 0; i < height - 56*units_per_px/16; i += 20*units_per_px/16)
    {
        x = pos_x;
        y = pos_y + i + 28*units_per_px/16;
        spr = &gui_panel_sprites[244];
        LbSpriteDrawResized(x, y, ps_units_per_spr, spr);
        x += width - 4*units_per_px/16;
        spr = &gui_panel_sprites[246];
        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;
    spr = &gui_panel_sprites[241];
    LbSpriteDrawResized(pos_x, pos_y, ps_units_per_spr, spr);
    spr = &gui_panel_sprites[243];
    LbSpriteDrawResized(x,     pos_y, ps_units_per_spr, spr);
    spr = &gui_panel_sprites[247];
    LbSpriteDrawResized(pos_x, y,     ps_units_per_spr, spr);
    spr = &gui_panel_sprites[249];
    LbSpriteDrawResized(x,     y,     ps_units_per_spr, spr);
    lbDisplay.DrawFlags = drwflags_mem;
}
Exemplo n.º 19
0
void frontnet_draw_alliance_box_tab(struct GuiButton *gbtn)
{
    int units_per_px;
    units_per_px = (gbtn->width * 16 + 100/2) / 100;

    const struct TbSprite *spr;
    int pos_x, pos_y;

    pos_x = gbtn->scr_pos_x;
    pos_y = gbtn->scr_pos_y;
    spr = &frontend_sprite[74];
    int fs_units_per_px;
    fs_units_per_px = spr->SHeight * units_per_px / 26;
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth*fs_units_per_px/16;
    spr = &frontend_sprite[77];
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth*fs_units_per_px/16;
    spr = &frontend_sprite[76];
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);

    pos_y += 5;
    pos_x = gbtn->scr_pos_x;
    spr = &frontend_sprite[74];
    pos_x += spr->SWidth*fs_units_per_px/16 - 1;
    if (net_number_of_enum_players > 0)
    {
        spr = &frontend_sprite[21];
        LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
        pos_x += spr->SWidth*fs_units_per_px/16;
    }
    if (net_number_of_enum_players > 1)
    {
        spr = &frontend_sprite[22];
        LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
        pos_x += spr->SWidth*fs_units_per_px/16;
    }
    if (net_number_of_enum_players > 2)
    {
        spr = &frontend_sprite[23];
        LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
        pos_x += spr->SWidth*fs_units_per_px/16;
    }
    if (net_number_of_enum_players > 3)
    {
        spr = &frontend_sprite[24];
        LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    }
}
Exemplo n.º 20
0
void frontnet_draw_session_selected(struct GuiButton *gbtn)
{
    //_DK_frontnet_draw_session_selected(gbtn);
    struct TbSprite *spr;
    long pos_x, pos_y;
    int i;
    pos_x = gbtn->scr_pos_x;
    pos_y = gbtn->scr_pos_y;
    int fs_units_per_px;
    fs_units_per_px = simple_frontend_sprite_height_units_per_px(gbtn, 56, 100);
    spr = &frontend_sprite[55];
    for (i=0; i < 6; i++)
    {
        LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
        pos_x += spr->SWidth * fs_units_per_px / 16;
        spr++;
    }
    if (net_session_index_active >= 0)
    {
        const char *text;
        text = net_session[net_session_index_active]->text;
        i = frontend_button_caption_font(gbtn, 0);
        if (text != NULL)
        {
            lbDisplay.DrawFlags = 0;
            LbTextSetFont(frontend_font[i]);
            // Set drawing window and draw the text
            int tx_units_per_px;
            tx_units_per_px = (gbtn->height*13/14) * 16 / LbTextLineHeight();
            int h;
            h = LbTextLineHeight()*tx_units_per_px/16;
            LbTextSetWindow(gbtn->scr_pos_x + 13*fs_units_per_px/16, gbtn->scr_pos_y, gbtn->width - 26*fs_units_per_px/16, h);
            LbTextDrawResized(0, 0, tx_units_per_px, text);
        }
    }
}
Exemplo n.º 21
0
void frontend_draw_high_score_table(struct GuiButton *gbtn)
{
    struct TbSprite *spr;
    struct TbSprite *swpspr;
    long pos_x,pos_y;
    long col1_width,col2_width,col3_width,col4_width;
    long i,k;
    // Detect scaling factor is quite complicated for this item
    int fs_units_per_px;
    {
        int orig_size;
        orig_size = 0;
        spr = &frontend_sprite[33];
        for (i=0; i < 6; i++)
        {
            orig_size += spr->SWidth;
            spr++;
        }
        fs_units_per_px = (gbtn->width * 16 + orig_size/2) / orig_size;
    }
    // Draw the high scores area - top
    pos_x = gbtn->scr_pos_x;
    pos_y = gbtn->scr_pos_y;
    spr = &frontend_sprite[25];
    swpspr = spr;
    for (i=6; i > 0; i--)
    {
        LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, swpspr);
        pos_x += swpspr->SWidth * fs_units_per_px / 16;
        swpspr++;
    }
    pos_y += spr->SHeight * fs_units_per_px / 16;
    // Draw the high scores area - filling
    k = 12;
    while (k > 0)
    {
        if (k < 3)
          i = 33;
        else
          i = 40;
        spr = &frontend_sprite[i];
        pos_x = gbtn->scr_pos_x;
        swpspr = spr;
        for (i=6; i > 0; i--)
        {
          LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, swpspr);
          pos_x += swpspr->SWidth * fs_units_per_px / 16;
          swpspr++;
        }
        pos_y += spr->SHeight * fs_units_per_px / 16;
        if (k < 3)
          k--;
        else
          k -= 3;
    }
    // Draw the high scores area - bottom
    pos_x = gbtn->scr_pos_x;
    spr = &frontend_sprite[47];
    swpspr = spr;
    for (i=6; i > 0; i--)
    {
        LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, swpspr);
        pos_x += swpspr->SWidth * fs_units_per_px / 16;
        swpspr++;
    }
    LbTextSetFont(frontend_font[1]);
    lbDisplay.DrawFlags = 0;
    spr = &frontend_sprite[33];
    pos_x = gbtn->scr_pos_x + spr->SWidth * fs_units_per_px / 16;
    spr = &frontend_sprite[25];
    pos_y = gbtn->scr_pos_y + (spr->SHeight + 3) * fs_units_per_px / 16;
    int tx_units_per_px;
    // The GUI item height should be 11 lines of text
    tx_units_per_px = gbtn->height * 16 / (11*(LbTextLineHeight()));
    col1_width = LbTextStringWidth("99") * tx_units_per_px / 16;
    col2_width = LbTextStringWidth(" 99999") * tx_units_per_px / 16;
    col3_width = LbTextStringWidth(" 999") * tx_units_per_px / 16;
    col4_width = LbTextCharWidth('-') * tx_units_per_px / 16;
    for (k=0; k < VISIBLE_HIGH_SCORES_COUNT-1; k++)
    {
        draw_high_score_entry(k, pos_x, pos_y, col1_width, col2_width, col3_width, col4_width, tx_units_per_px);
        pos_y += LbTextLineHeight() * tx_units_per_px / 16;
    }
    if (high_score_entry_input_active > k)
      draw_high_score_entry(high_score_entry_input_active, pos_x, pos_y, col1_width, col2_width, col3_width, col4_width, tx_units_per_px);
    else
      draw_high_score_entry(k, pos_x, pos_y, col1_width, col2_width, col3_width, col4_width, tx_units_per_px);
}
Exemplo n.º 22
0
void draw_ornate_slab_outline64k(long pos_x, long pos_y, int units_per_px, long width, long height)
{
    long x, y;
    struct TbSprite *spr;
    spr = &button_sprite[10];
    int bs_units_per_spr = 128*units_per_px/spr->SWidth;
    x = pos_x;
    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)
    {
        spr = &button_sprite[13];
        LbSpriteDrawResized(pos_x + i, pos_y - 4*units_per_px/16, bs_units_per_spr, spr);
        spr = &button_sprite[18];
        LbSpriteDrawResized(pos_x + i, pos_y + height, bs_units_per_spr, spr);
    }
    spr = button_sprite;
    for (i=10*units_per_px/16; i < height - 16*units_per_px/16; i+=32*units_per_px/16)
    {
        spr = &button_sprite[15];
        LbSpriteDrawResized(x - 4*units_per_px/16, y + i, bs_units_per_spr, spr);
        spr = &button_sprite[16];
        LbSpriteDrawResized(x + width, y + i, bs_units_per_spr, spr);
    }
    spr = &button_sprite[12];
    LbSpriteDrawResized(x - 4*units_per_px/16,          y - 4*units_per_px/16,           bs_units_per_spr, spr);
    spr = &button_sprite[14];
    LbSpriteDrawResized(x + width - 28*units_per_px/16, y - 4*units_per_px/16,           bs_units_per_spr, spr);
    spr = &button_sprite[17];
    LbSpriteDrawResized(x - 4*units_per_px/16,          y + height - 28*units_per_px/16, bs_units_per_spr, spr);
    spr = &button_sprite[19];
    LbSpriteDrawResized(x + width - 28*units_per_px/16, y + height - 28*units_per_px/16, bs_units_per_spr, spr);
    spr = &button_sprite[10];
    LbSpriteDrawResized(x - 32*units_per_px/16,         y - 14*units_per_px/16,          bs_units_per_spr, spr);
    spr = &button_sprite[11];
    LbSpriteDrawResized(x - 34*units_per_px/16,         y + height - 78*units_per_px/16, bs_units_per_spr, spr);
    lbDisplay.DrawFlags |= Lb_SPRITE_FLIP_HORIZ;
    spr = &button_sprite[10];
    LbSpriteDrawResized(x + width - 96*units_per_px/16, y - 14*units_per_px/16,          bs_units_per_spr, spr);
    spr = &button_sprite[11];
    LbSpriteDrawResized(x + width - 92*units_per_px/16, y + height - 78*units_per_px/16, bs_units_per_spr, spr);
    lbDisplay.DrawFlags &= ~Lb_SPRITE_FLIP_HORIZ;
}
Exemplo n.º 23
0
void frontnet_draw_small_scroll_box(struct GuiButton *gbtn)
{
    long pos_x, pos_y;
    struct TbSprite *spr;
    pos_x = gbtn->scr_pos_x;
    pos_y = gbtn->scr_pos_y;
    int fs_units_per_px;
    fs_units_per_px = small_scroll_box_get_units_per_px(gbtn);
    int btn_type;
    int len;
    btn_type = (long)gbtn->content;
    if (btn_type == 24) {
        len = 2;
    } else
    if (btn_type == 25) {
        len = 3;
    } else
    if (btn_type == 26) {
        len = 7;
    } else {
        ERRORLOG("Unknown button type %d",(int)btn_type);
        return;
    }
    spr = &frontend_sprite[25];
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth * fs_units_per_px / 16;
    spr++;
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth * fs_units_per_px / 16;
    spr++;
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth * fs_units_per_px / 16;
    spr += 3;
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth * fs_units_per_px / 16;
    spr++;
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);

    int dlen;
    dlen = 3;
    spr = &frontend_sprite[25];
    pos_y += spr->SHeight * fs_units_per_px / 16;
    for ( ; len > 0; len -= dlen)
    {
      pos_x = gbtn->scr_pos_x;
      int spr_idx;
      if (len < 3)
          spr_idx = 33;
      else
          spr_idx = 40;
      spr = &frontend_sprite[spr_idx];
      LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
      pos_x += spr->SWidth * fs_units_per_px / 16;
      spr++;
      LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
      pos_x += spr->SWidth * fs_units_per_px / 16;
      spr++;
      LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
      pos_x += spr->SWidth * fs_units_per_px / 16;
      spr += 3;
      LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
      pos_x += spr->SWidth * fs_units_per_px / 16;
      if (len < 3)
          spr_idx = 39;
      else
          spr_idx = 46;
      spr = &frontend_sprite[spr_idx];
      LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
      pos_y += spr->SHeight * fs_units_per_px / 16;
      if (len < 3)
          dlen = 1;
      else
          dlen = 3;
    }

    pos_x = gbtn->scr_pos_x;
    spr = &frontend_sprite[47];
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth * fs_units_per_px / 16;
    spr++;
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth * fs_units_per_px / 16;
    spr++;
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth * fs_units_per_px / 16;
    spr += 3;
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
    pos_x += spr->SWidth * fs_units_per_px / 16;
    spr++;
    LbSpriteDrawResized(pos_x, pos_y, fs_units_per_px, spr);
}
Exemplo n.º 24
0
void draw_message_box_at(long startx, long starty, long box_width, long box_height, long spritesx, long spritesy)
{
    struct TbSprite *spr;
    long x,y;
    long n;

    // Draw top line of sprites
    x = startx;
    y = starty;
    {
        spr = &frontend_sprite[25];
        LbSpriteDrawResized(x, y, units_per_pixel, spr);
        x += spr->SWidth * units_per_pixel / 16;
    }
    for (n=0; n < spritesx; n++)
    {
        spr = &frontend_sprite[(n % 4) + 26];
        LbSpriteDrawResized(x, y, units_per_pixel, spr);
        x += spr->SWidth * units_per_pixel / 16;
    }
    x = startx;
    {
        spr = &frontend_sprite[25];
        x += spr->SWidth * units_per_pixel / 16;
    }
    for (n=0; n < spritesx; n++)
    {
        spr = &frontend_sprite[(n % 4) + 26];
        LbSpriteDrawResized(x, y, units_per_pixel, spr);
        x += spr->SWidth * units_per_pixel / 16;
    }
    {
        spr = &frontend_sprite[30];
        LbSpriteDrawResized(x, y, units_per_pixel, spr);
    }
    // Draw centered line of sprites
    spr = &frontend_sprite[25];
    x = startx;
    y += spr->SHeight * units_per_pixel / 16;
    {
        spr = &frontend_sprite[40];
        LbSpriteDrawResized(x, y, units_per_pixel, spr);
        x += spr->SWidth * units_per_pixel / 16;
    }
    for (n=0; n < spritesx; n++)
    {
        spr = &frontend_sprite[(n % 4) + 41];
        LbSpriteDrawResized(x, y, units_per_pixel, spr);
        x += spr->SWidth * units_per_pixel / 16;
    }
    {
        spr = &frontend_sprite[45];
        LbSpriteDrawResized(x, y, units_per_pixel, spr);
    }
    // Draw bottom line of sprites
    spr = &frontend_sprite[40];
    x = startx;
    y += spr->SHeight * units_per_pixel / 16;
    {
        spr = &frontend_sprite[47];
        LbSpriteDrawResized(x, y, units_per_pixel, spr);
        x += spr->SWidth * units_per_pixel / 16;
    }
    for (n=0; n < spritesx; n++)
    {
        spr = &frontend_sprite[(n % 4) + 48];
        LbSpriteDrawResized(x, y, units_per_pixel, spr);
        x += spr->SWidth * units_per_pixel / 16;
    }
    {
        spr = &frontend_sprite[52];
        LbSpriteDrawResized(x, y, units_per_pixel, spr);
    }
}