test commit of notes-windows d17

Signed-off-by: belal <jimbelal@gmail.com>
develop
belal 2010-02-17 18:33:08 -05:00
parent 3193e3c835
commit e71f41fd42
6 changed files with 85 additions and 4 deletions

@ -42,6 +42,11 @@ TARGET_LINK_LIBRARIES(dfitemdump dfhack)
ADD_EXECUTABLE(dfdigger digger.cpp)
TARGET_LINK_LIBRARIES(dfdigger dfhack)
# hotkeynotedump - dumps the hotkeys and notes for the loaded map
# Author: belal
ADD_EXECUTABLE(dfhotkeynotedump hotkeynotedump.cpp)
TARGET_LINK_LIBRARIES(dfhotkeynotedump dfhack)
IF(UNIX)
# veinlook - look at the map... sort of
ADD_EXECUTABLE(dfveinlook veinlook.cpp)

@ -83,6 +83,11 @@ 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 dwarf_lang_table_offset;
ProcessEnumerator* pm;
@ -98,6 +103,7 @@ public:
bool cursorWindowInited;
bool viewSizeInited;
bool itemsInited;
bool notesInited;
bool nameTablesInited;
@ -107,6 +113,7 @@ public:
DfVector *p_bld;
DfVector *p_veg;
DfVector *p_itm;
DfVector *p_notes;
};
API::API (const string path_to_xml)
@ -122,6 +129,7 @@ API::API (const string path_to_xml)
d->cursorWindowInited = false;
d->viewSizeInited = false;
d->itemsInited = false;
d->notesInited = false;
d->pm = NULL;
}
@ -853,7 +861,47 @@ bool API::InitReadCreatures( uint32_t &numcreatures )
return false;
}
}
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");
if (notes
&& d->note_foreground_offset
&& d->note_background_offset
&& d->note_name_offset
&& d->note_xyz_offset
)
{
d->p_notes = new DfVector (d->p->readVector (notes, 4));
//InitReadNameTables();
d->notesInited = true;
numnotes = d->p_notes->getSize();
return true;
}
else
{
d->notesInited = false;
numnotes = 0;
return false;
}
}
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 *) &note.x);
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,
const uint16_t &x1, const uint16_t &y1, const uint16_t &z1,
@ -1087,6 +1135,13 @@ void API::FinishReadCreatures()
d->creaturesInited = false;
//FinishReadNameTables();
}
void API::FinishReadNotes()
{
delete d->p_notes;
d->p_notes = NULL;
d->notesInited = false;
//FinishReadNameTables();
}
bool API::Attach()
{

@ -171,6 +171,10 @@ namespace DFHack
void WriteRaw (const uint32_t &offset, const uint32_t &size, uint8_t *source);
bool InitViewAndCursor();
bool InitReadNotes( uint32_t & numnotes );
bool ReadNote(const int32_t &index, t_note & note);
void FinishReadNotes();
bool getViewCoords (int32_t &x, int32_t &y, int32_t &z);
bool setViewCoords (const int32_t &x, const int32_t &y, const int32_t &z);

@ -77,7 +77,7 @@ bool ProcessEnumerator::findProcessess()
}
else
{
delete p;
//FIXME delete p;
p = 0;
}
}
@ -102,7 +102,7 @@ bool ProcessEnumerator::findProcessess()
}
else
{
delete q;
//FIXME delete q;
q = 0;
}
}
@ -134,7 +134,7 @@ void ProcessEnumerator::purge()
{
for(uint32_t i = 0;i < d->processes.size();i++)
{
delete d->processes[i];
//FIXME delete d->processes[i];
}
d->processes.clear();
}

@ -753,5 +753,16 @@ struct t_viewscreen
//There is more info in these objects, but I don't know what it is yet
};
struct t_note
{
char symbol;
uint16_t foreground;
uint16_t background;
char name[128];
uint16_t x;
uint16_t y;
uint16_t z;
};
}// namespace DFHack
#endif // TYPES_H_INCLUDED

@ -1114,6 +1114,12 @@
<Address name="view_screen">0x014243C4</Address>
<Address name="current_cursor_creature">0x0178C994</Address>
<Address name="notes">0x014240A4</Address>
<Offset name="note_foreground">0x2</Offset>
<Offset name="note_background">0x4</Offset>
<Offset name="note_name">0x8</Offset>
<Offset name="note_xyz">0x24</Offset>
<VTable name="viewscreen_vtable">
<class vtable="0x0092014C" name="viewscreen_conversation" />
<class vtable="0x0092752C" name="viewscreen_option" />