|
|
|
@ -83,14 +83,14 @@ public:
|
|
|
|
|
|
|
|
|
|
uint32_t item_material_offset;
|
|
|
|
|
|
|
|
|
|
uint32_t note_foreground_offset;
|
|
|
|
|
uint32_t note_background_offset;
|
|
|
|
|
uint32_t note_name_offset;
|
|
|
|
|
uint32_t note_xyz_offset;
|
|
|
|
|
uint32_t hotkey_start;
|
|
|
|
|
uint32_t hotkey_mode_offset;
|
|
|
|
|
uint32_t hotkey_xyz_offset;
|
|
|
|
|
uint32_t hotkey_size;
|
|
|
|
|
uint32_t note_foreground_offset;
|
|
|
|
|
uint32_t note_background_offset;
|
|
|
|
|
uint32_t note_name_offset;
|
|
|
|
|
uint32_t note_xyz_offset;
|
|
|
|
|
uint32_t hotkey_start;
|
|
|
|
|
uint32_t hotkey_mode_offset;
|
|
|
|
|
uint32_t hotkey_xyz_offset;
|
|
|
|
|
uint32_t hotkey_size;
|
|
|
|
|
|
|
|
|
|
uint32_t dwarf_lang_table_offset;
|
|
|
|
|
|
|
|
|
@ -107,8 +107,8 @@ public:
|
|
|
|
|
bool cursorWindowInited;
|
|
|
|
|
bool viewSizeInited;
|
|
|
|
|
bool itemsInited;
|
|
|
|
|
bool notesInited;
|
|
|
|
|
bool hotkeyInited;
|
|
|
|
|
bool notesInited;
|
|
|
|
|
bool hotkeyInited;
|
|
|
|
|
|
|
|
|
|
bool nameTablesInited;
|
|
|
|
|
|
|
|
|
@ -118,7 +118,7 @@ public:
|
|
|
|
|
DfVector *p_bld;
|
|
|
|
|
DfVector *p_veg;
|
|
|
|
|
DfVector *p_itm;
|
|
|
|
|
DfVector *p_notes;
|
|
|
|
|
DfVector *p_notes;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
API::API (const string path_to_xml)
|
|
|
|
@ -134,8 +134,8 @@ API::API (const string path_to_xml)
|
|
|
|
|
d->cursorWindowInited = false;
|
|
|
|
|
d->viewSizeInited = false;
|
|
|
|
|
d->itemsInited = false;
|
|
|
|
|
d->notesInited = false;
|
|
|
|
|
d->hotkeyInited = false;
|
|
|
|
|
d->notesInited = false;
|
|
|
|
|
d->hotkeyInited = false;
|
|
|
|
|
d->pm = NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -860,7 +860,7 @@ bool API::InitReadCreatures( uint32_t &numcreatures )
|
|
|
|
|
&& d->creature_labors_offset
|
|
|
|
|
&& d->creature_happiness_offset
|
|
|
|
|
&& d->creature_traits_offset
|
|
|
|
|
// && d->creature_likes_offset
|
|
|
|
|
// && d->creature_likes_offset
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
d->p_cre = new DfVector (d->p->readVector (creatures, 4));
|
|
|
|
@ -881,9 +881,9 @@ bool API::InitReadNotes( uint32_t &numnotes )
|
|
|
|
|
memory_info * minfo = d->offset_descriptor;
|
|
|
|
|
int notes = d->offset_descriptor->getAddress ("notes");
|
|
|
|
|
d->note_foreground_offset = minfo->getOffset ("note_foreground");
|
|
|
|
|
d->note_background_offset = minfo->getOffset ("note_background");
|
|
|
|
|
d->note_name_offset = minfo->getOffset ("note_name");
|
|
|
|
|
d->note_xyz_offset = minfo->getOffset ("note_xyz");
|
|
|
|
|
d->note_background_offset = minfo->getOffset ("note_background");
|
|
|
|
|
d->note_name_offset = minfo->getOffset ("note_name");
|
|
|
|
|
d->note_xyz_offset = minfo->getOffset ("note_xyz");
|
|
|
|
|
|
|
|
|
|
if (notes
|
|
|
|
|
&& d->note_foreground_offset
|
|
|
|
@ -910,25 +910,25 @@ bool API::ReadNote (const int32_t &index, t_note & note)
|
|
|
|
|
assert (d->notesInited);
|
|
|
|
|
// read pointer from vector at position
|
|
|
|
|
uint32_t temp = * (uint32_t *) d->p_notes->at (index);
|
|
|
|
|
note.symbol = g_pProcess->readByte(temp);
|
|
|
|
|
note.foreground = g_pProcess->readWord(temp + d->note_foreground_offset);
|
|
|
|
|
note.background = g_pProcess->readWord(temp + d->note_background_offset);
|
|
|
|
|
d->p->readSTLString (temp + d->note_name_offset, note.name, 128);
|
|
|
|
|
g_pProcess->read (temp + d->note_xyz_offset, 3*sizeof (uint16_t), (uint8_t *) ¬e.x);
|
|
|
|
|
return true;
|
|
|
|
|
note.symbol = g_pProcess->readByte(temp);
|
|
|
|
|
note.foreground = g_pProcess->readWord(temp + d->note_foreground_offset);
|
|
|
|
|
note.background = g_pProcess->readWord(temp + d->note_background_offset);
|
|
|
|
|
d->p->readSTLString (temp + d->note_name_offset, note.name, 128);
|
|
|
|
|
g_pProcess->read (temp + d->note_xyz_offset, 3*sizeof (uint16_t), (uint8_t *) ¬e.x);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
bool API::InitReadHotkeys( )
|
|
|
|
|
{
|
|
|
|
|
memory_info * minfo = d->offset_descriptor;
|
|
|
|
|
d->hotkey_start = minfo->getAddress("hotkey_start");
|
|
|
|
|
d->hotkey_start = minfo->getAddress("hotkey_start");
|
|
|
|
|
d->hotkey_mode_offset = minfo->getOffset ("hotkey_mode");
|
|
|
|
|
d->hotkey_xyz_offset = minfo->getOffset("hotkey_xyz");
|
|
|
|
|
d->hotkey_size = minfo->getHexValue("hotkey_size");
|
|
|
|
|
d->hotkey_xyz_offset = minfo->getOffset("hotkey_xyz");
|
|
|
|
|
d->hotkey_size = minfo->getHexValue("hotkey_size");
|
|
|
|
|
|
|
|
|
|
if (d->hotkey_start && d->hotkey_mode_offset && d->hotkey_size)
|
|
|
|
|
{
|
|
|
|
|
d->hotkeyInited = true;
|
|
|
|
|
return true;
|
|
|
|
|
d->hotkeyInited = true;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@ -939,15 +939,15 @@ bool API::InitReadHotkeys( )
|
|
|
|
|
bool API::ReadHotkeys(t_hotkey hotkeys[])
|
|
|
|
|
{
|
|
|
|
|
assert (d->hotkeyInited);
|
|
|
|
|
uint32_t currHotkey = d->hotkey_start;
|
|
|
|
|
for(uint32_t i = 0 ; i < NUM_HOTKEYS ;i++)
|
|
|
|
|
{
|
|
|
|
|
d->p->readSTLString(currHotkey,hotkeys[i].name,10);
|
|
|
|
|
hotkeys[i].mode = g_pProcess->readWord(currHotkey+d->hotkey_mode_offset);
|
|
|
|
|
g_pProcess->read (currHotkey + d->hotkey_xyz_offset, 3*sizeof (int32_t), (uint8_t *) &hotkeys[i].x);
|
|
|
|
|
currHotkey+=d->hotkey_size;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
uint32_t currHotkey = d->hotkey_start;
|
|
|
|
|
for(uint32_t i = 0 ; i < NUM_HOTKEYS ;i++)
|
|
|
|
|
{
|
|
|
|
|
d->p->readSTLString(currHotkey,hotkeys[i].name,10);
|
|
|
|
|
hotkeys[i].mode = g_pProcess->readWord(currHotkey+d->hotkey_mode_offset);
|
|
|
|
|
g_pProcess->read (currHotkey + d->hotkey_xyz_offset, 3*sizeof (int32_t), (uint8_t *) &hotkeys[i].x);
|
|
|
|
|
currHotkey+=d->hotkey_size;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
// returns index of creature actually read or -1 if no creature can be found
|
|
|
|
|
int32_t API::ReadCreatureInBox (int32_t index, t_creature & furball,
|
|
|
|
|