summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBjørn Lindeijer <bjorn@lindeijer.nl>2004-12-26 19:44:58 +0000
committerBjørn Lindeijer <bjorn@lindeijer.nl>2004-12-26 19:44:58 +0000
commit800f8e6070f10908c446147b96d5e1424f55c729 (patch)
treec043d03e5a0294174696a3a6d23ecc12a2acdb80 /src
parenta94d3a14dd0d891cf05ea0c7a4d1613560fd96c5 (diff)
downloadmana-client-800f8e6070f10908c446147b96d5e1424f55c729.tar.gz
mana-client-800f8e6070f10908c446147b96d5e1424f55c729.tar.bz2
mana-client-800f8e6070f10908c446147b96d5e1424f55c729.tar.xz
mana-client-800f8e6070f10908c446147b96d5e1424f55c729.zip
Ported the inventory dialog over to Guichan. For the moment it is not
possible to delete or use items.
Diffstat (limited to 'src')
-rw-r--r--src/game.cpp24
-rw-r--r--src/graphic/graphic.cpp15
-rw-r--r--src/graphic/graphic.h110
-rw-r--r--src/gui/inventory.cpp129
-rw-r--r--src/gui/inventory.h51
-rw-r--r--src/gui/shop.cpp176
-rw-r--r--src/gui/window.h2
7 files changed, 242 insertions, 265 deletions
diff --git a/src/game.cpp b/src/game.cpp
index 64336157..cd076611 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -287,7 +287,7 @@ void do_input() {
show_skill_dialog = !show_skill_dialog;
action_time = false;
} else if(key[KEY_I]) {
- inventory.setVisible(!inventory.isVisible());
+ inventoryDialog->setVisible(!inventoryDialog->isVisible());
action_time = false;
} else if(key[KEY_K]) {
show_skill_list_dialog = !show_skill_dialog;
@@ -531,14 +531,16 @@ void do_parse() {
break;
//Get the items
case 0x01ee:
- for(int loop=0;loop<(RFIFOW(2)-4)/18;loop++) {
- inventory.add_item(RFIFOW(4+loop*18), RFIFOW(4+loop*18+2), RFIFOW(4+loop*18+6)); }
+ for (int loop = 0; loop < (RFIFOW(2) - 4) / 18; loop++) {
+ inventoryDialog->addItem(RFIFOW(4 + loop * 18),
+ RFIFOW(4 + loop * 18 + 2), RFIFOW(4 + loop * 18 + 6));
+ }
break;
case 0x00a8: // could I use the item?
// index RFIFOW(2)
// succes or not RFIFOB(6);
- //if(RFIFOB(6))
- // inventory.add_item(RFIFOW(2),RFIFOW(4));
+ //if (RFIFOB(6))
+ // inventoryDialog->addItem(RFIFOW(2), RFIFOW(4));
break;
// Warp
case 0x0091:
@@ -776,16 +778,16 @@ void do_parse() {
if(RFIFOB(22)>0)
chatlog.chat_log("Unable to pick up item", BY_SERVER, font);
else
- inventory.add_item(RFIFOW(2), RFIFOW(6), RFIFOW(4));
+ inventoryDialog->addItem(RFIFOW(2), RFIFOW(6), RFIFOW(4));
break;
// Remove item to inventory after you sold it
case 0x00af:
- printf("sell %i\n",-RFIFOW(4));
- inventory.increase_quantity(RFIFOW(2), -RFIFOW(4));
+ printf("sell %i\n", -RFIFOW(4));
+ inventoryDialog->increaseQuantity(RFIFOW(2), -RFIFOW(4));
break;
// Use an item
case 0x01c8:
- inventory.change_quantity(RFIFOW(2), RFIFOW(10));
+ inventoryDialog->changeQuantity(RFIFOW(2), RFIFOW(10));
break;
// ??
case 0x0119:
@@ -858,8 +860,8 @@ void do_parse() {
}
break;
case 0x00a4:
- for(int i=0;i<(RFIFOW(2)-4)/20;i++)
- inventory.add_item(RFIFOW(4+20*i), RFIFOW(6+20*i), 1);
+ for (int i = 0; i < (RFIFOW(2) - 4) / 20; i++)
+ inventoryDialog->addItem(RFIFOW(4 + 20 * i), RFIFOW(6 + 20 * i), 1);
break;
// Manage non implemented packets
diff --git a/src/graphic/graphic.cpp b/src/graphic/graphic.cpp
index b3173881..02b23181 100644
--- a/src/graphic/graphic.cpp
+++ b/src/graphic/graphic.cpp
@@ -17,8 +17,6 @@
* You should have received a copy of the GNU General Public License
* 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 ElvenProgrammer aka Eugenio Favalli (umperio@users.sourceforge.net)
*/
#include "graphic.h"
@@ -42,13 +40,11 @@ BITMAP *buffer, *chat_background;
DATAFILE *tileset;
char itemCurrenyQ[10] = "0";
-//char page_num;
int map_x, map_y, camera_x, camera_y;
DIALOG_PLAYER *npc_player, *skill_player, *buy_sell_player, *sell_player, *skill_list_player, *npc_list_player;
char npc_text[1000] = "";
char statsString2[255] = "n/a";
char skill_points[10] = "";
-TmwInventory inventory;
Chat chatlog("./docs/chatlog.txt", 20);
int show_npc_dialog = 0;
bool show_skill_dialog = false;
@@ -56,8 +52,10 @@ bool show_skill_list_dialog = false;
char npc_button[10] = "Close";
gcn::TextField *chatInput;
+
StatsDialog *statsDialog;
BuyDialog *buyDialog;
+InventoryDialog *inventoryDialog;
void ChatListener::action(const std::string& eventId)
{
@@ -204,10 +202,12 @@ void init_graphic() {
statsDialog = new StatsDialog(guiTop);
statsDialog->setPosition(SCREEN_W - statsDialog->getWidth() - 10, 10);
- // Create buy dialog
+ // Create buy and inventory dialog
buyDialog = new BuyDialog(guiTop);
+ inventoryDialog = new InventoryDialog(guiTop);
buyDialog->setVisible(false);
-
+ inventoryDialog->setVisible(false);
+ inventoryDialog->setPosition(100, 100);
npc_player = init_dialog(npc_dialog, -1);
position_dialog(npc_dialog, 300, 200);
@@ -216,7 +216,6 @@ void init_graphic() {
sell_player = init_dialog(sell_dialog, -1);
skill_list_player = init_dialog(skill_list_dialog, -1);
npc_list_player = init_dialog(npc_list_dialog, -1);
- inventory.create(100, 100);
vpage[0] = NULL;
vpage[1] = NULL;
@@ -514,7 +513,7 @@ void do_graphic(void) {
guiGraphics->setTarget(vpage[page_num]);
gui_update(NULL);
- inventory.draw(vpage[page_num]);
+ //inventory.draw(vpage[page_num]);
set_trans_blender(0, 0, 0, 110);
draw_trans_sprite(vpage[page_num], chat_background, 0, SCREEN_H - 125);
diff --git a/src/graphic/graphic.h b/src/graphic/graphic.h
index ad1d02fa..d71c5ead 100644
--- a/src/graphic/graphic.h
+++ b/src/graphic/graphic.h
@@ -17,8 +17,6 @@
* You should have received a copy of the GNU General Public License
* 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 ElvenProgrammer aka Eugenio Favalli (umperio@users.sourceforge.net)
*/
#ifndef _GRAPHIC_H
@@ -47,13 +45,13 @@ extern char skill_points[10];
extern Chat chatlog;
extern bool show_skill_dialog, show_skill_list_dialog;
extern int show_npc_dialog;
-extern TmwInventory inventory;
extern int map_x, map_y, camera_x, camera_y;
extern BITMAP *hairset;
extern char npc_button[10];
extern StatsDialog *statsDialog;
extern BuyDialog *buyDialog;
+extern InventoryDialog *inventoryDialog;
// The action listener for the chat field
class ChatListener : public gcn::ActionListener {
@@ -66,68 +64,68 @@ void init_graphic(void);
void exit_graphic(void);
class Surface {
- public:
- BITMAP *buffer;
- virtual void lock() = 0;
- virtual void show() = 0;
- virtual void update() = 0;
+ public:
+ BITMAP *buffer;
+ virtual void lock() = 0;
+ virtual void show() = 0;
+ virtual void update() = 0;
};
class VideoSurface : public Surface {
- private:
- int current_page;
- BITMAP *page[2];
- public:
- VideoSurface(BITMAP *page1, BITMAP *page2) {
- page[0] = page1;
- page[1] = page2;
- current_page = 0;
- }
- ~VideoSurface() {
- destroy_bitmap(page[0]);
- destroy_bitmap(page[2]);
- }
- void lock() {
- acquire_bitmap(buffer);
- }
- void show() {
- release_bitmap(buffer);
- show_video_bitmap(buffer);
- }
- void update() {
- current_page++;
- if (current_page == 2) {
- current_page = 0;
- }
- buffer = page[current_page];
- }
+ private:
+ int current_page;
+ BITMAP *page[2];
+ public:
+ VideoSurface(BITMAP *page1, BITMAP *page2) {
+ page[0] = page1;
+ page[1] = page2;
+ current_page = 0;
+ }
+ ~VideoSurface() {
+ destroy_bitmap(page[0]);
+ destroy_bitmap(page[2]);
+ }
+ void lock() {
+ acquire_bitmap(buffer);
+ }
+ void show() {
+ release_bitmap(buffer);
+ show_video_bitmap(buffer);
+ }
+ void update() {
+ current_page++;
+ if (current_page == 2) {
+ current_page = 0;
+ }
+ buffer = page[current_page];
+ }
};
class MemorySurface : public Surface {
- public:
- MemorySurface(BITMAP *buffer) {
- this->buffer = buffer;
- }
- ~MemorySurface() {
- destroy_bitmap(buffer);
- }
- void lock() {
- }
- void show() {
- blit(buffer, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);
- }
- void update() {
- }
+ public:
+ MemorySurface(BITMAP *buffer) {
+ this->buffer = buffer;
+ }
+ ~MemorySurface() {
+ destroy_bitmap(buffer);
+ }
+ void lock() {
+ }
+ void show() {
+ blit(buffer, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);
+ }
+ void update() {
+ }
};
class GraphicEngine {
- private:
- Surface *surface;
- Spriteset *tileset;
- public:
- GraphicEngine();
- ~GraphicEngine();
- void refresh();
+ private:
+ Surface *surface;
+ Spriteset *tileset;
+ public:
+ GraphicEngine();
+ ~GraphicEngine();
+ void refresh();
};
#endif
diff --git a/src/gui/inventory.cpp b/src/gui/inventory.cpp
index 8b1032b8..0b44807c 100644
--- a/src/gui/inventory.cpp
+++ b/src/gui/inventory.cpp
@@ -20,67 +20,64 @@
*/
#include "inventory.h"
+#include <sstream>
-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 },
- { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
-};
-
-DIALOG_PLAYER *inventory_player;
-
-TmwInventory::TmwInventory()
-{
- show_inventory = false;
-}
-
-TmwInventory::~TmwInventory()
+InventoryDialog::InventoryDialog(gcn::Container *parent):
+ Window(parent, "Inventory")
{
-}
+ setSize(322, 60);
-void TmwInventory::create(int tempxpos, int tempypos) {
itemset = load_datafile("./data/graphic/items.dat");
for (int i = 0; i < INVENTORY_SIZE; i++) {
- items[i].id = -1; // if id is negative there's no item
+ items[i].id = -1;
items[i].quantity = 0;
}
+}
- inventory_player = init_dialog(inventory_dialog, -1);
- position_dialog(inventory_dialog, x, y);
-
- show_inventory = false;
+InventoryDialog::~InventoryDialog()
+{
}
-void TmwInventory::draw(BITMAP *buffer) {
- if (!show_inventory) return;
+void InventoryDialog::draw(gcn::Graphics *graphics)
+{
+ int x, y;
+ getAbsolutePosition(x, y);
+
+ // Draw window graphics
+ Window::draw(graphics);
+
+ gcn::AllegroGraphics *alGraphics = (gcn::AllegroGraphics*)graphics;
+ BITMAP *target = alGraphics->getTarget();
- dialog_message(inventory_dialog, MSG_DRAW, 0, 0);
- update_dialog(inventory_player);
for (int i = 0; i < INVENTORY_SIZE; i++) {
if (items[i].quantity > 0) {
if (items[i].id >= 501 && items[i].id <= 511) {
- draw_rle_sprite(gui_bitmap,
+ draw_rle_sprite(target,
(RLE_SPRITE *)itemset[items[i].id - 501].dat,
- inventory_dialog[0].x + 24 * i,
- inventory_dialog[0].y + 26);
+ x + 24 * i,
+ y + 26);
}
- //else
- //masked_blit((BITMAP *)itemset[0].dat, gui_bitmap, 0, 0, inventory_dialog[0].x+24*i, inventory_dialog[0].y+26, 22, 22);
-
- textprintf_ex(gui_bitmap, font, inventory_dialog[0].x + 24 * i,
- inventory_dialog[0].y + 46, makecol(0, 0, 0), -1,
- "%i", items[i].quantity);
+ //else {
+ // masked_blit((BITMAP *)itemset[0].dat, gui_bitmap, 0, 0,
+ // x + 24 * i, y + 26, 22, 22);
+ //}
+
+ std::stringstream ss;
+ ss << items[i].quantity;
+ graphics->drawText(ss.str(), 24 * i + 10, 44,
+ gcn::Graphics::CENTER);
}
}
+ /*
if (mouse_b & 2) {
for (int i = 0; i < INVENTORY_SIZE; i++) {
if (items[i].quantity > 0 &&
- inventory_dialog[0].x + 24 * i + 24 > mouse_x &&
- inventory_dialog[0].x + 24 * i < mouse_x &&
- inventory_dialog[0].y + 44 + 24 > mouse_y &&
- inventory_dialog[0].y + 44 < mouse_y)
+ x + 24 * i + 24 > mouse_x &&
+ x + 24 * i < mouse_x &&
+ y + 44 + 24 > mouse_y &&
+ y + 44 < mouse_y)
{
itemMeny = 1;
itemMeny_x = 24 * i;
@@ -91,54 +88,44 @@ void TmwInventory::draw(BITMAP *buffer) {
}
if (itemMeny) {
- if (inventory_dialog[0].y + itemMeny_y < mouse_y &&
- inventory_dialog[0].y + itemMeny_y + 10 > mouse_y)
+ if (y + itemMeny_y < mouse_y && y + itemMeny_y + 10 > mouse_y)
{
if (mouse_b & 1) {
- use_item(itemMeny_i,items[itemMeny_i].id);
+ useItem(itemMeny_i,items[itemMeny_i].id);
itemMeny = 0;
}
- textprintf_ex(buffer, font, inventory_dialog[0].x + itemMeny_x,
- inventory_dialog[0].y + itemMeny_y, makecol(255, 237, 33),
- -1, "Use item");
- } else {
- textprintf_ex(buffer, font, inventory_dialog[0].x + itemMeny_x,
- inventory_dialog[0].y + itemMeny_y, MAKECOL_BLACK, -1,
- "Use item");
+ textprintf_ex(buffer, font, x + itemMeny_x,
+ y + itemMeny_y, makecol(255, 237, 33), -1, "Use item");
}
- if (inventory_dialog[0].y + itemMeny_y + 10 < mouse_y &&
- inventory_dialog[0].y + itemMeny_y + 20 > mouse_y) {
+ else {
+ textprintf_ex(buffer, font, x + itemMeny_x,
+ y + itemMeny_y, MAKECOL_BLACK, -1, "Use item");
+ }
+ if (y + itemMeny_y + 10 < mouse_y && y + itemMeny_y + 20 > mouse_y) {
if (mouse_b & 1) {
- drop_item(itemMeny_i, 1);
+ dropItem(itemMeny_i, 1);
itemMeny = 0;
}
- textprintf_ex(buffer, font, inventory_dialog[0].x + itemMeny_x,
- inventory_dialog[0].y + itemMeny_y + 10,
+ textprintf_ex(buffer, font, x + itemMeny_x,
+ y + itemMeny_y + 10,
makecol(255, 237, 33), -1, "Del item");
- } else {
- textprintf_ex(buffer, font, inventory_dialog[0].x + itemMeny_x,
- inventory_dialog[0].y + itemMeny_y + 10, MAKECOL_BLACK, -1,
- "Del item");
+ }
+ else {
+ textprintf_ex(buffer, font, x + itemMeny_x,
+ y + itemMeny_y + 10, MAKECOL_BLACK, -1, "Del item");
}
}
+ */
}
-void TmwInventory::setVisible(bool visible) {
- show_inventory = visible;
-}
-
-bool TmwInventory::isVisible() {
- return show_inventory;
-}
-
-int TmwInventory::add_item(int index, int id, int quantity) {
+int InventoryDialog::addItem(int index, int id, int quantity) {
items[index].id = id;
items[index].quantity += quantity;
return 0;
}
-int TmwInventory::remove_item(int id) {
+int InventoryDialog::removeItem(int id) {
for (int i = 0; i < INVENTORY_SIZE; i++) {
if (items[i].id == id) {
items[i].id = -1;
@@ -148,17 +135,17 @@ int TmwInventory::remove_item(int id) {
return 0;
}
-int TmwInventory::change_quantity(int index, int quantity) {
+int InventoryDialog::changeQuantity(int index, int quantity) {
items[index].quantity = quantity;
return 0;
}
-int TmwInventory::increase_quantity(int index, int quantity) {
+int InventoryDialog::increaseQuantity(int index, int quantity) {
items[index].quantity += quantity;
return 0;
}
-int TmwInventory::use_item(int index, int id) {
+int InventoryDialog::useItem(int index, int id) {
WFIFOW(0) = net_w_value(0x00a7);
WFIFOW(2) = net_w_value(index);
WFIFOL(4) = net_l_value(id);
@@ -168,7 +155,7 @@ int TmwInventory::use_item(int index, int id) {
return 0;
}
-int TmwInventory::drop_item(int index, int amunt) {
+int InventoryDialog::dropItem(int index, int amunt) {
WFIFOW(0) = net_w_value(0x00a7);
WFIFOW(2) = net_w_value(index);
WFIFOL(4) = net_l_value(amunt);
diff --git a/src/gui/inventory.h b/src/gui/inventory.h
index a83a1f80..7c1740a9 100644
--- a/src/gui/inventory.h
+++ b/src/gui/inventory.h
@@ -32,68 +32,59 @@
#include "../log.h"
#include "../net/network.h"
#include "gui.h"
+#include "window.h"
#define INVENTORY_SIZE 100
-struct itemHolder { // the holder of a item
+struct ITEM_HOLDER { // the holder of a item
int id; // the id of the item
int quantity; // number of items
//int index; // item position
};
-class TmwInventory {
- public:
- TmwInventory();
- ~TmwInventory();
-
- /**
- * Initialize inventory and create the window.
- */
- void create(int x, int y);
-
- /**
- * Draw inventory window.
- */
- void draw(BITMAP *);
- /**
- * Sets if inventory is visible.
- */
- void setVisible(bool visible);
+/**
+ * Inventory dialog.
+ *
+ * \ingroup GUI
+ */
+class InventoryDialog : public Window {
+ public:
+ InventoryDialog(gcn::Container *parent);
+ ~InventoryDialog();
/**
- * Returns visibility of inventory.
+ * Draws the inventory window.
*/
- bool isVisible();
+ void draw(gcn::Graphics *graphics);
/**
* Add an item the inventory.
*/
- int add_item(int index, int id, int quantity);
+ int addItem(int index, int id, int quantity);
/**
* Remove a item from the inventory.
*/
- int remove_item(int id);
+ int removeItem(int id);
/**
* Change quantity of an item.
*/
- int change_quantity(int index, int quantity);
+ int changeQuantity(int index, int quantity);
/**
* Increase quantity of an item
*/
- int increase_quantity(int index, int quantity);
+ int increaseQuantity(int index, int quantity);
- int use_item(int index, int id);
- int quantityForIndex(int index) { return items[index].quantity; }
- int drop_item(int index, int amunt);
+ ITEM_HOLDER items[INVENTORY_SIZE]; /**< this is the holder of items */
- itemHolder items[INVENTORY_SIZE]; /**< this is the holder of items */
private:
+ int useItem(int index, int id);
+ int dropItem(int index, int amunt);
+
DATAFILE *itemset;
- bool show_inventory;
int itemMeny, itemMeny_x, itemMeny_y, itemMeny_i;
};
diff --git a/src/gui/shop.cpp b/src/gui/shop.cpp
index acf5eda9..942df5cf 100644
--- a/src/gui/shop.cpp
+++ b/src/gui/shop.cpp
@@ -29,119 +29,119 @@ char* selectedItem = "You got 4";
ITEM_SHOP *shop = NULL;
char *item_db[] = {
- "Cactus Drink", "Cactus potion", "Casino coins", "Decor Candy", "Maggot Slime",
- "Candy Cane", "Scorpion Stinger", "Xmas Cake", "Chocolate", "Candy", "Santa Hat"
+ "Cactus Drink", "Cactus potion", "Casino coins", "Decor Candy", "Maggot Slime",
+ "Candy Cane", "Scorpion Stinger", "Xmas Cake", "Chocolate", "Candy", "Santa Hat"
};
char *shop_list(int index, int *list_size) {
- if(index<0) {
- *list_size = n_items;
- return NULL;
- } else {
- int iterator = 0;
- ITEM_SHOP *item_shop = shop;
- while(iterator<index) {
- item_shop = item_shop->next;
- iterator++;
- }
- return item_shop->name;
- }
+ if(index<0) {
+ *list_size = n_items;
+ return NULL;
+ } else {
+ int iterator = 0;
+ ITEM_SHOP *item_shop = shop;
+ while(iterator<index) {
+ item_shop = item_shop->next;
+ iterator++;
+ }
+ return item_shop->name;
+ }
}
void add_buy_item(short id, int price) {
- ITEM_SHOP *item_shop = (ITEM_SHOP *)malloc(sizeof(ITEM_SHOP));
- if(id-501>=0 && id-501<=11)
- sprintf(item_shop->name, "%s %i gp", item_db[id-501], price);
- else
- sprintf(item_shop->name, "Unknown item %i gp", price);
- item_shop->price = price;
- item_shop->id = id;
- item_shop->next = NULL;
- if(shop==NULL)
- shop = item_shop;
- else {
- ITEM_SHOP *temp = shop;
- while(temp->next)
- temp = temp->next;
- temp->next = item_shop;
- }
+ ITEM_SHOP *item_shop = (ITEM_SHOP *)malloc(sizeof(ITEM_SHOP));
+ if(id-501>=0 && id-501<=11)
+ sprintf(item_shop->name, "%s %i gp", item_db[id-501], price);
+ else
+ sprintf(item_shop->name, "Unknown item %i gp", price);
+ item_shop->price = price;
+ item_shop->id = id;
+ item_shop->next = NULL;
+ if(shop==NULL)
+ shop = item_shop;
+ else {
+ ITEM_SHOP *temp = shop;
+ while(temp->next)
+ temp = temp->next;
+ temp->next = item_shop;
+ }
}
void add_sell_item(short index, int price) {
- int id = inventory.items[index].id;
- ITEM_SHOP *item_shop = (ITEM_SHOP *)malloc(sizeof(ITEM_SHOP));
- if(id>=501 && id<=511)
- sprintf(item_shop->name, "%s %i gp", item_db[id-501], price);
- else
- sprintf(item_shop->name, "Unknown item %i gp", price);
- item_shop->price = price;
- item_shop->index = index;
- item_shop->id = id;
- item_shop->quantity = inventory.items[index].quantity;
- item_shop->next = NULL;
- if(shop==NULL)
- shop = item_shop;
- else {
- ITEM_SHOP *temp = shop;
- while(temp->next)
- temp = temp->next;
- temp->next = item_shop;
- }
+ int id = inventoryDialog->items[index].id;
+ ITEM_SHOP *item_shop = (ITEM_SHOP *)malloc(sizeof(ITEM_SHOP));
+ if (id >= 501 && id <= 511)
+ sprintf(item_shop->name, "%s %i gp", item_db[id-501], price);
+ else
+ sprintf(item_shop->name, "Unknown item %i gp", price);
+ item_shop->price = price;
+ item_shop->index = index;
+ item_shop->id = id;
+ item_shop->quantity = inventoryDialog->items[index].quantity;
+ item_shop->next = NULL;
+ if (shop == NULL)
+ shop = item_shop;
+ else {
+ ITEM_SHOP *temp = shop;
+ while(temp->next)
+ temp = temp->next;
+ temp->next = item_shop;
+ }
}
void close_shop() {
- ITEM_SHOP *temp, *next;
- temp = shop;
- while(temp) {
- next = temp->next;
- free(temp);
- temp = next;
- }
- shop = NULL;
+ ITEM_SHOP *temp, *next;
+ temp = shop;
+ while(temp) {
+ next = temp->next;
+ free(temp);
+ temp = next;
+ }
+ shop = NULL;
}
short get_item_id(int index) {
- int iterator = 0;
- ITEM_SHOP *item_shop = shop;
- while(iterator<index) {
- item_shop = item_shop->next;
- iterator++;
- }
- return item_shop->id;
+ int iterator = 0;
+ ITEM_SHOP *item_shop = shop;
+ while(iterator<index) {
+ item_shop = item_shop->next;
+ iterator++;
+ }
+ return item_shop->id;
}
int get_item_quantity(int index) {
- int iterator = 0;
- ITEM_SHOP *item_shop = shop;
- while(iterator<index) {
- item_shop = item_shop->next;
- iterator++;
- }
- if(item_shop)return item_shop->quantity;
- else return 0;
+ int iterator = 0;
+ ITEM_SHOP *item_shop = shop;
+ while(iterator<index) {
+ item_shop = item_shop->next;
+ iterator++;
+ }
+ if(item_shop)return item_shop->quantity;
+ else return 0;
}
int get_item_index(int index) {
- int iterator = 0;
- ITEM_SHOP *item_shop = shop;
- while(iterator<index) {
- item_shop = item_shop->next;
- iterator++;
- }
- return item_shop->index;
+ int iterator = 0;
+ ITEM_SHOP *item_shop = shop;
+ while(iterator<index) {
+ item_shop = item_shop->next;
+ iterator++;
+ }
+ return item_shop->index;
}
int get_item_price(int index) {
- int iterator = 0;
- ITEM_SHOP *item_shop = shop;
- while(iterator<index) {
- item_shop = item_shop->next;
- iterator++;
- }
- return item_shop->price;
+ int iterator = 0;
+ ITEM_SHOP *item_shop = shop;
+ while(iterator<index) {
+ item_shop = item_shop->next;
+ iterator++;
+ }
+ return item_shop->price;
}
void changeQ(void *dp3, int d2) {
- sprintf(itemCurrenyQ,"%i",d2);
- printf("%s\n",itemCurrenyQ);
+ sprintf(itemCurrenyQ,"%i",d2);
+ printf("%s\n",itemCurrenyQ);
}
diff --git a/src/gui/window.h b/src/gui/window.h
index c7fd6956..7ad1a0d2 100644
--- a/src/gui/window.h
+++ b/src/gui/window.h
@@ -67,7 +67,7 @@ class Window : public gcn::Container, public gcn::MouseListener
/**
* Draws the window.
*/
- void draw(gcn::Graphics* graphics);
+ void draw(gcn::Graphics *graphics);
/**
* Adds a widget to the window.