diff options
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/gui.cpp | 38 | ||||
-rw-r--r-- | src/gui/gui.h | 7 | ||||
-rw-r--r-- | src/gui/inventory.cpp | 6 |
3 files changed, 47 insertions, 4 deletions
diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 10021020..0ca829d9 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -299,7 +299,22 @@ void loadListboxSkin() { } } - +void loadBarSkin() { +BITMAP *temp1 = load_bitmap("data/bar.bmp", NULL); +BITMAP *temp2 = load_bitmap("data/bar_filled.bmp", NULL); +gui_skin.bar.bg.grid[0] = create_bitmap(3,11); +gui_skin.bar.bg.grid[1] = create_bitmap(1,11); +gui_skin.bar.bg.grid[2] = create_bitmap(3,11); +blit(temp1, gui_skin.bar.bg.grid[0], 0, 0, 0, 0, 3, 11); +blit(temp1, gui_skin.bar.bg.grid[1], 4, 0, 0, 0, 1, 11); +blit(temp1, gui_skin.bar.bg.grid[2], 13, 0, 0, 0, 3, 11); +gui_skin.bar.bg.grid[3] = create_bitmap(3,11); +gui_skin.bar.bg.grid[4] = create_bitmap(1,11); +gui_skin.bar.bg.grid[5] = create_bitmap(3,11); +blit(temp2, gui_skin.bar.bg.grid[3], 0, 0, 0, 0, 3, 11); +blit(temp2, gui_skin.bar.bg.grid[4], 4, 0, 0, 0, 1, 11); +blit(temp2, gui_skin.bar.bg.grid[5], 13, 0, 0, 0, 3, 11); +} void loadDialogSkin() { char **tokens; int tokenCount; @@ -381,6 +396,7 @@ int gui_load_skin(const char* skinname) { loadTextboxSkin(); loadListboxSkin(); loadDialogSkin(); + loadBarSkin(); pop_config_state(); set_mouse_sprite((BITMAP *)gui_gfx[7].dat); @@ -1021,6 +1037,26 @@ int tmw_list_proc(int msg, DIALOG *d, int c) { } return D_O_K; } +int tmw_bar_proc(int msg, DIALOG *d, int c) +{ +float share2 = ((float)d->d1 / (float)d->d2); +if(share2!=0) + masked_blit(gui_skin.bar.bg.grid[3], gui_bitmap, 0, 0, d->x, d->y, gui_bitmap->w, gui_bitmap->h); +else + masked_blit(gui_skin.bar.bg.grid[0], gui_bitmap, 0, 0, d->x, d->y, gui_bitmap->w, gui_bitmap->h); + +for(int i = 3; i < (d->w-3); i++) + if(i<share2*d->w-3) + masked_blit(gui_skin.bar.bg.grid[4], gui_bitmap, 0, 0, d->x+1*i, d->y, gui_bitmap->w, gui_bitmap->h); + else + masked_blit(gui_skin.bar.bg.grid[1], gui_bitmap, 0, 0, d->x+1*i, d->y, gui_bitmap->w, gui_bitmap->h); + +if(share2==1) + masked_blit(gui_skin.bar.bg.grid[5], gui_bitmap, 0, 0, d->x+d->w-3, d->y, gui_bitmap->w, gui_bitmap->h); +else + masked_blit(gui_skin.bar.bg.grid[2], gui_bitmap, 0, 0, d->x+d->w-3, d->y, gui_bitmap->w, gui_bitmap->h); +return D_O_K; +} /** dialog box w/ left centered head diff --git a/src/gui/gui.h b/src/gui/gui.h index 47362466..e14a0140 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -80,6 +80,11 @@ typedef struct { } LexDialog; typedef struct { + LexSkinnedRect bg; +} LexBar; + + +typedef struct { LexButton button; LexSlider slider; LexCheckbox checkbox; @@ -87,6 +92,7 @@ typedef struct { LexTextbox textbox; LexListbox listbox; LexDialog dialog; + LexBar bar; } LexSkin; extern LexSkin gui_skin; @@ -115,6 +121,7 @@ int tmw_dialog_proc(int msg, DIALOG *d, int c); int tmw_ldialog_proc(int msg, DIALOG *d, int c); int tmw_textbox_proc(int msg, DIALOG *d, int c); int tmw_bitmap_proc(int msg, DIALOG *d, int c); +int tmw_bar_proc(int msg, DIALOG *d, int c); void ok(const char *title, const char *message); unsigned int yes_no(const char *title, const char *message); diff --git a/src/gui/inventory.cpp b/src/gui/inventory.cpp index 09bf56f2..be2b239f 100644 --- a/src/gui/inventory.cpp +++ b/src/gui/inventory.cpp @@ -56,10 +56,10 @@ void TmwInventory::draw(BITMAP * buffer) { for(int i=0;i<INVENTORY_SIZE;i++) { if(items[i].quantity>0) { if(items[i].id>=501 && items[i].id<=510) - masked_blit((BITMAP *)itemset[items[i].id-500].dat, gui_bitmap, 0, 0, inventory_dialog[0].x-90+24*i, inventory_dialog[0].y+26, 22, 22); + masked_blit((BITMAP *)itemset[items[i].id-500].dat, gui_bitmap, 0, 0, inventory_dialog[0].x+24*i, inventory_dialog[0].y+26, 22, 22); else - masked_blit((BITMAP *)itemset[0].dat, gui_bitmap, 0, 0, inventory_dialog[0].x-90+24*i, inventory_dialog[0].y+26, 22, 22); - alfont_textprintf_aa(gui_bitmap, gui_font, inventory_dialog[0].x-90+24*i, inventory_dialog[0].y+44, makecol(0,0,0), "%i", items[i].quantity); + masked_blit((BITMAP *)itemset[0].dat, gui_bitmap, 0, 0, inventory_dialog[0].x+24*i, inventory_dialog[0].y+26, 22, 22); + alfont_textprintf_aa(gui_bitmap, gui_font, inventory_dialog[0].x+24*i, inventory_dialog[0].y+44, makecol(0,0,0), "%i", items[i].quantity); } } } |