00001 /* 00002 * The Mana World 00003 * Copyright (C) 2004 The Mana World Development Team 00004 * 00005 * This file is part of The Mana World. 00006 * 00007 * This program is free software; you can redistribute it and/or modify 00008 * it under the terms of the GNU General Public License as published by 00009 * the Free Software Foundation; either version 2 of the License, or 00010 * any later version. 00011 * 00012 * This program is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 * GNU General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU General Public License 00018 * along with this program; if not, write to the Free Software 00019 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00020 */ 00021 00022 #ifndef _SHOPITEM_H 00023 #define _SHOPITEM_H 00024 00025 #include <stack> 00026 00027 #include "item.h" 00028 00033 class ShopItem : public Item 00034 { 00035 public: 00044 ShopItem(int inventoryIndex, int id, int quantity, int price); 00045 00053 ShopItem(int id, int price); 00054 00058 ~ShopItem(); 00059 00066 void addDuplicate(int inventoryIndex, int quantity); 00067 00073 void addDuplicate(); 00074 00080 int getCurrentQuantity() const 00081 { 00082 return mDuplicates.empty() ? 0 : mDuplicates.top()->quantity; 00083 } 00084 00090 int getCurrentInvIndex() const 00091 { 00092 return mDuplicates.empty() ? mInvIndex : 00093 mDuplicates.top()->inventoryIndex; 00094 } 00095 00107 int sellCurrentDuplicate(int quantity); 00108 00114 int getPrice() const 00115 { return mPrice; } 00116 00122 const std::string &getDisplayName() const 00123 { return mDisplayName; } 00124 00125 protected: 00126 int mPrice; 00127 std::string mDisplayName; 00128 00132 typedef struct { 00133 int inventoryIndex; 00134 int quantity; 00135 } DuplicateItem; 00136 std::stack<DuplicateItem*> mDuplicates; 00137 }; 00138 00139 #endif