Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2009-06-28 14:03:45 +0000
committerStijn Buys <ingar@osirion.org>2009-06-28 14:03:45 +0000
commit16ba873bd12d8748fdc8a5169f4b76867ec50a3c (patch)
treeb28a91a12c8a3d35b3aaf5afda83888f6d8fb92a /src/core/item.h
parentf0ea15eb49c55e1c0f6a9fe43eb668cb00141e24 (diff)
item library foundation
Diffstat (limited to 'src/core/item.h')
-rw-r--r--src/core/item.h66
1 files changed, 49 insertions, 17 deletions
diff --git a/src/core/item.h b/src/core/item.h
index d390c2d..8299444 100644
--- a/src/core/item.h
+++ b/src/core/item.h
@@ -8,48 +8,80 @@
#define __INCLUDED_CORE_ITEM_H__
#include <string>
+#include <vector>
namespace core {
/**
+ * @brief a specific type of item in the game
+ * Examples are tritanium hull armor, ion cannon, iron ore
+ */
+class ItemType
+{
+public:
+ ItemType(const char *label);
+
+ inline const std::string &label() { return itemtype_label; }
+
+ inline const std::string &name() { return itemtype_name; }
+
+ inline const float baseprice() { return itemtype_baseprice; }
+
+ void set_name(const std::string &name);
+
+ void set_baseprice(const float baseprice);
+
+private:
+ std::string itemtype_label;
+ std::string itemtype_name;
+
+ float itemtype_baseprice;
+};
+
+
+/**
* @brief a class of items
* Examples are armor, cannons, commodities...
*/
class ItemClass
{
public:
+ typedef std::vector<ItemType *> Types;
+
ItemClass(const char *label);
+ ~ItemClass();
inline const std::string &label() { return itemclass_label; }
inline const std::string &name() { return itemclass_name; }
+ ItemType *find_type(const char *label);
+
+ void set_name(const std::string &name);
+
+ void add_type(ItemType *itemtype);
+
+ void list();
+
private:
std::string itemclass_label;
std::string itemclass_name;
+
+ Types itemclass_types;
};
-/**
- * @brief a specific type of item in the game
- * Examples are tritanium hull armor, ion cannon, gems
- */
-class ItemType
+class Item
{
public:
- ItemType(const char *label);
-
- inline const std::string &label() { return itemtype_label; }
-
- inline const std::string &name() { return itemtype_name; }
+ typedef std::vector<ItemClass *> Registry;
- inline const float base_price() { return itemtype_baseprice; }
+ static void add_class(ItemClass * itemclass);
+ static void add_type(ItemClass * itemclass, ItemType *itemtype);
+ static void find_class(const char *label);
+ static void clear();
+ static void list();
-private:
- std::string itemtype_label;
- std::string itemtype_name;
-
- ItemClass *itemtype_class;
- float itemtype_baseprice;
+ static Registry item_registry;
};
}