|
|
@ -150,12 +150,18 @@ public:
|
|
|
|
DfVector *p_current_settlement;
|
|
|
|
DfVector *p_current_settlement;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// FIXME: flesh it out
|
|
|
|
|
|
|
|
bool API::Private::InitReadNames()
|
|
|
|
bool API::Private::InitReadNames()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
try
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name_firstname_offset = offset_descriptor->getOffset("name_firstname");
|
|
|
|
name_firstname_offset = offset_descriptor->getOffset("name_firstname");
|
|
|
|
name_nickname_offset = offset_descriptor->getOffset("name_nickname");
|
|
|
|
name_nickname_offset = offset_descriptor->getOffset("name_nickname");
|
|
|
|
name_words_offset = offset_descriptor->getOffset("name_words");
|
|
|
|
name_words_offset = offset_descriptor->getOffset("name_words");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch(Error::MissingMemoryDefinition)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -810,7 +816,15 @@ bool API::ReadGeology (vector < vector <uint16_t> >& assign)
|
|
|
|
// returns number of buildings, expects v_buildingtypes that will later map t_building.type to its name
|
|
|
|
// returns number of buildings, expects v_buildingtypes that will later map t_building.type to its name
|
|
|
|
bool API::InitReadBuildings ( uint32_t& numbuildings )
|
|
|
|
bool API::InitReadBuildings ( uint32_t& numbuildings )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
int buildings = d->offset_descriptor->getAddress ("buildings");
|
|
|
|
int buildings = 0;
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
buildings = d->offset_descriptor->getAddress ("buildings");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch(Error::MissingMemoryDefinition)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
d->buildingsInited = true;
|
|
|
|
d->buildingsInited = true;
|
|
|
|
d->p_bld = new DfVector (d->p->readVector (buildings, 4));
|
|
|
|
d->p_bld = new DfVector (d->p->readVector (buildings, 4));
|
|
|
|
numbuildings = d->p_bld->getSize();
|
|
|
|
numbuildings = d->p_bld->getSize();
|
|
|
@ -863,7 +877,15 @@ bool API::InitReadEffects ( uint32_t & numeffects )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if(d->effectsInited)
|
|
|
|
if(d->effectsInited)
|
|
|
|
FinishReadEffects();
|
|
|
|
FinishReadEffects();
|
|
|
|
int effects = d->offset_descriptor->getAddress ("effects_vector");
|
|
|
|
int effects = 0;
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
effects = d->offset_descriptor->getAddress ("effects_vector");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch(Error::MissingMemoryDefinition)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
d->effectsInited = true;
|
|
|
|
d->effectsInited = true;
|
|
|
|
d->p_effect = new DfVector (d->p->readVector (effects, 4));
|
|
|
|
d->p_effect = new DfVector (d->p->readVector (effects, 4));
|
|
|
|
numeffects = d->p_effect->getSize();
|
|
|
|
numeffects = d->p_effect->getSize();
|
|
|
@ -913,7 +935,15 @@ void API::FinishReadEffects()
|
|
|
|
// returns number of constructions, prepares a vector, returns total number of constructions
|
|
|
|
// returns number of constructions, prepares a vector, returns total number of constructions
|
|
|
|
bool API::InitReadConstructions(uint32_t & numconstructions)
|
|
|
|
bool API::InitReadConstructions(uint32_t & numconstructions)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
int constructions = d->offset_descriptor->getAddress ("constructions");
|
|
|
|
int constructions = 0;
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
constructions = d->offset_descriptor->getAddress ("constructions");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch(Error::MissingMemoryDefinition)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
d->p_cons = new DfVector (d->p->readVector (constructions, 4));
|
|
|
|
d->p_cons = new DfVector (d->p->readVector (constructions, 4));
|
|
|
|
d->constructionsInited = true;
|
|
|
|
d->constructionsInited = true;
|
|
|
|
numconstructions = d->p_cons->getSize();
|
|
|
|
numconstructions = d->p_cons->getSize();
|
|
|
@ -1001,10 +1031,10 @@ void API::FinishReadVegetation()
|
|
|
|
|
|
|
|
|
|
|
|
bool API::InitReadCreatures( uint32_t &numcreatures )
|
|
|
|
bool API::InitReadCreatures( uint32_t &numcreatures )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
if(!d->InitReadNames()) return false;
|
|
|
|
try
|
|
|
|
try
|
|
|
|
{
|
|
|
|
{
|
|
|
|
memory_info * minfo = d->offset_descriptor;
|
|
|
|
memory_info * minfo = d->offset_descriptor;
|
|
|
|
d->InitReadNames();
|
|
|
|
|
|
|
|
int creatures = d->offset_descriptor->getAddress ("creatures");
|
|
|
|
int creatures = d->offset_descriptor->getAddress ("creatures");
|
|
|
|
d->creature_pos_offset = minfo->getOffset ("creature_position");
|
|
|
|
d->creature_pos_offset = minfo->getOffset ("creature_position");
|
|
|
|
d->creature_type_offset = minfo->getOffset ("creature_race");
|
|
|
|
d->creature_type_offset = minfo->getOffset ("creature_race");
|
|
|
@ -1032,7 +1062,6 @@ bool API::InitReadCreatures( uint32_t &numcreatures )
|
|
|
|
d->creature_mood_offset = minfo->getOffset("creature_mood");
|
|
|
|
d->creature_mood_offset = minfo->getOffset("creature_mood");
|
|
|
|
|
|
|
|
|
|
|
|
d->p_cre = new DfVector (d->p->readVector (creatures, 4));
|
|
|
|
d->p_cre = new DfVector (d->p->readVector (creatures, 4));
|
|
|
|
//InitReadNameTables();
|
|
|
|
|
|
|
|
d->creaturesInited = true;
|
|
|
|
d->creaturesInited = true;
|
|
|
|
numcreatures = d->p_cre->getSize();
|
|
|
|
numcreatures = d->p_cre->getSize();
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|