diff options
author | Simon Edwardsson <simon@crossnet.se> | 2004-10-03 12:56:09 +0000 |
---|---|---|
committer | Simon Edwardsson <simon@crossnet.se> | 2004-10-03 12:56:09 +0000 |
commit | 0b00bf2ccff23b5f565e214b36be3ea823ab59da (patch) | |
tree | 2b43d9c1e9a72b07c26c2386633d6a80751bd25a /src | |
parent | 07af1c32d6d51a4d178ffc4dea7488a949d1e553 (diff) | |
download | mana-client-0b00bf2ccff23b5f565e214b36be3ea823ab59da.tar.gz mana-client-0b00bf2ccff23b5f565e214b36be3ea823ab59da.tar.bz2 mana-client-0b00bf2ccff23b5f565e214b36be3ea823ab59da.tar.xz mana-client-0b00bf2ccff23b5f565e214b36be3ea823ab59da.zip |
Added tmw_bar_proc, and a stat window, (I have // your stat window kth5 :) )
Diffstat (limited to 'src')
-rw-r--r-- | src/game.cpp | 5 | ||||
-rw-r--r-- | src/graphic/graphic.cpp | 33 | ||||
-rw-r--r-- | src/graphic/graphic.h | 1 | ||||
-rw-r--r-- | src/gui/gui.cpp | 38 | ||||
-rw-r--r-- | src/gui/gui.h | 7 | ||||
-rw-r--r-- | src/gui/inventory.cpp | 6 |
6 files changed, 80 insertions, 10 deletions
diff --git a/src/game.cpp b/src/game.cpp index 5b776845..407d87b3 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -265,6 +265,9 @@ void do_input() { action_time = false; } else if(key[KEY_I]) { inventory.toggle(); + action_time = false; + } else if(key[KEY_T]) { + show_stats_dialog = !show_stats_dialog; action_time = false; } } @@ -531,7 +534,7 @@ void do_parse() { char_info->lv = RFIFOW(4); break; } - update_stats_dialog(); + //update_stats_dialog(); if(char_info->hp==0) { ok("Message", "You're now dead, press ok to restart"); WFIFOW(0) = net_w_value(0x00b2); diff --git a/src/graphic/graphic.cpp b/src/graphic/graphic.cpp index 48d1b5c7..59d10b1b 100644 --- a/src/graphic/graphic.cpp +++ b/src/graphic/graphic.cpp @@ -38,13 +38,16 @@ DATAFILE *tileset; char itemCurrenyQ[10] = "0"; char page_num; int map_x, map_y, camera_x, camera_y; -DIALOG_PLAYER *chat_player, *npc_player, *skill_player, *buy_sell_player, *buy_player, *sell_player, *stats_player; +DIALOG_PLAYER *chat_player, *npc_player, *skill_player, *buy_sell_player, *buy_player, *sell_player, *player_stats_player, *stats_player; char speech[255] = ""; char npc_text[1000] = ""; TmwInventory inventory; +char statsString[255] = "n/a"; +char statsString2[255] = "n/a"; Chat chatlog("./docs/chatlog.txt", 20); int show_npc_dialog = 0; bool show_skill_dialog = false; +bool show_stats_dialog = false; DIALOG npc_dialog[] = { /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */ @@ -54,6 +57,15 @@ DIALOG npc_dialog[] = { { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL } }; +DIALOG player_stats_dialog[] = { + /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */ + { tmw_dialog_proc, 350, 200, 300, 45, 0, -1, 0, 0, 0, 0, statsString, NULL, NULL }, + { tmw_text_proc, 355, 220, 180, 10, 0, 0, 0, 0, 0, 0, (char *)"Hp:", NULL, NULL }, + { tmw_bar_proc, 375, 225, 60, 18, 0, 0, '1', 0, 1, 1, NULL, NULL, NULL }, + { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL } +}; + + DIALOG buy_sell_dialog[] = { /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */ { tmw_dialog_proc, 350, 200, 100, 105, 0, 0, 0, 0, 0, 0, (char *)"Shop", NULL, NULL }, @@ -142,9 +154,12 @@ void init_graphic() { chat_player = init_dialog(chat_dialog, -1); npc_player = init_dialog(npc_dialog, -1); position_dialog(npc_dialog, 300, 200); + skill_player = init_dialog(skill_dialog, -1); - stats_player = init_dialog(stats_dialog, -1); + //stats_player = init_dialog(stats_dialog, -1); buy_sell_player = init_dialog(buy_sell_dialog, -1); + player_stats_player = init_dialog(player_stats_dialog, -1); + position_dialog(player_stats_dialog, 50, 5); buy_player = init_dialog(buy_dialog, -1); sell_player = init_dialog(sell_dialog, -1); gui_bitmap = double_buffer; @@ -266,7 +281,15 @@ void do_graphic(void) { chatlog.chat_draw(double_buffer, 8, gui_font); gui_update(chat_player); - + if(show_stats_dialog) + { + sprintf(statsString,"%s Lv: %i Exp: %i",char_info->name,char_info->lv,char_info->xp); + player_stats_dialog[2].d1 = char_info->hp; + player_stats_dialog[2].d2 = char_info->max_hp; + dialog_message(player_stats_dialog, MSG_DRAW, 0, 0); + gui_update(player_stats_player); + } + switch(show_npc_dialog) { case 1: dialog_message(npc_dialog, MSG_DRAW, 0, 0); @@ -339,8 +362,8 @@ void do_graphic(void) { } // character status display - update_stats_dialog(); - gui_update(stats_player); + //update_stats_dialog(); + //gui_update(stats_player); alfont_textprintf(double_buffer, gui_font, 0, 0, MAKECOL_WHITE, "FPS:%i", fps); diff --git a/src/graphic/graphic.h b/src/graphic/graphic.h index 2ba3cc74..2b323a5c 100644 --- a/src/graphic/graphic.h +++ b/src/graphic/graphic.h @@ -46,6 +46,7 @@ extern char speech[255]; extern char npc_text[1000]; extern Chat chatlog; extern bool show_skill_dialog; +extern bool show_stats_dialog; extern int show_npc_dialog; extern TmwInventory inventory; extern int map_x, map_y, camera_x, camera_y; 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); } } } |