Remove Notes module
Only used in a devel plugin that prints notes, and can be easily replaced with `ui.waypoints.points`develop
parent
0aa7ec877e
commit
8bb047fcc6
@ -1,65 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
#ifndef CL_MOD_NOTES
|
|
||||||
#define CL_MOD_NOTES
|
|
||||||
/**
|
|
||||||
* \defgroup grp_notes In game notes (and routes)
|
|
||||||
* @ingroup grp_notes
|
|
||||||
*/
|
|
||||||
#include "Export.h"
|
|
||||||
#include "Module.h"
|
|
||||||
|
|
||||||
#include <vector>
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
namespace DFHack
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
/**
|
|
||||||
* Game's structure for a note.
|
|
||||||
* \ingroup grp_notes
|
|
||||||
*/
|
|
||||||
struct t_note
|
|
||||||
{
|
|
||||||
// First note created has id 0, second has id 1, etc. Not affected
|
|
||||||
// by lower id notes being deleted.
|
|
||||||
uint32_t id; // 0
|
|
||||||
uint8_t symbol; // 4
|
|
||||||
uint8_t unk1; // alignment padding?
|
|
||||||
uint16_t foreground; // 6
|
|
||||||
uint16_t background; // 8
|
|
||||||
uint16_t unk2; // alignment padding?
|
|
||||||
|
|
||||||
std::string name; // C
|
|
||||||
std::string text; // 10
|
|
||||||
|
|
||||||
uint16_t x; // 14
|
|
||||||
uint16_t y; // 16
|
|
||||||
uint16_t z; // 18
|
|
||||||
|
|
||||||
// Is there more?
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The notes module - allows reading DF in-game notes
|
|
||||||
* \ingroup grp_modules
|
|
||||||
* \ingroup grp_notes
|
|
||||||
*/
|
|
||||||
class DFHACK_EXPORT Notes : public Module
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
Notes();
|
|
||||||
~Notes(){};
|
|
||||||
bool Finish()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
std::vector<t_note*>* notes;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
#endif // __cplusplus
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,270 +0,0 @@
|
|||||||
/*
|
|
||||||
https://github.com/peterix/dfhack
|
|
||||||
Copyright (c) 2009-2012 Petr Mrázek (peterix@gmail.com)
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any
|
|
||||||
damages arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any
|
|
||||||
purpose, including commercial applications, and to alter it and
|
|
||||||
redistribute it freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must
|
|
||||||
not claim that you wrote the original software. If you use this
|
|
||||||
software in a product, an acknowledgment in the product documentation
|
|
||||||
would be appreciated but is not required.
|
|
||||||
|
|
||||||
2. Altered source versions must be plainly marked as such, and
|
|
||||||
must not be misrepresented as being the original software.
|
|
||||||
|
|
||||||
3. This notice may not be removed or altered from any source
|
|
||||||
distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
#include "Export.h"
|
|
||||||
#include <cstddef>
|
|
||||||
|
|
||||||
namespace DFHack
|
|
||||||
{
|
|
||||||
namespace Windows
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* DF window stuffs
|
|
||||||
*/
|
|
||||||
enum df_color
|
|
||||||
{
|
|
||||||
black,
|
|
||||||
blue,
|
|
||||||
green,
|
|
||||||
cyan,
|
|
||||||
red,
|
|
||||||
magenta,
|
|
||||||
brown,
|
|
||||||
lgray,
|
|
||||||
dgray,
|
|
||||||
lblue,
|
|
||||||
lgreen,
|
|
||||||
lcyan,
|
|
||||||
lred,
|
|
||||||
lmagenta,
|
|
||||||
yellow,
|
|
||||||
white
|
|
||||||
// maybe add transparency?
|
|
||||||
};
|
|
||||||
|
|
||||||
// The tile format DF uses internally
|
|
||||||
struct df_screentile
|
|
||||||
{
|
|
||||||
uint8_t symbol;
|
|
||||||
uint8_t foreground; ///< df_color
|
|
||||||
uint8_t background; ///< df_color
|
|
||||||
uint8_t bright;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// our silly painter things and window things follow.
|
|
||||||
class df_window;
|
|
||||||
struct df_tilebuf
|
|
||||||
{
|
|
||||||
df_screentile * data;
|
|
||||||
unsigned int width;
|
|
||||||
unsigned int height;
|
|
||||||
};
|
|
||||||
|
|
||||||
DFHACK_EXPORT df_screentile *getScreenBuffer();
|
|
||||||
|
|
||||||
class DFHACK_EXPORT painter
|
|
||||||
{
|
|
||||||
friend class df_window;
|
|
||||||
public:
|
|
||||||
df_screentile* get(unsigned int x, unsigned int y)
|
|
||||||
{
|
|
||||||
if(x >= width || y >= height)
|
|
||||||
return 0;
|
|
||||||
return &buffer[x*height + y];
|
|
||||||
};
|
|
||||||
bool set(unsigned int x, unsigned int y, df_screentile tile )
|
|
||||||
{
|
|
||||||
if(x >= width || y >= height)
|
|
||||||
return false;
|
|
||||||
buffer[x*height + y] = tile;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
df_color foreground (df_color change = (df_color) -1)
|
|
||||||
{
|
|
||||||
if(change != -1)
|
|
||||||
current_foreground = change;
|
|
||||||
return current_foreground;
|
|
||||||
}
|
|
||||||
df_color background (df_color change = (df_color) -1)
|
|
||||||
{
|
|
||||||
if(change != -1)
|
|
||||||
current_background = change;
|
|
||||||
return current_background;
|
|
||||||
}
|
|
||||||
void bright (bool change)
|
|
||||||
{
|
|
||||||
current_bright = change;
|
|
||||||
}
|
|
||||||
bool bright ()
|
|
||||||
{
|
|
||||||
return current_bright;
|
|
||||||
}
|
|
||||||
void printStr(std::string & str, bool wrap = false)
|
|
||||||
{
|
|
||||||
for ( auto iter = str.begin(); iter != str.end(); iter++)
|
|
||||||
{
|
|
||||||
auto elem = *iter;
|
|
||||||
if(cursor_y >= (int)height)
|
|
||||||
break;
|
|
||||||
if(wrap)
|
|
||||||
{
|
|
||||||
if(cursor_x >= (int)width)
|
|
||||||
cursor_x = wrap_column;
|
|
||||||
}
|
|
||||||
df_screentile & tile = buffer[cursor_x * height + cursor_y];
|
|
||||||
tile.symbol = elem;
|
|
||||||
tile.foreground = current_foreground;
|
|
||||||
tile.background = current_background;
|
|
||||||
tile.bright = current_bright;
|
|
||||||
cursor_x++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
void set_wrap (int new_column)
|
|
||||||
{
|
|
||||||
wrap_column = new_column;
|
|
||||||
}
|
|
||||||
void gotoxy(unsigned int x, unsigned int y)
|
|
||||||
{
|
|
||||||
cursor_x = x;
|
|
||||||
cursor_y = y;
|
|
||||||
}
|
|
||||||
void reset()
|
|
||||||
{
|
|
||||||
cursor_x = 0;
|
|
||||||
cursor_y = 0;
|
|
||||||
current_background = black;
|
|
||||||
current_foreground = white;
|
|
||||||
current_bright = false;
|
|
||||||
wrap_column = 0;
|
|
||||||
}
|
|
||||||
private:
|
|
||||||
painter (df_window * orig, df_screentile * buf, unsigned int width, unsigned int height)
|
|
||||||
{
|
|
||||||
origin = orig;
|
|
||||||
this->width = width;
|
|
||||||
this->height = height;
|
|
||||||
this->buffer = buf;
|
|
||||||
reset();
|
|
||||||
}
|
|
||||||
df_window* origin;
|
|
||||||
unsigned int width;
|
|
||||||
unsigned int height;
|
|
||||||
df_screentile* buffer;
|
|
||||||
// current paint cursor position
|
|
||||||
int cursor_x;
|
|
||||||
int cursor_y;
|
|
||||||
int wrap_column;
|
|
||||||
// current foreground color
|
|
||||||
df_color current_foreground;
|
|
||||||
// current background color
|
|
||||||
df_color current_background;
|
|
||||||
// make bright?
|
|
||||||
bool current_bright;
|
|
||||||
};
|
|
||||||
|
|
||||||
class DFHACK_EXPORT df_window
|
|
||||||
{
|
|
||||||
friend class painter;
|
|
||||||
public:
|
|
||||||
df_window(int x, int y, unsigned int width, unsigned int height);
|
|
||||||
virtual ~df_window();
|
|
||||||
virtual bool move (int left_, int top_, unsigned int width_, unsigned int height_) = 0;
|
|
||||||
virtual void paint () = 0;
|
|
||||||
virtual painter * lock();
|
|
||||||
bool unlock (painter * painter);
|
|
||||||
virtual bool addChild(df_window *);
|
|
||||||
virtual df_tilebuf getBuffer() = 0;
|
|
||||||
public:
|
|
||||||
df_screentile* buffer;
|
|
||||||
unsigned int width;
|
|
||||||
unsigned int height;
|
|
||||||
protected:
|
|
||||||
df_window * parent;
|
|
||||||
std::vector <df_window *> children;
|
|
||||||
int left;
|
|
||||||
int top;
|
|
||||||
// FIXME: FAKE
|
|
||||||
bool locked;
|
|
||||||
painter * current_painter;
|
|
||||||
};
|
|
||||||
|
|
||||||
class DFHACK_EXPORT top_level_window : public df_window
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
top_level_window();
|
|
||||||
virtual bool move (int left_, int top_, unsigned int width_, unsigned int height_);
|
|
||||||
virtual void paint ();
|
|
||||||
virtual painter * lock();
|
|
||||||
virtual df_tilebuf getBuffer();
|
|
||||||
};
|
|
||||||
class DFHACK_EXPORT buffered_window : public df_window
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
buffered_window(int x, int y, unsigned int width, unsigned int height):df_window(x,y,width, height)
|
|
||||||
{
|
|
||||||
buffer = new df_screentile[width*height];
|
|
||||||
};
|
|
||||||
virtual ~buffered_window()
|
|
||||||
{
|
|
||||||
delete buffer;
|
|
||||||
}
|
|
||||||
virtual void blit_to_parent ()
|
|
||||||
{
|
|
||||||
df_tilebuf par = parent->getBuffer();
|
|
||||||
for(unsigned xi = 0; xi < width; xi++)
|
|
||||||
{
|
|
||||||
for(unsigned yi = 0; yi < height; yi++)
|
|
||||||
{
|
|
||||||
unsigned parx = left + xi;
|
|
||||||
unsigned pary = top + yi;
|
|
||||||
if(pary >= par.height) continue;
|
|
||||||
if(parx >= par.width) continue;
|
|
||||||
par.data[parx * par.height + pary] = buffer[xi * height + yi];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
virtual df_tilebuf getBuffer()
|
|
||||||
{
|
|
||||||
df_tilebuf buf;
|
|
||||||
buf.data = buffer;
|
|
||||||
buf.width = width;
|
|
||||||
buf.height = height;
|
|
||||||
return buf;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
class DFHACK_EXPORT dfhack_dummy : public buffered_window
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
dfhack_dummy(int x, int y):buffered_window(x,y,6,1){};
|
|
||||||
virtual bool move (int left_, int top_, unsigned int width_, unsigned int height_)
|
|
||||||
{
|
|
||||||
top = top_;
|
|
||||||
left = left_;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
virtual void paint ()
|
|
||||||
{
|
|
||||||
painter * p = lock();
|
|
||||||
p->bright(true);
|
|
||||||
p->background(black);
|
|
||||||
p->foreground(white);
|
|
||||||
std::string dfhack = "DFHack";
|
|
||||||
p->printStr(dfhack);
|
|
||||||
blit_to_parent();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,53 +0,0 @@
|
|||||||
/*
|
|
||||||
www.sourceforge.net/projects/dfhack
|
|
||||||
Copyright (c) 2009 Petr Mrázek (peterix), Kenneth Ferland (Impaler[WrG]), dorf
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any
|
|
||||||
damages arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any
|
|
||||||
purpose, including commercial applications, and to alter it and
|
|
||||||
redistribute it freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must
|
|
||||||
not claim that you wrote the original software. If you use this
|
|
||||||
software in a product, an acknowledgment in the product documentation
|
|
||||||
would be appreciated but is not required.
|
|
||||||
|
|
||||||
2. Altered source versions must be plainly marked as such, and
|
|
||||||
must not be misrepresented as being the original software.
|
|
||||||
|
|
||||||
3. This notice may not be removed or altered from any source
|
|
||||||
distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "Internal.h"
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include <vector>
|
|
||||||
#include <map>
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
#include "VersionInfo.h"
|
|
||||||
#include "Types.h"
|
|
||||||
#include "Error.h"
|
|
||||||
#include "MemAccess.h"
|
|
||||||
#include "MiscUtils.h"
|
|
||||||
#include "ModuleFactory.h"
|
|
||||||
#include "Core.h"
|
|
||||||
#include "modules/Notes.h"
|
|
||||||
#include <DataDefs.h>
|
|
||||||
#include "df/ui.h"
|
|
||||||
using namespace DFHack;
|
|
||||||
|
|
||||||
std::unique_ptr<Module> DFHack::createNotes()
|
|
||||||
{
|
|
||||||
return dts::make_unique<Notes>();
|
|
||||||
}
|
|
||||||
|
|
||||||
// FIXME: not even a wrapper now
|
|
||||||
Notes::Notes()
|
|
||||||
{
|
|
||||||
notes = (std::vector<t_note*>*) &df::global::ui->waypoints.points;
|
|
||||||
}
|
|
@ -1,118 +0,0 @@
|
|||||||
/*
|
|
||||||
https://github.com/peterix/dfhack
|
|
||||||
Copyright (c) 2009-2012 Petr Mrázek (peterix@gmail.com)
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any
|
|
||||||
damages arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any
|
|
||||||
purpose, including commercial applications, and to alter it and
|
|
||||||
redistribute it freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must
|
|
||||||
not claim that you wrote the original software. If you use this
|
|
||||||
software in a product, an acknowledgment in the product documentation
|
|
||||||
would be appreciated but is not required.
|
|
||||||
|
|
||||||
2. Altered source versions must be plainly marked as such, and
|
|
||||||
must not be misrepresented as being the original software.
|
|
||||||
|
|
||||||
3. This notice may not be removed or altered from any source
|
|
||||||
distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "Export.h"
|
|
||||||
#include "Module.h"
|
|
||||||
#include "BitArray.h"
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
#include "DataDefs.h"
|
|
||||||
#include "df/init.h"
|
|
||||||
#include "df/ui.h"
|
|
||||||
#include <df/graphic.h>
|
|
||||||
#include "modules/Windows.h"
|
|
||||||
|
|
||||||
using namespace DFHack;
|
|
||||||
using df::global::gps;
|
|
||||||
|
|
||||||
Windows::df_screentile *Windows::getScreenBuffer()
|
|
||||||
{
|
|
||||||
if (!gps) return NULL;
|
|
||||||
return (df_screentile *) gps->screen;
|
|
||||||
}
|
|
||||||
|
|
||||||
Windows::df_window::df_window(int x, int y, unsigned int width, unsigned int height)
|
|
||||||
:buffer(0), width(width), height(height), parent(0), left(x), top(y), current_painter(NULL)
|
|
||||||
{
|
|
||||||
buffer = 0;
|
|
||||||
};
|
|
||||||
Windows::df_window::~df_window()
|
|
||||||
{
|
|
||||||
for(auto iter = children.begin();iter != children.end();iter++)
|
|
||||||
{
|
|
||||||
delete *iter;
|
|
||||||
}
|
|
||||||
children.clear();
|
|
||||||
};
|
|
||||||
Windows::painter * Windows::df_window::lock()
|
|
||||||
{
|
|
||||||
locked = true;
|
|
||||||
current_painter = new Windows::painter(this,buffer,width, height);
|
|
||||||
return current_painter;
|
|
||||||
};
|
|
||||||
|
|
||||||
bool Windows::df_window::addChild( df_window * child)
|
|
||||||
{
|
|
||||||
children.push_back(child);
|
|
||||||
child->parent = this;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Windows::df_window::unlock (painter * painter)
|
|
||||||
{
|
|
||||||
if(current_painter == painter)
|
|
||||||
{
|
|
||||||
delete current_painter;
|
|
||||||
current_painter = 0;
|
|
||||||
locked = false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Windows::top_level_window::top_level_window() : df_window(0,0,gps ? gps->dimx : 80,gps ? gps->dimy : 25)
|
|
||||||
{
|
|
||||||
buffer = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Windows::top_level_window::move (int left_, int top_, unsigned int width_, unsigned int height_)
|
|
||||||
{
|
|
||||||
width = width_;
|
|
||||||
height = height_;
|
|
||||||
// what if we are painting already? Is that possible?
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
|
|
||||||
Windows::painter * Windows::top_level_window::lock()
|
|
||||||
{
|
|
||||||
buffer = getScreenBuffer();
|
|
||||||
return df_window::lock();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Windows::top_level_window::paint ()
|
|
||||||
{
|
|
||||||
for(auto iter = children.begin();iter != children.end();iter++)
|
|
||||||
{
|
|
||||||
(*iter)->paint();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Windows::df_tilebuf Windows::top_level_window::getBuffer()
|
|
||||||
{
|
|
||||||
df_tilebuf buf;
|
|
||||||
buf.data = getScreenBuffer();
|
|
||||||
buf.height = df::global::gps->dimy;
|
|
||||||
buf.width = df::global::gps->dimx;
|
|
||||||
return buf;
|
|
||||||
}
|
|
@ -1,72 +0,0 @@
|
|||||||
#include "Core.h"
|
|
||||||
#include <Console.h>
|
|
||||||
#include <Export.h>
|
|
||||||
#include <PluginManager.h>
|
|
||||||
#include <vector>
|
|
||||||
#include <string>
|
|
||||||
#include <modules/Notes.h>
|
|
||||||
|
|
||||||
using std::vector;
|
|
||||||
using std::string;
|
|
||||||
using namespace DFHack;
|
|
||||||
|
|
||||||
command_result df_notes (color_ostream &out, vector <string> & parameters);
|
|
||||||
|
|
||||||
DFHACK_PLUGIN("notes");
|
|
||||||
|
|
||||||
DFhackCExport command_result plugin_init ( color_ostream &out, std::vector <PluginCommand> &commands)
|
|
||||||
{
|
|
||||||
commands.push_back(PluginCommand("dumpnotes",
|
|
||||||
"Dumps in-game notes",
|
|
||||||
df_notes));
|
|
||||||
return CR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
DFhackCExport command_result plugin_shutdown ( color_ostream &out )
|
|
||||||
{
|
|
||||||
return CR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
command_result df_notes (color_ostream &con, vector <string> & parameters)
|
|
||||||
{
|
|
||||||
CoreSuspender suspend;
|
|
||||||
|
|
||||||
DFHack::Notes * note_mod = Core::getInstance().getNotes();
|
|
||||||
std::vector<t_note*>* note_list = note_mod->notes;
|
|
||||||
|
|
||||||
if (note_list == NULL)
|
|
||||||
{
|
|
||||||
con.printerr("Notes are not supported under this version of DF.\n");
|
|
||||||
return CR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (note_list->empty())
|
|
||||||
{
|
|
||||||
con << "There are no notes." << std::endl;
|
|
||||||
return CR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
for (size_t i = 0; i < note_list->size(); i++)
|
|
||||||
{
|
|
||||||
t_note* note = (*note_list)[i];
|
|
||||||
|
|
||||||
con.print("Note %p at: %d/%d/%d\n",note, note->x, note->y, note->z);
|
|
||||||
con.print("Note id: %d\n", note->id);
|
|
||||||
con.print("Note symbol: '%c'\n", note->symbol);
|
|
||||||
|
|
||||||
if (note->name.length() > 0)
|
|
||||||
con << "Note name: " << (note->name) << std::endl;
|
|
||||||
if (note->text.length() > 0)
|
|
||||||
con << "Note text: " << (note->text) << std::endl;
|
|
||||||
|
|
||||||
if (note->unk1 != 0)
|
|
||||||
con.print("unk1: %x\n", note->unk1);
|
|
||||||
if (note->unk2 != 0)
|
|
||||||
con.print("unk2: %x\n", note->unk2);
|
|
||||||
|
|
||||||
con << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
return CR_OK;
|
|
||||||
}
|
|
Loading…
Reference in New Issue