summaryrefslogtreecommitdiff
path: root/src/gui/inventory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/inventory.cpp')
-rw-r--r--src/gui/inventory.cpp269
1 files changed, 143 insertions, 126 deletions
diff --git a/src/gui/inventory.cpp b/src/gui/inventory.cpp
index add7a99d..8fa4b913 100644
--- a/src/gui/inventory.cpp
+++ b/src/gui/inventory.cpp
@@ -19,13 +19,30 @@
along with The Mana World; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ By SimEdw
+
*/
#include "inventory.h"
+DIALOG inventory_dialog[] = {
+ /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
+ { tmw_dialog_proc, 300, 252, 322, 60, 0, -1, 0, 0, 0, 0, (char*)"Inventory", NULL, NULL },
+ /*{ tmw_text_proc, 304, 284, 50, 10, 0, 0, 0, 0, 0, 0, (char*)"Name:", NULL, NULL },
+ { tmw_text_proc, 304, 304, 50, 10, 0, 0, 0, 0, 0, 0,(char*)"Password:", NULL, NULL },
+ { tmw_edit_proc, 360, 280, 130, 18, 0, -1, 0, 0, 24, 0, username, NULL, NULL },
+ { tmw_password_proc, 360, 300, 130, 18, 0, -1, 0, 0, 24, 0, password, NULL, NULL },
+ { tmw_button_proc, 398, 322, 44, 18, 0, -1, 'o', D_EXIT, -1, 0, (char*)"&Ok", NULL, NULL },
+ { tmw_button_proc, 446, 322, 44, 18, 0, -1, 'c', D_EXIT, -1, 0, (char*)"&Cancel", NULL, NULL },
+ { tmw_check_proc, 304, 322, 60, 18, 0, 0, '1', 0, 0, 0, (char*)"keep", NULL, NULL }, */
+ { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
+};
+
+DIALOG_PLAYER *inventory_player;
+
void TmwInventory::create(int tempxpos, int tempypos) {
- xpos =tempxpos;
- ypos =tempypos;
+ xpos = tempxpos;
+ ypos = tempypos;
itemset = load_datafile("./items/item.dat");
empty = load_bitmap("items/empty.bmp", NULL);
selected = load_bitmap("items/selected.bmp", NULL);
@@ -35,7 +52,7 @@ void TmwInventory::create(int tempxpos, int tempypos) {
items[i][ii].flag = 0; //doesn't hold anything
items[i][ii].itemIDNum = -1; //doesn't exist :)
items[i][ii].xpos = empty->w*i+1;
- items[i][ii].ypos = empty->h*ii;
+ items[i][ii].ypos = empty->h*ii+20;
items[i][ii].num = 0;
}
}
@@ -53,122 +70,130 @@ void TmwInventory::create(int tempxpos, int tempypos) {
backgroundSmall = create_bitmap(empty->w*10+10, empty->h+10);
backgroundBig = create_bitmap(empty->w*10+10, empty->h*10+10);
title = create_bitmap(15, backgroundSmall->h);
- floodfill(title,0,0,200);
- floodfill(backgroundSmall,0,0,100);
- floodfill(backgroundBig,0,0,100);
+ clear_to_color(title, makecol(0, 0, 200));
+ clear_to_color(backgroundSmall, makecol(0,0,100));
+ clear_to_color(backgroundBig, makecol(0,0,100));
areDisplaying = 0;
dragingWindow = 0;
lastSelectedX = -1;
lastSelectedY = -1;
bigwindow = 0; //false
+ inventory_player = init_dialog(inventory_dialog, -1);
+
}
void TmwInventory::draw(BITMAP * buffer) {
// let's draw the inventory
if(areDisplaying) {
- int max;
- if(!bigwindow) {
+ position_dialog(inventory_dialog, xpos, ypos);
+ dialog_message(inventory_dialog,MSG_DRAW,0,0);
+ update_dialog(inventory_player);
+ int max = 1;
+ /*if(!bigwindow) {
max = 1;
blit(backgroundSmall, buffer, 0, 0, xpos-5, ypos-5, 800, 600);
} else {
max = 10;
blit(backgroundBig, buffer, 0, 0, xpos-5, ypos-5, 800, 600);
- }
- blit(title, buffer, 0, 0, xpos+backgroundSmall->w-5, ypos+-5, 800, 600);
- for(int itemX = 0; itemX< 10; itemX++) {
- for(int itemY = 0;itemY<max;itemY++) {
+ }*/
+ //blit(title, buffer, 0, 0, xpos+backgroundSmall->w-5, ypos+-5, 800, 600);
+ for(int itemX=0;itemX<10;itemX++) {
+ for(int itemY=0;itemY<max;itemY++) {
int draw = 0;
- blit(empty, buffer, 0, 0, (xpos+items[itemX][itemY].xpos), (ypos+items[itemX][itemY].ypos), 800, 600);
+ //blit(empty, buffer, 0, 0, (xpos+items[itemX][itemY].xpos), (ypos+items[itemX][itemY].ypos), 800, 600);
if(mouse_b&1) {
if(xpos+items[itemX][itemY].xpos+empty->w > mouse_x && xpos+items[itemX][itemY].xpos < mouse_x)
if(ypos+items[itemX][itemY].ypos+empty->h > mouse_y && ypos+items[itemX][itemY].ypos < mouse_y) {
//selected
- masked_blit(selected, buffer, 0, 0, (xpos+items[itemX][itemY].xpos), (ypos+items[itemX][itemY].ypos), 800, 600);
- draw = 1;
- if(items[itemX][itemY].flag) // have a item
- if(!dragingItem) { //not dragging it
- dragingItem=1; //begin to drag
- ghostOldIDX = itemX;
- ghostOldIDY = itemY;
- ghostID = items[itemX][itemY].itemIDNum;
- ghostX = mouse_x;
- ghostY = mouse_y;
- }
- }
- } else {
- if(lastSelectedX != -1 && dragingItem) { // have stoped dragging it over a itemholder
- //swap place
- itemHolder temp;
- int txpos1,typos1,txpos2,typos2;
- txpos1 = items[lastSelectedX][lastSelectedY].xpos;
- typos1 = items[lastSelectedX][lastSelectedY].ypos;
- txpos2 = items[ghostOldIDX][ghostOldIDY].xpos;
- typos2 = items[ghostOldIDX][ghostOldIDY].ypos;
- temp = items[lastSelectedX][lastSelectedY];
- items[lastSelectedX][lastSelectedY] = items[ghostOldIDX][ghostOldIDY];
- items[ghostOldIDX][ghostOldIDY] = temp;
- items[lastSelectedX][lastSelectedY].xpos = txpos1;
- items[lastSelectedX][lastSelectedY].ypos = typos1;
- items[ghostOldIDX][ghostOldIDY].xpos = txpos2;
- items[ghostOldIDX][ghostOldIDY].ypos = typos2;
- }
- dragingItem = 0; // stop dragging
- }
- if(mouse_b&2 && items[itemX][itemY].flag) {
+ masked_blit(selected, buffer, 0, 0, (xpos+items[itemX][itemY].xpos), (ypos+items[itemX][itemY].ypos), 800, 600);
+ draw = 1;
+ if(items[itemX][itemY].flag) // have a item
+ if(!dragingItem) { //not dragging it
+ dragingItem=1; //begin to drag
+ ghostOldIDX = itemX;
+ ghostOldIDY = itemY;
+ ghostID = items[itemX][itemY].itemIDNum;
+ ghostX = mouse_x;
+ ghostY = mouse_y;
+ }
+ }
+ } else { // if !mouse_b&1
+ if(lastSelectedX != -1 && dragingItem) { // have stoped dragging it over a itemholder
+ //swap place
+ itemHolder temp;
+ int txpos1,typos1,txpos2,typos2;
+ txpos1 = items[lastSelectedX][lastSelectedY].xpos;
+ typos1 = items[lastSelectedX][lastSelectedY].ypos;
+ txpos2 = items[ghostOldIDX][ghostOldIDY].xpos;
+ typos2 = items[ghostOldIDX][ghostOldIDY].ypos;
+ temp = items[lastSelectedX][lastSelectedY];
+ items[lastSelectedX][lastSelectedY] = items[ghostOldIDX][ghostOldIDY];
+ items[ghostOldIDX][ghostOldIDY] = temp;
+ items[lastSelectedX][lastSelectedY].xpos = txpos1;
+ items[lastSelectedX][lastSelectedY].ypos = typos1;
+ items[ghostOldIDX][ghostOldIDY].xpos = txpos2;
+ items[ghostOldIDX][ghostOldIDY].ypos = typos2;
+ }
+ dragingItem = 0; // stop dragging
+ }
+
+ if(mouse_b&2 && items[itemX][itemY].flag) { // if roght mouse button over an item
if(xpos+items[itemX][itemY].xpos+empty->w > mouse_x && xpos+items[itemX][itemY].xpos < mouse_x)
if(ypos+items[itemX][itemY].ypos+empty->h > mouse_y && ypos+items[itemX][itemY].ypos < mouse_y) {
//selected
- masked_blit(selected, buffer, 0, 0, (xpos+items[itemX][itemY].xpos), (ypos+items[itemX][itemY].ypos), 800, 600);
- draw = 1;
- if(itemMeny){ itemMeny=0; } else { itemMeny=1; itemIdn =items[itemX][itemY].itemIDNum ;itemMeny_x = (xpos+items[itemX][itemY].xpos)+selected->w;itemMeny_y = (ypos+items[itemX][itemY].ypos)+selected->h;}
+ masked_blit(selected, buffer, 0, 0, (xpos+items[itemX][itemY].xpos), (ypos+items[itemX][itemY].ypos), 800, 600);
+ draw = 1;
+ if(itemMeny){ itemMeny=0; } else { itemMeny=1; itemIdn =items[itemX][itemY].itemIDNum ;itemMeny_x = (xpos+items[itemX][itemY].xpos)+selected->w;itemMeny_y = (ypos+items[itemX][itemY].ypos)+selected->h;}
}
- }
-
-
- if(xpos+items[itemX][itemY].xpos+empty->w > mouse_x && xpos+items[itemX][itemY].xpos < mouse_x && ypos+items[itemX][itemY].ypos+empty->h > mouse_y && ypos+items[itemX][itemY].ypos < mouse_y ) {
- // a hoover
- lastSelectedX = itemX;
- lastSelectedY = itemY;
- }
-
- if(items[itemX][itemY].flag) //draw the item
- masked_blit((BITMAP *)itemset[items[itemX][itemY].itemIDNum].dat, buffer, 0, 0, (xpos+items[itemX][itemY].xpos), (ypos+items[itemX][itemY].ypos), 800, 600);
-
- //the number of that item
- if(!bigwindow)
- alfont_textprintf_aa(buffer, gui_font, xpos+items[itemX][itemY].xpos+20, ypos+items[itemX][itemY].ypos+empty->h-15, makecol(0,0,0), "%i",items[itemX][itemY].num);
- else
- alfont_textprintf_aa(buffer, gui_font, xpos+items[itemX][itemY].xpos+20, ypos+items[itemX][itemY].ypos+empty->h-15, makecol(0,0,0), "%i",items[itemX][itemY].num);
}
+
+ if(xpos+items[itemX][itemY].xpos+empty->w > mouse_x && xpos+items[itemX][itemY].xpos < mouse_x && ypos+items[itemX][itemY].ypos+empty->h > mouse_y && ypos+items[itemX][itemY].ypos < mouse_y ) {
+ // a hoover
+ lastSelectedX = itemX;
+ lastSelectedY = itemY;
+ }
+
+ xpos = inventory_dialog[0].x;
+ ypos = inventory_dialog[0].y;
+
+ if(items[itemX][itemY].flag) //draw the item
+ masked_blit((BITMAP *)itemset[items[itemX][itemY].itemIDNum].dat, buffer, 0, 0, (xpos+items[itemX][itemY].xpos), (ypos+items[itemX][itemY].ypos), 32, 32);
+
+ //the number of that item
+ if(!bigwindow)
+ alfont_textprintf_aa(buffer, gui_font, xpos+items[itemX][itemY].xpos+20, ypos+items[itemX][itemY].ypos+empty->h-15, makecol(0,0,0), "%i",items[itemX][itemY].num);
+ else
+ alfont_textprintf_aa(buffer, gui_font, xpos+items[itemX][itemY].xpos+20, ypos+items[itemX][itemY].ypos+empty->h-15, makecol(0,0,0), "%i",items[itemX][itemY].num);
+
}
-
-
- if(mouse_b&2) {
- if(xpos+title->w+backgroundSmall->w > mouse_x && xpos+backgroundSmall->w < mouse_x)
- if(ypos+title->h > mouse_y && ypos < mouse_y) {
- if(bigwindow)
+ }
+
+ if(mouse_b&2) {
+ if(xpos+title->w+backgroundSmall->w > mouse_x && xpos+backgroundSmall->w < mouse_x)
+ if(ypos+title->h > mouse_y && ypos < mouse_y) {
+ if(bigwindow)
bigwindow=0;
else
bigwindow = 1;
}
- }
+ }
}
- if(mouse_b&1) {
+ /*if(mouse_b&1) {
if(xpos+title->w+backgroundSmall->w > mouse_x && xpos+backgroundSmall->w < mouse_x)
if(ypos+title->h > mouse_y && ypos < mouse_y) { //begin to move the window
xpos = mouse_x-(backgroundSmall->w);
ypos = mouse_y;
dragingWindow=1;
}
- } else { dragingWindow=0;}
+ } else { dragingWindow=0;}*/
- if(dragingWindow) { //moving the window ?
+ /*if(dragingWindow) { //moving the window ?
xpos = mouse_x-(backgroundSmall->w);
ypos = mouse_y;
- }
+ }*/
if(dragingItem) { //moving the item
masked_blit((BITMAP *)itemset[ghostID].dat, buffer, 0, 0, ghostX, ghostY, 800, 600);
@@ -177,28 +202,25 @@ void TmwInventory::draw(BITMAP * buffer) {
}
if(itemMeny){
- if(itemMeny_y < mouse_y && itemMeny_y+10 > mouse_y) {
- if(mouse_b&1)
- {
- useItem(itemIdn);
- itemMeny = 0;
+ if(itemMeny_y < mouse_y && itemMeny_y+10 > mouse_y) {
+ if(mouse_b&1) {
+ useItem(itemIdn);
+ itemMeny = 0;
}
- alfont_textprintf_aa(buffer, gui_font, itemMeny_x, itemMeny_y, makecol(255,237,33), "Use item");
- } else {
- alfont_textprintf_aa(buffer, gui_font, itemMeny_x, itemMeny_y, MAKECOL_BLACK, "Use item");
+ alfont_textprintf_aa(buffer, gui_font, itemMeny_x, itemMeny_y, makecol(255,237,33), "Use item");
+ } else {
+ alfont_textprintf_aa(buffer, gui_font, itemMeny_x, itemMeny_y, MAKECOL_BLACK, "Use item");
}
- if(itemMeny_y+10 < mouse_y && itemMeny_y+20 > mouse_y) {
- if(mouse_b&1)
- {
- rmItem(itemIdn);
- itemMeny = 0;
+ if(itemMeny_y+10 < mouse_y && itemMeny_y+20 > mouse_y) {
+ if(mouse_b&1) {
+ rmItem(itemIdn);
+ itemMeny = 0;
}
- alfont_textprintf_aa(buffer, gui_font, itemMeny_x, itemMeny_y+10, makecol(255,237,33), "Del item");
- } else {
- alfont_textprintf_aa(buffer, gui_font, itemMeny_x, itemMeny_y+10, MAKECOL_BLACK, "Del item");
+ alfont_textprintf_aa(buffer, gui_font, itemMeny_x, itemMeny_y+10, makecol(255,237,33), "Del item");
+ } else {
+ alfont_textprintf_aa(buffer, gui_font, itemMeny_x, itemMeny_y+10, MAKECOL_BLACK, "Del item");
}
}
-
}
@@ -247,44 +269,39 @@ int TmwInventory::addItem(int idnum, int antal) {
return -3;
}
-int TmwInventory::rmItem(int idnum)
-{
-int found, tempi;
-found = 0;
-tempi = -1;
-for(int i = 0; i< 10; i++)
- {
- for(int ii = 0; ii< 10; ii++)
- {
- if(items[i][ii].itemIDNum == idnum)
- { items[i][ii].itemIDNum = -1;
- items[i][ii].flag = 0;
- items[i][ii].num = 0;
- return 1;
- }
- }
+int TmwInventory::rmItem(int idnum) {
+ int found, tempi;
+ found = 0;
+ tempi = -1;
+ for(int i = 0; i< 10; i++) {
+ for(int ii = 0; ii< 10; ii++) {
+ if(items[i][ii].itemIDNum == idnum) {
+ items[i][ii].itemIDNum = -1;
+ items[i][ii].flag = 0;
+ items[i][ii].num = 0;
+ return 1;
+ }
+ }
}
-return -1;
+ return -1;
}
-int TmwInventory::changeNum(int idnum, int antal)
-{
-int found, tempi;
-found = 0;
-tempi = -1;
-for(int i = 0; i< 10; i++)
- {
- for(int ii = 0; ii< 10; ii++)
- {
- if(items[i][ii].itemIDNum == idnum)
- { items[i][ii].num = antal; return 1; }
- }
- }
-return -1;
+int TmwInventory::changeNum(int idnum, int antal) {
+ int found, tempi;
+ found = 0;
+ tempi = -1;
+ for(int i = 0; i< 10; i++) {
+ for(int ii = 0; ii< 10; ii++) {
+ if(items[i][ii].itemIDNum == idnum) {
+ items[i][ii].num = antal;
+ return 1;
+ }
+ }
+ }
+ return -1;
}
-int TmwInventory::useItem(int idnum)
-{
+int TmwInventory::useItem(int idnum) {
printf("Use item %i\n",idnum);
WFIFOW(0) = net_w_value(0x00a7);
WFIFOW(2) = net_w_value(idnum);