メインページ | ネームスペース一覧 | クラス階層 | アルファベット順一覧 | 構成 | ファイル一覧 | ネームスペースメンバ | 構成メンバ | ファイルメンバ

item.hxx

説明を見る。
00001 #ifndef ITEM_HXX_
00002 # define ITEM_HXX_
00003 
00004 # include <cassert>
00005 
00006 # include "item.hh"
00007 # include "item_name.hh"
00008 # include "cronous-env.hh"
00009 
00010 namespace objects
00011 {
00012   inline bool 
00013   Item::heals_hp() const
00014   {
00015     return false;
00016   }
00017   
00018   inline bool
00019   Item::heals_mp() const
00020   {
00021     return false;
00022   }
00023 
00024   inline bool 
00025   Item::operator ==(const Item &i) const
00026   {
00027     return this == &Item::get(i.get_id());
00028   }
00029 
00030   template<int ITEM_ID>
00031   ItemID<ITEM_ID>::ItemID()
00032     : Item()
00033   {
00034   }
00035 
00036   template<int ITEM_ID>
00037   const std::string &
00038   ItemID<ITEM_ID>::get_name()
00039   {
00040     ItemName in;
00041     in(*this);
00042     return in.result();
00043   }
00044 
00045   template<int ITEM_ID>
00046   int 
00047   ItemID<ITEM_ID>::get_id() const
00048   {
00049     return ItemID<ITEM_ID>::id;
00050   }
00051 
00052   template<int ITEM_ID>
00053   void 
00054   ItemID<ITEM_ID>::accept(ItemVisitor &iv)
00055   {
00056     iv(*this);
00057   }
00058 
00059   template<int ITEM_ID>
00060   void
00061   ItemID<ITEM_ID>::print(std::ostream &os)
00062   {
00063     os << get_name();
00064   }
00065 
00066   template<int ITEM_ID>
00067   const ItemID<ITEM_ID> &
00068   ItemID<ITEM_ID>::get_instance()
00069   {
00070     assert(dynamic_cast<const ItemID<ITEM_ID> *>(&Item::get(id)) != NULL);
00071     return dynamic_cast<const ItemID<ITEM_ID> &>(Item::get(id));
00072   }
00073 
00074   inline std::ostream &
00075   operator <<(std::ostream &os, const Item &i)
00076   {
00077     (const_cast<Item &>(i)).print(os);
00078     return os;
00079   }
00080 
00081   inline int HealingItem::get_hp_healing() const
00082   {
00083     return 0;
00084   }
00085 
00086   inline int HealingItem::get_mp_healing() const
00087   {
00088     return 0;
00089   }
00090 
00091   inline bool HealingItem::heals_hp() const
00092   {
00093     return get_hp_healing() > 0;
00094   }
00095 
00096   inline bool HealingItem::heals_mp() const
00097   {
00098     return get_mp_healing() > 0;
00099   }
00100 
00101   inline int HealingItem::get_price() const
00102   {
00103     return INT_MAX;
00104   }
00105 
00106   inline double HealingItem::get_hp_healing_cost() const
00107   {
00108     return ((double)get_price() / (double)get_hp_healing());
00109   }
00110   
00111   inline double HealingItem::get_mp_healing_cost() const
00112   {
00113     return ((double)get_price() / (double)get_mp_healing());
00114   }
00115 
00116   template<int ITEM_ID, int HP_HEALING, int MP_HEALING, int PRICE>
00117   HealingItemID<ITEM_ID, HP_HEALING, MP_HEALING, PRICE>::HealingItemID() :
00118     HealingItem()
00119   {
00120   }
00121 
00122   template<int ITEM_ID, int HP_HEALING, int MP_HEALING, int PRICE>
00123   const std::string &
00124   HealingItemID<ITEM_ID, HP_HEALING, MP_HEALING, PRICE>::get_name()
00125   {
00126     ItemName in;
00127     in(*this);
00128     return in.result();
00129   }
00130 
00131   template<int ITEM_ID, int HP_HEALING, int MP_HEALING, int PRICE>
00132   inline int 
00133   HealingItemID<ITEM_ID, HP_HEALING, MP_HEALING, PRICE>::get_id() const
00134   {
00135     return HealingItemID<ITEM_ID, HP_HEALING, MP_HEALING, PRICE>::id;
00136   }
00137 
00138   template<int ITEM_ID, int HP_HEALING, int MP_HEALING, int PRICE>
00139   void 
00140   HealingItemID<ITEM_ID, HP_HEALING, MP_HEALING, PRICE>::accept(ItemVisitor &iv)
00141   {
00142     iv(*this);
00143   }
00144 
00145   template<int ITEM_ID, int HP_HEALING, int MP_HEALING, int PRICE>
00146   void
00147   HealingItemID<ITEM_ID, HP_HEALING, MP_HEALING, PRICE>::print(std::ostream &os)
00148   {
00149     os << get_name();
00150   }
00151 
00152   template<int ITEM_ID, int HP_HEALING, int MP_HEALING, int PRICE>
00153   const HealingItemID<ITEM_ID, HP_HEALING, MP_HEALING, PRICE> &
00154   HealingItemID<ITEM_ID, HP_HEALING, MP_HEALING, PRICE>::get_instance()
00155   {
00156     assert((dynamic_cast<const HealingItemID<ITEM_ID, HP_HEALING, MP_HEALING, PRICE> *>(&Item::get(id))) != NULL);
00157     return dynamic_cast<const HealingItemID<ITEM_ID, HP_HEALING, MP_HEALING, PRICE> &>(Item::get(id));
00158   }
00159 
00160   template<int ITEM_ID, int HP_HEALING, int MP_HEALING, int PRICE>
00161   inline int 
00162   HealingItemID<ITEM_ID, HP_HEALING, MP_HEALING, PRICE>::get_hp_healing() const
00163   {
00164     return HP_HEALING;
00165   }
00166   
00167   template<int ITEM_ID, int HP_HEALING, int MP_HEALING, int PRICE>
00168   inline int 
00169   HealingItemID<ITEM_ID, HP_HEALING, MP_HEALING, PRICE>::get_mp_healing() const
00170   {
00171     return MP_HEALING;
00172   }
00173 
00174   template<int ITEM_ID, int HP_HEALING, int MP_HEALING, int PRICE>
00175   inline int 
00176   HealingItemID<ITEM_ID, HP_HEALING, MP_HEALING, PRICE>::
00177   get_price() const
00178   {
00179     return PRICE;
00180   }
00181 
00182   template<int ITEM_ID, int HP_PERCENTAGE_HEALING, int MP_PERCENTAGE_HEALING, int PRICE>
00183   PercentageHealingItemID<ITEM_ID, HP_PERCENTAGE_HEALING, MP_PERCENTAGE_HEALING, PRICE>::
00184   PercentageHealingItemID() : HealingItem()
00185   {
00186   }
00187 
00188   template<int ITEM_ID, int HP_PERCENTAGE_HEALING, int MP_PERCENTAGE_HEALING, int PRICE>
00189   void 
00190   PercentageHealingItemID<ITEM_ID, HP_PERCENTAGE_HEALING, MP_PERCENTAGE_HEALING, PRICE>::
00191   accept(ItemVisitor &iv)
00192   {
00193     iv(*this);
00194   }
00195 
00196   template<int ITEM_ID, int HP_PERCENTAGE_HEALING, int MP_PERCENTAGE_HEALING, int PRICE>
00197   void 
00198   PercentageHealingItemID<ITEM_ID, HP_PERCENTAGE_HEALING, MP_PERCENTAGE_HEALING, PRICE>::
00199   print(std::ostream &os)
00200   {
00201     os << get_name();
00202   }
00203 
00204   template<int ITEM_ID, int HP_PERCENTAGE_HEALING, int MP_PERCENTAGE_HEALING, int PRICE>
00205   const PercentageHealingItemID<ITEM_ID, HP_PERCENTAGE_HEALING, 
00206     MP_PERCENTAGE_HEALING, PRICE> &
00207   PercentageHealingItemID<ITEM_ID, HP_PERCENTAGE_HEALING, MP_PERCENTAGE_HEALING, PRICE>::
00208   get_instance()
00209   {
00210     assert((dynamic_cast<const PercentageHealingItemID<ITEM_ID, HP_PERCENTAGE_HEALING, 
00211       MP_PERCENTAGE_HEALING, PRICE> *>(&Item::get(id))) != NULL);
00212     return dynamic_cast<const PercentageHealingItemID<ITEM_ID, HP_PERCENTAGE_HEALING, 
00213       MP_PERCENTAGE_HEALING, PRICE> &>(Item::get(id));
00214   }
00215 
00216   template<int ITEM_ID, int HP_PERCENTAGE_HEALING, int MP_PERCENTAGE_HEALING, int PRICE>
00217   inline int 
00218   PercentageHealingItemID<ITEM_ID, HP_PERCENTAGE_HEALING, MP_PERCENTAGE_HEALING, PRICE>::
00219   get_id() const
00220   {
00221     return 
00222       PercentageHealingItemID<ITEM_ID, HP_PERCENTAGE_HEALING, MP_PERCENTAGE_HEALING, PRICE>::
00223       id;
00224   }
00225 
00226   template<int ITEM_ID, int HP_PERCENTAGE_HEALING, int MP_PERCENTAGE_HEALING, int PRICE>
00227   inline const std::string &
00228   PercentageHealingItemID<ITEM_ID, HP_PERCENTAGE_HEALING, MP_PERCENTAGE_HEALING, PRICE>::
00229   get_name()
00230   {
00231     ItemName in;
00232     in(*this);
00233     return in.result();
00234   }
00235 
00236   template<int ITEM_ID, int HP_PERCENTAGE_HEALING, int MP_PERCENTAGE_HEALING, int PRICE>
00237   inline int 
00238   PercentageHealingItemID<ITEM_ID, HP_PERCENTAGE_HEALING, MP_PERCENTAGE_HEALING, PRICE>::
00239   get_hp_healing() const
00240   {
00241     return environment::CronousEnv::get_instance().get_hp_max()
00242       * HP_PERCENTAGE_HEALING / 100;
00243   }
00244 
00245   template<int ITEM_ID, int HP_PERCENTAGE_HEALING, int MP_PERCENTAGE_HEALING, int PRICE>
00246   inline int 
00247   PercentageHealingItemID<ITEM_ID, HP_PERCENTAGE_HEALING, MP_PERCENTAGE_HEALING, PRICE>::
00248   get_mp_healing() const
00249   {
00250     return environment::CronousEnv::get_instance().get_mp_max()
00251       * MP_PERCENTAGE_HEALING / 100;
00252   }
00253 
00254   template<int ITEM_ID, int HP_PERCENTAGE_HEALING, int MP_PERCENTAGE_HEALING, int PRICE>
00255   inline int 
00256   PercentageHealingItemID<ITEM_ID, HP_PERCENTAGE_HEALING, MP_PERCENTAGE_HEALING, PRICE>::
00257   get_price() const
00258   {
00259     return PRICE;
00260   }
00261 }
00262 
00263 #endif

Cronous Emulatorに対してWed Aug 17 06:01:25 2005に生成されました。  doxygen 1.4.2-20050421