@ -39,8 +39,9 @@ enum likeType
vector < DFHack : : t_matgloss > creaturestypes ;
vector < DFHack : : t_matgloss > creaturestypes ;
matGlosses mat ;
matGlosses mat ;
vector < vector < DFHack : : t_itemType > > itemTypes ;
vector < vector < DFHack : : t_itemType > > itemTypes ;
map < string , vector < string > > names ;
DFHack : : memory_info * mem ;
DFHack : : memory_info * mem ;
vector < vector < string > > englishWords ;
vector < vector < string > > foreignWords ;
likeType printLike ( DFHack : : t_like like , const matGlosses & mat , const vector < vector < DFHack : : t_itemType > > & itemTypes )
likeType printLike ( DFHack : : t_like like , const matGlosses & mat , const vector < vector < DFHack : : t_itemType > > & itemTypes )
{ // The function in DF which prints out the likes is a monster, it is a huge switch statement with tons of options and calls a ton of other functions as well,
{ // The function in DF which prints out the likes is a monster, it is a huge switch statement with tons of options and calls a ton of other functions as well,
@ -153,17 +154,17 @@ void printCreature(DFHack::API & DF, const DFHack::t_creature & creature)
{
{
cout < < " address: " < < creature . origin < < " creature type: " < < creaturestypes [ creature . type ] . id < < " , position: " < < creature . x < < " x " < < creature . y < < " y " < < creature . z < < " z " < < endl ;
cout < < " address: " < < creature . origin < < " creature type: " < < creaturestypes [ creature . type ] . id < < " , position: " < < creature . x < < " x " < < creature . y < < " y " < < creature . z < < " z " < < endl ;
bool addendl = false ;
bool addendl = false ;
if ( creature . first_name[ 0 ] )
if ( creature . name. first_name[ 0 ] )
{
{
cout < < " first name: " < < creature . first_name;
cout < < " first name: " < < creature . name. first_name;
addendl = true ;
addendl = true ;
}
}
if ( creature . n ick_ name[ 0 ] )
if ( creature . n ame. n ickname[ 0 ] )
{
{
cout < < " , nick name: " < < creature . n ick_ name;
cout < < " , nick name: " < < creature . n ame. n ickname;
addendl = true ;
addendl = true ;
}
}
string transName = DF . TranslateName ( creature . last_name, names , creaturestypes [ creature . type ] . id ) ;
string transName = DF . TranslateName ( creature . name, englishWords , foreignWords , false ) ;
if ( ! transName . empty ( ) )
if ( ! transName . empty ( ) )
{
{
cout < < " , trans name: " < < transName ;
cout < < " , trans name: " < < transName ;
@ -320,8 +321,6 @@ int main (void)
return 1 ;
return 1 ;
}
}
vector < vector < string > > englishWords ;
vector < vector < string > > foreignWords ;
if ( ! DF . InitReadNameTables ( englishWords , foreignWords ) )
if ( ! DF . InitReadNameTables ( englishWords , foreignWords ) )
{
{
cerr < < " Can't get name tables " < < endl ;
cerr < < " Can't get name tables " < < endl ;
@ -338,147 +337,7 @@ int main (void)
{
{
DFHack : : t_creature temp ;
DFHack : : t_creature temp ;
DF . ReadCreature ( i , temp ) ;
DF . ReadCreature ( i , temp ) ;
if ( string ( creaturestypes [ temp . type ] . id ) = = " DWARF " )
printCreature ( DF , temp ) ;
{
cout < < " address: " < < temp . origin < < " creature type: " < < creaturestypes [ temp . type ] . id < < " , position: " < < temp . x < < " x " < < temp . y < < " y " < < temp . z < < " z " < < endl ;
bool addendl = false ;
if ( temp . name . first_name [ 0 ] )
{
cout < < " first name: " < < temp . name . first_name ;
addendl = true ;
}
if ( temp . name . nickname [ 0 ] )
{
cout < < " , nick name: " < < temp . name . nickname ;
addendl = true ;
}
string transName = DF . TranslateName ( temp . name , englishWords , foreignWords , false ) ;
if ( ! transName . empty ( ) )
{
cout < < " , trans name: " < < transName ;
addendl = true ;
}
//cout << ", generic name: " << DF.TranslateName(temp.last_name,names,"GENERIC");
/*
if ( ! temp . trans_name . empty ( ) ) {
cout < < " , trans name: " < < temp . trans_name ;
addendl = true ;
}
if ( ! temp . generic_name . empty ( ) ) {
cout < < " , generic name: " < < temp . generic_name ;
addendl = true ;
}
*/
cout < < " , likes: " ;
for ( uint32_t i = 0 ; i < temp . numLikes ; i + + )
{
if ( printLike ( temp . likes [ i ] , mat , itemTypes ) )
{
cout < < " , " ;
}
}
if ( addendl )
{
cout < < endl ;
addendl = false ;
}
cout < < " profession: " < < mem - > getProfession ( temp . profession ) < < " ( " < < ( int ) temp . profession < < " ) " ;
if ( temp . custom_profession [ 0 ] )
{
cout < < " , custom profession: " < < temp . custom_profession ;
}
if ( temp . current_job . active )
{
cout < < " , current job: " < < mem - > getJob ( temp . current_job . jobId ) ;
}
cout < < endl ;
cout < < " happiness: " < < temp . happiness < < " , strength: " < < temp . strength < < " , agility: "
< < temp . agility < < " , toughness: " < < temp . toughness < < " , money: " < < temp . money < < " , id: " < < temp . id ;
if ( temp . squad_leader_id ! = - 1 )
{
cout < < " , squad_leader_id: " < < temp . squad_leader_id ;
}
cout < < " , sex: " ;
if ( temp . sex = = 0 )
{
cout < < " Female " ;
}
else
{
cout < < " Male " ;
}
cout < < endl ;
/*
//skills
for ( unsigned int i = 0 ; i < temp . skills . size ( ) ; i + + ) {
if ( i > 0 ) {
cout < < " , " ;
}
cout < < temp . skills [ i ] . name < < " : " < < temp . skills [ i ] . rating ;
}
*/
/*
* FLAGS 1
*/
cout < < " flags1: " ;
print_bits ( temp . flags1 . whole , cout ) ;
cout < < endl ;
if ( temp . flags1 . bits . dead )
{
cout < < " dead " ;
}
if ( temp . flags1 . bits . on_ground )
{
cout < < " on the ground, " ;
}
if ( temp . flags1 . bits . skeleton )
{
cout < < " skeletal " ;
}
if ( temp . flags1 . bits . zombie )
{
cout < < " zombie " ;
}
if ( temp . flags1 . bits . tame )
{
cout < < " tame " ;
}
if ( temp . flags1 . bits . royal_guard )
{
cout < < " royal_guard " ;
}
if ( temp . flags1 . bits . fortress_guard )
{
cout < < " fortress_guard " ;
}
/*
* FLAGS 2
*/
cout < < endl < < " flags2: " ;
print_bits ( temp . flags2 . whole , cout ) ;
cout < < endl ;
if ( temp . flags2 . bits . killed )
{
cout < < " killed by kill function, " ;
}
if ( temp . flags2 . bits . resident )
{
cout < < " resident, " ;
}
if ( temp . flags2 . bits . gutted )
{
cout < < " gutted, " ;
}
if ( temp . flags2 . bits . slaughter )
{
cout < < " marked for slaughter, " ;
}
if ( temp . flags2 . bits . underworld )
{
cout < < " from the underworld, " ;
}
cout < < endl < < endl ;
}
}
}
uint32_t currentIdx ;
uint32_t currentIdx ;
DFHack : : t_creature currentCreature ;
DFHack : : t_creature currentCreature ;