move creature getters to the public API

develop
Petr Mrázek 2009-11-12 01:53:49 +00:00
parent 30d8a015fd
commit 370655a516
2 changed files with 55 additions and 54 deletions

@ -106,17 +106,6 @@ class API::Private
void getSkillsByAddress(const uint32_t &address, vector<t_skill> &); void getSkillsByAddress(const uint32_t &address, vector<t_skill> &);
void getTraitsByAddress(const uint32_t &address, vector<t_trait> &); void getTraitsByAddress(const uint32_t &address, vector<t_trait> &);
void getLaborsByAddress(const uint32_t &address, vector<t_labor> &); void getLaborsByAddress(const uint32_t &address, vector<t_labor> &);
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<t_skill> getSkills(const uint32_t &index);
vector<t_trait> getTraits(const uint32_t &index);
vector<t_labor> getLabors(const uint32_t &index);
void InitReadNameTables();
void FinishReadNameTables();
}; };
API::API(const string path_to_xml) 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->p_cre = new DfVector(d->dm->readVector(creatures, 4));
d->InitReadNameTables(); InitReadNameTables();
//if(d->InitReadNameTables()) //if(d->InitReadNameTables())
//{ //{
d->creaturesInited = true; d->creaturesInited = true;
@ -864,57 +853,57 @@ string API::Private::getCurrentJobByAddress(const uint32_t &address)
return job; 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; uint32_t temp;
// read pointer from vector at position // read pointer from vector at position
p_cre->read(index,(uint8_t *)&temp); d->p_cre->read(index,(uint8_t *)&temp);
return(getLastNameByAddress(temp+creature_last_name_offset,use_generic)); 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; uint32_t temp;
// read pointer from vector at position // read pointer from vector at position
p_cre->read(index,(uint8_t *)&temp); d->p_cre->read(index,(uint8_t *)&temp);
return(getSquadNameByAddress(temp+creature_squad_name_offset,use_generic)); 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; uint32_t temp;
// read pointer from vector at position // read pointer from vector at position
p_cre->read(index,(uint8_t *)&temp); d->p_cre->read(index,(uint8_t *)&temp);
return(getProfessionByAddress(temp+creature_profession_offset)); 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; uint32_t temp;
// read pointer from vector at position // read pointer from vector at position
p_cre->read(index,(uint8_t *)&temp); d->p_cre->read(index,(uint8_t *)&temp);
return(getCurrentJobByAddress(temp+creature_current_job_offset)); return(d->getCurrentJobByAddress(temp+d->creature_current_job_offset));
} }
vector<t_skill> API::Private::getSkills(const uint32_t &index) vector<t_skill> API::getSkills(const uint32_t &index)
{ {
assert(creaturesInited); assert(d->creaturesInited);
uint32_t temp; uint32_t temp;
// read pointer from vector at position // read pointer from vector at position
p_cre->read(index,(uint8_t *)&temp); d->p_cre->read(index,(uint8_t *)&temp);
vector<t_skill> tempSkillVec; vector<t_skill> tempSkillVec;
getSkillsByAddress(temp+creature_last_name_offset,tempSkillVec); d->getSkillsByAddress(temp+d->creature_last_name_offset,tempSkillVec);
return(tempSkillVec); return(tempSkillVec);
} }
vector<t_trait> API::Private::getTraits(const uint32_t &index) vector<t_trait> API::getTraits(const uint32_t &index)
{ {
assert(creaturesInited); assert(d->creaturesInited);
uint32_t temp; uint32_t temp;
// read pointer from vector at position // read pointer from vector at position
p_cre->read(index,(uint8_t *)&temp); d->p_cre->read(index,(uint8_t *)&temp);
vector<t_trait> tempTraitVec; vector<t_trait> tempTraitVec;
getTraitsByAddress(temp+creature_traits_offset,tempTraitVec); d->getTraitsByAddress(temp+d->creature_traits_offset,tempTraitVec);
return(tempTraitVec); return(tempTraitVec);
} }
@ -1001,21 +990,21 @@ bool API::ReadCreature(const uint32_t &index, t_creature & furball)
return true; return true;
} }
void API::Private::InitReadNameTables() void API::InitReadNameTables()
{ {
int genericAddress = offset_descriptor->getAddress("language_vector"); int genericAddress = d->offset_descriptor->getAddress("language_vector");
int transAddress = offset_descriptor->getAddress("translation_vector"); int transAddress = d->offset_descriptor->getAddress("translation_vector");
int word_table_offset = offset_descriptor->getOffset("word_table"); int word_table_offset = d->offset_descriptor->getOffset("word_table");
p_generic = new DfVector(dm->readVector(genericAddress, 4)); d->p_generic = new DfVector(d->dm->readVector(genericAddress, 4));
p_trans = new DfVector(dm->readVector(transAddress, 4)); d->p_trans = new DfVector(d->dm->readVector(transAddress, 4));
uint32_t dwarf_entry = 0; 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; uint32_t namePtr;
p_trans->read(i,(uint8_t *)&namePtr); d->p_trans->read(i,(uint8_t *)&namePtr);
string raceName = dm->readSTLString(namePtr); string raceName = d->dm->readSTLString(namePtr);
if(raceName == "DWARF") if(raceName == "DWARF")
{ {
@ -1023,17 +1012,17 @@ void API::Private::InitReadNameTables()
} }
} }
dwarf_lang_table_offset = dwarf_entry + word_table_offset; d->dwarf_lang_table_offset = dwarf_entry + word_table_offset;
p_dwarf_names = new DfVector(dm->readVector(dwarf_lang_table_offset,4)); d->p_dwarf_names = new DfVector(d->dm->readVector(d->dwarf_lang_table_offset,4));
nameTablesInited = true; d->nameTablesInited = true;
} }
void API::Private::FinishReadNameTables() void API::FinishReadNameTables()
{ {
delete p_trans; delete d->p_trans;
delete p_generic; delete d->p_generic;
p_trans=p_generic=NULL; d->p_trans=d->p_generic=NULL;
nameTablesInited=false; d->nameTablesInited=false;
} }
void API::FinishReadCreatures() void API::FinishReadCreatures()
@ -1041,7 +1030,7 @@ void API::FinishReadCreatures()
delete d->p_cre; delete d->p_cre;
d->p_cre = NULL; d->p_cre = NULL;
d->creaturesInited = false; d->creaturesInited = false;
d->FinishReadNameTables(); FinishReadNameTables();
} }
bool API::Attach() bool API::Attach()

@ -180,6 +180,18 @@ public:
bool getCursorCoords (int32_t &x, int32_t &y, int32_t &z); 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); 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<t_skill> getSkills(const uint32_t &index);
vector<t_trait> getTraits(const uint32_t &index);
vector<t_labor> getLabors(const uint32_t &index);
void InitReadNameTables();
void FinishReadNameTables();
}; };
} // namespace DFHack } // namespace DFHack