00001 //////////////////////////////////////////////////////////////////////////////// 00002 // Scorched3D (c) 2000-2009 00003 // 00004 // This file is part of Scorched3D. 00005 // 00006 // Scorched3D is free software; you can redistribute it and/or modify 00007 // it under the terms of the GNU General Public License as published by 00008 // the Free Software Foundation; either version 2 of the License, or 00009 // (at your option) any later version. 00010 // 00011 // Scorched3D is distributed in the hope that it will be useful, 00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 // GNU General Public License for more details. 00015 // 00016 // You should have received a copy of the GNU General Public License 00017 // along with Scorched3D; if not, write to the Free Software 00018 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00019 //////////////////////////////////////////////////////////////////////////////// 00020 00021 #if !defined(__INCLUDE_EconomyFreeMarketh_INCLUDE__) 00022 #define __INCLUDE_EconomyFreeMarketh_INCLUDE__ 00023 00024 #include <weapons/Economy.h> 00025 #include <map> 00026 00027 /** 00028 This economy changes the prices of the weapons depending 00029 on how many have been bought. The more popular accessories 00030 rise in price and the less popular accessories fall. 00031 Thus making people choose different weapons from time to time 00032 (perhaps). 00033 */ 00034 class Accessory; 00035 class EconomyFreeMarket : public Economy 00036 { 00037 public: 00038 EconomyFreeMarket(); 00039 virtual ~EconomyFreeMarket(); 00040 00041 virtual bool loadPrices(); 00042 virtual bool savePrices(); 00043 virtual void calculatePrices(); 00044 00045 virtual void accessoryBought(Tank *tank, 00046 const char *accessoryName); 00047 virtual void accessorySold(Tank *tank, 00048 const char *accessoryName); 00049 00050 REGISTER_CLASS_HEADER(EconomyFreeMarket); 00051 00052 protected: 00053 std::map<unsigned int, int> economyPrices_; 00054 00055 void setPrice(Accessory *accessory, int price); 00056 }; 00057 00058 #endif
1.5.3