Merge remote-tracking branch 'lethosor/0.40.22-plugins'

Also update NEWS
develop
lethosor 2015-01-05 16:35:56 -05:00
commit 7da9ab8f80
5 changed files with 35 additions and 19 deletions

@ -3,10 +3,12 @@ DFHack Future
plugins will not be loaded if globals they specify as required are not located (should prevent some crashes) plugins will not be loaded if globals they specify as required are not located (should prevent some crashes)
Fixes Fixes
advfort works again advfort works again
devel/export-dt-ini: Updated for 0.40.20+
digfort: now checks file type and existence digfort: now checks file type and existence
exportlegends: Fixed map export exportlegends: Fixed map export
full-heal: Fixed a problem with selecting units in the GUI full-heal: Fixed a problem with selecting units in the GUI
gui/hack-wish: Fixed restrictive material filters gui/hack-wish: Fixed restrictive material filters
mousequery: Changed box-select key to Alt+M
plugins/dwarfmonitor: correct date display (month index, separator) plugins/dwarfmonitor: correct date display (month index, separator)
scripts/putontable: added to the readme scripts/putontable: added to the readme
stderr.log: removed excessive debug output on OS X stderr.log: removed excessive debug output on OS X

@ -475,7 +475,9 @@ static const struct labor_default default_labor_infos[] = {
/* PULL_LEVER */ {HAULERS, false, 1, 200, 0}, /* PULL_LEVER */ {HAULERS, false, 1, 200, 0},
/* REMOVE_CONSTRUCTION */ {HAULERS, false, 1, 200, 0}, /* REMOVE_CONSTRUCTION */ {HAULERS, false, 1, 200, 0},
/* HAUL_WATER */ {HAULERS, false, 1, 200, 0}, /* HAUL_WATER */ {HAULERS, false, 1, 200, 0},
/* GELD */ {AUTOMATIC, false, 1, 200, 0} /* GELD */ {AUTOMATIC, false, 1, 200, 0},
/* BUILD_ROAD */ {AUTOMATIC, false, 1, 200, 0},
/* BUILD_CONSTRUCTION */ {AUTOMATIC, false, 1, 200, 0}
}; };
static const int responsibility_penalties[] = { static const int responsibility_penalties[] = {

@ -191,7 +191,9 @@ const SkillColumn columns[] = {
{12, 4, profession::ALCHEMIST, unit_labor::ALCHEMIST, job_skill::ALCHEMY, "Al"}, {12, 4, profession::ALCHEMIST, unit_labor::ALCHEMIST, job_skill::ALCHEMY, "Al"},
{12, 4, profession::NONE, unit_labor::CLEAN, job_skill::NONE, "Cl"}, {12, 4, profession::NONE, unit_labor::CLEAN, job_skill::NONE, "Cl"},
{12, 4, profession::NONE, unit_labor::PULL_LEVER, job_skill::NONE, "Lv"}, {12, 4, profession::NONE, unit_labor::PULL_LEVER, job_skill::NONE, "Lv"},
{12, 4, profession::NONE, unit_labor::REMOVE_CONSTRUCTION, job_skill::NONE, "Co"}, {12, 4, profession::NONE, unit_labor::BUILD_ROAD, job_skill::NONE, "Ro"},
{12, 4, profession::NONE, unit_labor::BUILD_CONSTRUCTION, job_skill::NONE, "Co"},
{12, 4, profession::NONE, unit_labor::REMOVE_CONSTRUCTION, job_skill::NONE, "CR"},
// Military - Weapons // Military - Weapons
{13, 7, profession::WRESTLER, unit_labor::NONE, job_skill::WRESTLING, "Wr"}, {13, 7, profession::WRESTLER, unit_labor::NONE, job_skill::WRESTLING, "Wr"},
{13, 7, profession::AXEMAN, unit_labor::NONE, job_skill::AXE, "Ax"}, {13, 7, profession::AXEMAN, unit_labor::NONE, job_skill::AXE, "Ax"},
@ -1221,7 +1223,7 @@ void viewscreen_unitlaborsst::render()
OutputString(10, x, y, Screen::getKeyDisplay(interface_key::OPTION20)); OutputString(10, x, y, Screen::getKeyDisplay(interface_key::OPTION20));
OutputString(15, x, y, ": Toggle View, "); OutputString(15, x, y, ": Toggle View, ");
OutputString(10, x, y, Screen::getKeyDisplay(interface_key::SECONDSCROLL_DOWN)); OutputString(10, x, y, Screen::getKeyDisplay(interface_key::SECONDSCROLL_DOWN));
OutputString(10, x, y, Screen::getKeyDisplay(interface_key::SECONDSCROLL_UP)); OutputString(10, x, y, Screen::getKeyDisplay(interface_key::SECONDSCROLL_UP));
OutputString(15, x, y, ": Sort by Skill, "); OutputString(15, x, y, ": Sort by Skill, ");

@ -98,7 +98,7 @@ static vector<df::unit *> get_units_at(const df::coord pos, bool only_one)
{ {
df::unit *unit = world->units.active[i]; df::unit *unit = world->units.active[i];
if(unit->pos.x == pos.x && unit->pos.y == pos.y && unit->pos.z == pos.z && if(unit->pos.x == pos.x && unit->pos.y == pos.y && unit->pos.z == pos.z &&
!(unit->flags1.whole & bad_flags.whole) && !(unit->flags1.whole & bad_flags.whole) &&
unit->profession != profession::THIEF && unit->profession != profession::MASTER_THIEF) unit->profession != profession::THIEF && unit->profession != profession::MASTER_THIEF)
{ {
@ -168,7 +168,7 @@ static df::interface_key get_default_query_mode(const df::coord pos)
{ {
// For containers use item view, for everything else, query view // For containers use item view, for everything else, query view
return (type == building_type::Box || type == building_type::Cabinet || return (type == building_type::Box || type == building_type::Cabinet ||
type == building_type::Weaponrack || type == building_type::Armorstand) type == building_type::Weaponrack || type == building_type::Armorstand)
? df::interface_key::D_BUILDITEM : df::interface_key::D_BUILDJOB; ? df::interface_key::D_BUILDITEM : df::interface_key::D_BUILDJOB;
} }
} }
@ -209,13 +209,22 @@ struct mousequery_hook : public df::viewscreen_dwarfmodest
case DesignateCarveTrack: case DesignateCarveTrack:
case DesignateEngrave: case DesignateEngrave:
case DesignateCarveFortification: case DesignateCarveFortification:
case DesignateItemsClaim:
case DesignateItemsForbid:
case DesignateItemsMelt:
case DesignateItemsUnmelt:
case DesignateItemsDump:
case DesignateItemsUndump:
case DesignateItemsHide:
case DesignateItemsUnhide:
case DesignateChopTrees: case DesignateChopTrees:
case DesignateToggleEngravings: case DesignateToggleEngravings:
case DesignateRemoveConstruction: case DesignateToggleMarker:
case DesignateTrafficHigh: case DesignateTrafficHigh:
case DesignateTrafficNormal: case DesignateTrafficNormal:
case DesignateTrafficLow: case DesignateTrafficLow:
case DesignateTrafficRestricted: case DesignateTrafficRestricted:
case DesignateRemoveConstruction:
return true; return true;
case Burrows: case Burrows:
@ -267,7 +276,7 @@ struct mousequery_hook : public df::viewscreen_dwarfmodest
bool isInAreaSelectionMode() bool isInAreaSelectionMode()
{ {
bool selectableMode = bool selectableMode =
isInDesignationMenu() || isInDesignationMenu() ||
ui->main.mode == Stockpiles || ui->main.mode == Stockpiles ||
ui->main.mode == Zones; ui->main.mode == Zones;
@ -356,13 +365,13 @@ struct mousequery_hook : public df::viewscreen_dwarfmodest
enabler->mouse_lbut = 0; enabler->mouse_lbut = 0;
// Can't check limits earlier as we must be sure we are in query or default mode // Can't check limits earlier as we must be sure we are in query or default mode
// (so we can clear the button down flag) // (so we can clear the button down flag)
int right_bound = (dims.menu_x1 > 0) ? dims.menu_x1 - 2 : gps->dimx - 2; int right_bound = (dims.menu_x1 > 0) ? dims.menu_x1 - 2 : gps->dimx - 2;
if (mx < 1 || mx > right_bound || my < 1 || my > gps->dimy - 2) if (mx < 1 || mx > right_bound || my < 1 || my > gps->dimy - 2)
return false; return false;
if (ui->main.mode == df::ui_sidebar_mode::Zones || if (ui->main.mode == df::ui_sidebar_mode::Zones ||
ui->main.mode == df::ui_sidebar_mode::Stockpiles) ui->main.mode == df::ui_sidebar_mode::Stockpiles)
{ {
int32_t x, y, z; int32_t x, y, z;
@ -413,7 +422,7 @@ struct mousequery_hook : public df::viewscreen_dwarfmodest
using namespace df::enums::ui_sidebar_mode; using namespace df::enums::ui_sidebar_mode;
if ((ui->main.mode == QueryBuilding || ui->main.mode == BuildingItems || if ((ui->main.mode == QueryBuilding || ui->main.mode == BuildingItems ||
ui->main.mode == ViewUnits || ui->main.mode == LookAround) || ui->main.mode == ViewUnits || ui->main.mode == LookAround) ||
(isInTrackableMode() && tracking_enabled)) (isInTrackableMode() && tracking_enabled))
{ {
sendKey(df::interface_key::LEAVESCREEN); sendKey(df::interface_key::LEAVESCREEN);
@ -435,7 +444,7 @@ struct mousequery_hook : public df::viewscreen_dwarfmodest
sendKey(interface_key::CURSOR_DOWN_FAST); sendKey(interface_key::CURSOR_DOWN_FAST);
} }
} }
else if (input->count(interface_key::CUSTOM_M) && isInDesignationMenu()) else if (input->count(interface_key::CUSTOM_ALT_M) && isInDesignationMenu())
{ {
box_designation_enabled = !box_designation_enabled; box_designation_enabled = !box_designation_enabled;
} }
@ -548,7 +557,7 @@ struct mousequery_hook : public df::viewscreen_dwarfmodest
mpos_valid = false; mpos_valid = false;
// Check if in lever binding mode // Check if in lever binding mode
if (Gui::getFocusString(Core::getTopViewscreen()) == if (Gui::getFocusString(Core::getTopViewscreen()) ==
"dwarfmode/QueryBuilding/Some/Lever/AddJob") "dwarfmode/QueryBuilding/Some/Lever/AddJob")
{ {
return; return;
@ -570,9 +579,9 @@ struct mousequery_hook : public df::viewscreen_dwarfmodest
if (isInDesignationMenu()) if (isInDesignationMenu())
{ {
int x = left_margin; int x = left_margin;
int y = 24; int y = gps->dimy - 2;
OutputString(COLOR_BROWN, x, y, "DFHack MouseQuery", true, left_margin); OutputToggleString(x, y, "Box Select", "Alt+M", box_designation_enabled,
OutputToggleString(x, y, "Box Select", "m", box_designation_enabled, true, left_margin); true, left_margin, COLOR_WHITE, COLOR_LIGHTRED);
} }
//Display selection dimensions //Display selection dimensions
@ -650,7 +659,7 @@ struct mousequery_hook : public df::viewscreen_dwarfmodest
if (Gui::getDesignationCoords(x, y, z)) if (Gui::getDesignationCoords(x, y, z))
{ {
color = COLOR_WHITE; color = COLOR_WHITE;
if (ui->main.mode == df::ui_sidebar_mode::Zones || if (ui->main.mode == df::ui_sidebar_mode::Zones ||
ui->main.mode == df::ui_sidebar_mode::Stockpiles) ui->main.mode == df::ui_sidebar_mode::Stockpiles)
{ {
auto dX = abs(x - mpos.x); auto dX = abs(x - mpos.x);
@ -669,8 +678,8 @@ struct mousequery_hook : public df::viewscreen_dwarfmodest
if (shouldTrack()) if (shouldTrack())
{ {
if (delta_t <= scroll_delay && (mx < scroll_buffer || if (delta_t <= scroll_delay && (mx < scroll_buffer ||
mx > dims.menu_x1 - scroll_buffer || mx > dims.menu_x1 - scroll_buffer ||
my < scroll_buffer || my < scroll_buffer ||
my > gps->dimy - scroll_buffer)) my > gps->dimy - scroll_buffer))
{ {
@ -830,7 +839,7 @@ DFhackCExport command_result plugin_init ( color_ostream &out, std::vector <Plug
commands.push_back( commands.push_back(
PluginCommand( PluginCommand(
"mousequery", "Add mouse functionality to Dwarf Fortress", "mousequery", "Add mouse functionality to Dwarf Fortress",
mousequery_cmd, false, mousequery_cmd, false,
"mousequery [plugin|rbutton|track|edge|live] [enabled|disabled]\n" "mousequery [plugin|rbutton|track|edge|live] [enabled|disabled]\n"
" plugin: enable/disable the entire plugin\n" " plugin: enable/disable the entire plugin\n"
" rbutton: enable/disable right mouse button\n" " rbutton: enable/disable right mouse button\n"

@ -269,6 +269,7 @@ address('shape_name_plural',df.descriptor_shape,'name_plural')
header('health_offsets') header('health_offsets')
address('parent_id',df.body_part_raw,'con_part_id') address('parent_id',df.body_part_raw,'con_part_id')
address('body_part_flags',df.body_part_raw,'flags')
address('layers_vector',df.body_part_raw,'layers') address('layers_vector',df.body_part_raw,'layers')
address('number',df.body_part_raw,'number') address('number',df.body_part_raw,'number')
address('names_vector',df.body_part_raw,'name_singular') address('names_vector',df.body_part_raw,'name_singular')