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/stats.cpp | 7 |
3 files changed, 49 insertions, 3 deletions
diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 18dcfb41..72a21928 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); @@ -1023,6 +1039,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/stats.cpp b/src/gui/stats.cpp index d036c58b..f4d8c661 100644 --- a/src/gui/stats.cpp +++ b/src/gui/stats.cpp @@ -31,9 +31,10 @@ char stats_zeny[24]; DIALOG stats_dialog[] = { /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */ { tmw_ldialog_proc, 493, 0, 300, 55, 0, 0, 0, 0, 0, 0, stats_name, NULL, NULL }, - { tmw_text_proc, 497, 22, 296, 100, 0, 0, 0, 0, 0, 0, stats_hp, NULL, NULL }, + { tmw_text_proc, 497, 34, 296, 100, 0, 0, 0, 0, 0, 0, stats_hp, NULL, NULL }, + { tmw_bar_proc, 497, 22, 60, 18, 0, 0, '1', 0, 1, 1, NULL, NULL, NULL }, { tmw_text_proc, 607, 22, 296, 100, 0, 0, 0, 0, 0, 0, stats_zeny, NULL, NULL }, - { tmw_text_proc, 497, 34, 296, 100, 0, 0, 0, 0, 0, 0, stats_sp, NULL, NULL }, + { tmw_text_proc, 607, 34, 296, 100, 0, 0, 0, 0, 0, 0, stats_sp, NULL, NULL }, { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL } }; @@ -45,4 +46,6 @@ void update_stats_dialog() { sprintf(stats_hp, "HP % 4d / % 4d", char_info->hp, char_info->max_hp); sprintf(stats_zeny, "Zeny % 5i", char_info->zeny); sprintf(stats_sp, "SP % 4d / % 4d", char_info->sp, char_info->max_sp); + stats_dialog[2].d1 = char_info->hp; + stats_dialog[2].d2 = char_info->max_hp; } |