From 866b63f567bb6f464a6d0c4d52a4796f7aecdc7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Tue, 25 Oct 2011 13:30:41 +0200 Subject: [PATCH] More of the items overhaul --- library/include/dfhack/modules/Items.h | 13 +++++++--- library/modules/Items.cpp | 35 +++----------------------- plugins/cleanowned.cpp | 4 ++- plugins/devel/itemhacks.cpp | 12 +++++++-- 4 files changed, 27 insertions(+), 37 deletions(-) diff --git a/library/include/dfhack/modules/Items.h b/library/include/dfhack/modules/Items.h index bdcfaba6c..a86472e17 100644 --- a/library/include/dfhack/modules/Items.h +++ b/library/include/dfhack/modules/Items.h @@ -115,12 +115,18 @@ struct t_itemref : public t_virtual class df_item { public: + // 4 int16_t x; int16_t y; + // 8 int16_t z; + // C t_itemflags flags; + // 10 uint32_t age; + // 14 uint32_t id; + // 18 std::vector unk1; std::vector itemrefs; public: @@ -344,7 +350,7 @@ public: virtual void fn166(void); virtual void fn167(void); // 0x2A0 - virtual void fn168(void); + virtual void fn168(void); // value returned (int) = first param to descriprion construction function virtual void fn169(void); virtual void fn170(void); virtual void fn171(void); @@ -356,7 +362,8 @@ public: // 0x2C0 virtual void fn176(void); virtual void fn177(void); - virtual std::string *getItemDescription ( std::string * str, int bleh = 0); + //virtual std::string *getItemDescription ( std::string * str, int sizes = 0); // 0 = stacked, 1 = singular, 2 = plural + virtual std::string *getItemDescription ( std::string * str, int sizes = 0); // 0 = stacked, 1 = singular, 2 = plural virtual void fn179(void); // more follows for sure... bleh. }; @@ -402,7 +409,7 @@ public: df_item * findItemByID(int32_t id); /// get a string describing an item - std::string getItemDescription(const dfh_item & item, Materials * Materials); + //std::string getItemDescription(const dfh_item & item, int type); /// get a short name for an item std::string getItemClass(const dfh_item & item); /// read an item, including the extra attributes diff --git a/library/modules/Items.cpp b/library/modules/Items.cpp index 86c35c350..56c54294d 100644 --- a/library/modules/Items.cpp +++ b/library/modules/Items.cpp @@ -292,38 +292,11 @@ std::string Items::getItemClass(const dfh_item & item) return virt->getClassName(); //return getItemClass(item.matdesc.itemType); } - -std::string Items::getItemDescription(const dfh_item & item, Materials * Materials) +/* +std::string Items::getItemDescription(const dfh_item & item, int type) { - /* - std::stringstream outss; - switch(item.quality) - { - case 0: - outss << "Ordinary "; - break; - case 1: - outss << "Well crafted "; - break; - case 2: - outss << "Finely crafted "; - break; - case 3: - outss << "Superior quality "; - break; - case 4: - outss << "Exceptionnal "; - break; - case 5: - outss << "Masterful "; - break; - default: outss << "Crazy quality " << item.quality << " "; break; - } - outss << Materials->getDescription(item.matdesc) << " " << getItemClass(item); - return outss.str(); - */ std::string strzzz; - item.base->getItemDescription(&strzzz); + item.base->getItemDescription(&strzzz,type); // delete ptrs; return strzzz; -} +}*/ diff --git a/plugins/cleanowned.cpp b/plugins/cleanowned.cpp index d3c7cc89b..b51c870ec 100644 --- a/plugins/cleanowned.cpp +++ b/plugins/cleanowned.cpp @@ -165,10 +165,12 @@ DFhackCExport command_result df_cleanowned (Core * c, vector & paramete if (confiscate) { + std::string description; + itm.base->getItemDescription(&description, 0); c->con.print( "0x%x %s (wear %d)", itm.base, - Items->getItemDescription(itm, Materials).c_str(), + description.c_str(), itm.wear_level ); diff --git a/plugins/devel/itemhacks.cpp b/plugins/devel/itemhacks.cpp index f380bd841..ea9212d18 100644 --- a/plugins/devel/itemhacks.cpp +++ b/plugins/devel/itemhacks.cpp @@ -228,15 +228,23 @@ DFhackCExport command_result df_dumpitems (Core * c, vector & parameter else sprintf(location, "%d,%d,%d", itm.base->x, itm.base->y, itm.base->z); - + std::string descr; + string name1,name2,name0; + itm.base->getItemDescription(&name0, 0); + itm.base->getItemDescription(&name1, 1); + itm.base->getItemDescription(&name2, 2); c->con.print( "%5d: addr:0x%08x %6d %08x (%s) vptr:0x%08x [%d]\n" + " %s\n" + " %s\n" " %s\n", i, itm.base, itm.base->id, itm.base->flags.whole, location, ((t_virtual *)itm.base)->vptr, itm.wear_level, - Items->getItemDescription(itm, Materials).c_str() + name0.c_str(),// stacked + name1.c_str(),// singular + name2.c_str() // plural ); chooser->postPrint(&itm); /*