From 370655a51621faf0e2309e0b07e8b3d105626971 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Thu, 12 Nov 2009 01:53:49 +0000 Subject: [PATCH] move creature getters to the public API --- library/DFHackAPI.cpp | 97 +++++++++++++++++++------------------------ library/DFHackAPI.h | 12 ++++++ 2 files changed, 55 insertions(+), 54 deletions(-) diff --git a/library/DFHackAPI.cpp b/library/DFHackAPI.cpp index e621023a6..3ebc5bb2a 100644 --- a/library/DFHackAPI.cpp +++ b/library/DFHackAPI.cpp @@ -106,17 +106,6 @@ class API::Private void getSkillsByAddress(const uint32_t &address, vector &); void getTraitsByAddress(const uint32_t &address, vector &); void getLaborsByAddress(const uint32_t &address, vector &); - - string getLastName(const uint32_t &index, bool); - string getSquadName(const uint32_t &index, bool); - string getProfession(const uint32_t &index); - string getCurrentJob(const uint32_t &index); - vector getSkills(const uint32_t &index); - vector getTraits(const uint32_t &index); - vector getLabors(const uint32_t &index); - - void InitReadNameTables(); - void FinishReadNameTables(); }; API::API(const string path_to_xml) @@ -760,7 +749,7 @@ uint32_t API::InitReadCreatures() ) { d->p_cre = new DfVector(d->dm->readVector(creatures, 4)); - d->InitReadNameTables(); + InitReadNameTables(); //if(d->InitReadNameTables()) //{ d->creaturesInited = true; @@ -864,57 +853,57 @@ string API::Private::getCurrentJobByAddress(const uint32_t &address) return job; } -string API::Private::getLastName(const uint32_t &index, bool use_generic=false) +string API::getLastName(const uint32_t &index, bool use_generic=false) { - assert(creaturesInited); + assert(d->creaturesInited); uint32_t temp; // read pointer from vector at position - p_cre->read(index,(uint8_t *)&temp); - return(getLastNameByAddress(temp+creature_last_name_offset,use_generic)); + d->p_cre->read(index,(uint8_t *)&temp); + return(d->getLastNameByAddress(temp+d->creature_last_name_offset,use_generic)); } -string API::Private::getSquadName(const uint32_t &index, bool use_generic=false) +string API::getSquadName(const uint32_t &index, bool use_generic=false) { - assert(creaturesInited); + assert(d->creaturesInited); uint32_t temp; // read pointer from vector at position - p_cre->read(index,(uint8_t *)&temp); - return(getSquadNameByAddress(temp+creature_squad_name_offset,use_generic)); + d->p_cre->read(index,(uint8_t *)&temp); + return(d->getSquadNameByAddress(temp+d->creature_squad_name_offset,use_generic)); } -string API::Private::getProfession(const uint32_t &index) +string API::getProfession(const uint32_t &index) { - assert(creaturesInited); + assert(d->creaturesInited); uint32_t temp; // read pointer from vector at position - p_cre->read(index,(uint8_t *)&temp); - return(getProfessionByAddress(temp+creature_profession_offset)); + d->p_cre->read(index,(uint8_t *)&temp); + return(d->getProfessionByAddress(temp+d->creature_profession_offset)); } -string API::Private::getCurrentJob(const uint32_t &index) +string API::getCurrentJob(const uint32_t &index) { - assert(creaturesInited); + assert(d->creaturesInited); uint32_t temp; // read pointer from vector at position - p_cre->read(index,(uint8_t *)&temp); - return(getCurrentJobByAddress(temp+creature_current_job_offset)); + d->p_cre->read(index,(uint8_t *)&temp); + return(d->getCurrentJobByAddress(temp+d->creature_current_job_offset)); } -vector API::Private::getSkills(const uint32_t &index) +vector API::getSkills(const uint32_t &index) { - assert(creaturesInited); + assert(d->creaturesInited); uint32_t temp; // read pointer from vector at position - p_cre->read(index,(uint8_t *)&temp); + d->p_cre->read(index,(uint8_t *)&temp); vector tempSkillVec; - getSkillsByAddress(temp+creature_last_name_offset,tempSkillVec); + d->getSkillsByAddress(temp+d->creature_last_name_offset,tempSkillVec); return(tempSkillVec); } -vector API::Private::getTraits(const uint32_t &index) +vector API::getTraits(const uint32_t &index) { - assert(creaturesInited); + assert(d->creaturesInited); uint32_t temp; // read pointer from vector at position - p_cre->read(index,(uint8_t *)&temp); + d->p_cre->read(index,(uint8_t *)&temp); vector tempTraitVec; - getTraitsByAddress(temp+creature_traits_offset,tempTraitVec); + d->getTraitsByAddress(temp+d->creature_traits_offset,tempTraitVec); return(tempTraitVec); } @@ -1001,21 +990,21 @@ bool API::ReadCreature(const uint32_t &index, t_creature & furball) return true; } -void API::Private::InitReadNameTables() +void API::InitReadNameTables() { - int genericAddress = offset_descriptor->getAddress("language_vector"); - int transAddress = offset_descriptor->getAddress("translation_vector"); - int word_table_offset = offset_descriptor->getOffset("word_table"); + int genericAddress = d->offset_descriptor->getAddress("language_vector"); + int transAddress = d->offset_descriptor->getAddress("translation_vector"); + int word_table_offset = d->offset_descriptor->getOffset("word_table"); - p_generic = new DfVector(dm->readVector(genericAddress, 4)); - p_trans = new DfVector(dm->readVector(transAddress, 4)); + d->p_generic = new DfVector(d->dm->readVector(genericAddress, 4)); + d->p_trans = new DfVector(d->dm->readVector(transAddress, 4)); uint32_t dwarf_entry = 0; - for(uint32_t i = 0; i < p_trans->getSize();i++) + for(uint32_t i = 0; i < d->p_trans->getSize();i++) { uint32_t namePtr; - p_trans->read(i,(uint8_t *)&namePtr); - string raceName = dm->readSTLString(namePtr); + d->p_trans->read(i,(uint8_t *)&namePtr); + string raceName = d->dm->readSTLString(namePtr); if(raceName == "DWARF") { @@ -1023,17 +1012,17 @@ void API::Private::InitReadNameTables() } } - dwarf_lang_table_offset = dwarf_entry + word_table_offset; - p_dwarf_names = new DfVector(dm->readVector(dwarf_lang_table_offset,4)); - nameTablesInited = true; + d->dwarf_lang_table_offset = dwarf_entry + word_table_offset; + d->p_dwarf_names = new DfVector(d->dm->readVector(d->dwarf_lang_table_offset,4)); + d->nameTablesInited = true; } -void API::Private::FinishReadNameTables() +void API::FinishReadNameTables() { - delete p_trans; - delete p_generic; - p_trans=p_generic=NULL; - nameTablesInited=false; + delete d->p_trans; + delete d->p_generic; + d->p_trans=d->p_generic=NULL; + d->nameTablesInited=false; } void API::FinishReadCreatures() @@ -1041,7 +1030,7 @@ void API::FinishReadCreatures() delete d->p_cre; d->p_cre = NULL; d->creaturesInited = false; - d->FinishReadNameTables(); + FinishReadNameTables(); } bool API::Attach() diff --git a/library/DFHackAPI.h b/library/DFHackAPI.h index e7a8ff72b..af48bba4f 100644 --- a/library/DFHackAPI.h +++ b/library/DFHackAPI.h @@ -180,6 +180,18 @@ public: bool getCursorCoords (int32_t &x, int32_t &y, int32_t &z); bool setCursorCoords (const int32_t &x, const int32_t &y, const int32_t &z); + + // FIXME: add a real creature class, move these + string getLastName(const uint32_t &index, bool); + string getSquadName(const uint32_t &index, bool); + string getProfession(const uint32_t &index); + string getCurrentJob(const uint32_t &index); + vector getSkills(const uint32_t &index); + vector getTraits(const uint32_t &index); + vector getLabors(const uint32_t &index); + + void InitReadNameTables(); + void FinishReadNameTables(); }; } // namespace DFHack