Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2010-09-17 23:05:58 +0000
committerStijn Buys <ingar@osirion.org>2010-09-17 23:05:58 +0000
commita85c3ca1ff34775f2fc93013306dec21b34b0359 (patch)
treedc45be555858f53413d2477680247c8758b98d2a /src/core
parent417eeaa34b8374de18358cc64511d7298bc33756 (diff)
Initial inventory loading, ships docking ships
Diffstat (limited to 'src/core')
-rw-r--r--src/core/commandbuffer.cc26
-rw-r--r--src/core/entity.cc20
-rw-r--r--src/core/entity.h7
-rw-r--r--src/core/item.h16
-rw-r--r--src/core/parser.cc2
5 files changed, 64 insertions, 7 deletions
diff --git a/src/core/commandbuffer.cc b/src/core/commandbuffer.cc
index 3c7fc35..40971cc 100644
--- a/src/core/commandbuffer.cc
+++ b/src/core/commandbuffer.cc
@@ -116,6 +116,22 @@ void func_list_ent(std::string const &args)
Entity::list();
}
+void func_list_inventory(std::string const &args)
+{
+ unsigned long id;
+ std::istringstream argstream(args);
+ if (argstream >> id) {
+ Entity *entity = Entity::find(id);
+ if (entity) {
+ entity->list_inventory();
+ } else {
+ con_print << "Could not find entity with id " << id << std::endl;
+ }
+ } else {
+ con_print << "usage: list_inventory [entity id]" << std::endl;
+ }
+}
+
void func_list_zone(std::string const &args)
{
Zone *zone = Zone::search(args);
@@ -142,7 +158,7 @@ void func_set(std::string const &args)
std::istringstream argstream(args);
std::string varname;
if (!(argstream >> varname)) {
- con_print << "Variable name expected!" << std::endl;
+ con_print << "usage: set [variable name]" << std::endl;
return;
}
@@ -174,7 +190,7 @@ void func_toggle(std::string const &args)
std::istringstream argstream(args);
std::string varname;
if (!(argstream >> varname)) {
- con_print << "Variable name expected!" << std::endl;
+ con_print << "usage: toggle [variable name]" << std::endl;
return;
}
@@ -242,6 +258,9 @@ void CommandBuffer::init()
func = Func::add("list_info", (FuncPtr)func_list_info);
func->set_info("list info records");
+ func = Func::add("list_inventory", (FuncPtr)func_list_inventory);
+ func->set_info("[entity id] list entity inventories");
+
func = Func::add("list_var", (FuncPtr)func_list_var);
func->set_info("list variables");
@@ -249,7 +268,7 @@ void CommandBuffer::init()
func->set_info("list zones");
Func::add("list_model", (FuncPtr) func_list_model);
- func->set_info("list models");
+ func->set_info("list 3d models");
Func::add("list_module", (FuncPtr) func_list_module);
func->set_info("list game modules");
@@ -282,6 +301,7 @@ void CommandBuffer::shutdown()
Func::remove("list_var");
Func::remove("list_func");
Func::remove("list_info");
+ Func::remove("list_inventories");
Func::remove("list_ent");
Func::remove("list_model");
Func::remove("list_module");
diff --git a/src/core/entity.cc b/src/core/entity.cc
index fdcce59..538aecb 100644
--- a/src/core/entity.cc
+++ b/src/core/entity.cc
@@ -401,6 +401,26 @@ void Entity::remove_menu(std::string const &label)
}
}
+void Entity::list_inventory() const
+{
+ con_print << " ^B" << name() << "^N ";
+ if (!entity_inventory) {
+ con_print << "no inventory availble" << std::endl;
+ return;
+ }
+ con_print << "inventory" << std::endl;
+
+ for (Inventory::Items::const_iterator it = entity_inventory->items().begin(); it != entity_inventory->items().end(); it++) {
+ Item *item = (*it);
+ con_print << " "
+ << " ^B" << std::setw(4) << item->info()->id()
+ << " ^N" << (item->info()->type() ? item->info()->type()->label() : "NULL")
+ << " ^N" << item->info()->label()
+ << " amount " << item->amount() << std::endl;
+ }
+
+}
+
/* ---- class EntityDynamic ---------------------------------------- */
EntityDynamic::EntityDynamic() : Entity()
diff --git a/src/core/entity.h b/src/core/entity.h
index fea784a..8bf637d 100644
--- a/src/core/entity.h
+++ b/src/core/entity.h
@@ -189,6 +189,9 @@ public:
return entity_destroyed;
}
+ /// list inventory, if available, to console
+ void list_inventory() const;
+
/* ---- mutators -------------------------------------------------- */
/// assign entity color
@@ -252,10 +255,10 @@ public:
entity_radius = radius;
}
- /* ---- actors ---------------------------------------------------- */
+/* ---- actors ---------------------------------------------------- */
/// called when the entity received a docking request
- virtual void dock(core::Entity *entity);
+ virtual void dock(Entity *entity);
/// set flags
inline void set_flag(Flags flag) {
diff --git a/src/core/item.h b/src/core/item.h
index 397d259..f1d6bb5 100644
--- a/src/core/item.h
+++ b/src/core/item.h
@@ -41,7 +41,7 @@ public:
* @brief flags
*/
inline int flags() const { return item_flags; }
-
+
/* ---- mutators ----------------------------------------------- */
/**
@@ -49,6 +49,20 @@ public:
*/
void set_amount(const int amount);
+ /**
+ * @brief set specified flags
+ */
+ inline void set_flag(Flags flag) {
+ item_flags |= flag;
+ }
+
+ /**
+ * @brief unset specified flags
+ */
+ inline void unset_flag(Flags flag) {
+ item_flags &= ~flag;
+ }
+
private:
const Info *item_info;
int item_amount;
diff --git a/src/core/parser.cc b/src/core/parser.cc
index 7ef44d9..8018bf7 100644
--- a/src/core/parser.cc
+++ b/src/core/parser.cc
@@ -65,7 +65,7 @@ bool Parser::got_entity_key(filesystem::IniFile &inifile, core::Entity *entity)
entity->info()->add_text(strval);
return true;
- } else if (inifile.got_key_string("label", strval)) {
+ } else if (inifile.got_key_label("label", strval)) {
entity->set_label(strval);
return true;