|
|
|
@ -85,6 +85,7 @@
|
|
|
|
|
|
|
|
|
|
#include "Debug.h"
|
|
|
|
|
#include "LuaTools.h"
|
|
|
|
|
#include "MiscUtils.h"
|
|
|
|
|
#include "PluginManager.h"
|
|
|
|
|
#include "VTableInterpose.h"
|
|
|
|
|
|
|
|
|
@ -98,6 +99,26 @@ namespace DFHack {
|
|
|
|
|
DBG_DECLARE(overlay, event, DebugCategory::LINFO);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#define SCREEN_LIST adopt_region, adventure_log, announcelist, \
|
|
|
|
|
assign_display_item, barter, buildinglist, building, choose_start_site, \
|
|
|
|
|
civlist, counterintelligence, createquota, customize_unit, dungeonmode, \
|
|
|
|
|
dungeon_monsterstatus, dungeon_wrestle, dwarfmode, entity, \
|
|
|
|
|
export_graphical_map, export_region, game_cleaner, image_creator, item, \
|
|
|
|
|
joblist, jobmanagement, job, justice, kitchenpref, layer_arena_creature, \
|
|
|
|
|
layer_assigntrade, layer_choose_language_name, layer_currency, \
|
|
|
|
|
layer_export_play_map, layer_military, layer_musicsound, layer_noblelist, \
|
|
|
|
|
layer_overall_health, layer_reaction, layer_squad_schedule, \
|
|
|
|
|
layer_stockpile, layer_stone_restriction, layer_unit_action, \
|
|
|
|
|
layer_unit_health, layer_unit_relationship, layer_world_gen_param_preset, \
|
|
|
|
|
layer_world_gen_param, legends, loadgame, locations, meeting, movieplayer, \
|
|
|
|
|
new_region, noble, option, overallstatus, petitions, pet, price, \
|
|
|
|
|
reportlist, requestagreement, savegame, selectitem, setupadventure, \
|
|
|
|
|
setupdwarfgame, stores, textviewer, title, \
|
|
|
|
|
topicmeeting_fill_land_holder_positions, topicmeeting, \
|
|
|
|
|
topicmeeting_takerequests, tradeagreement, tradegoods, tradelist, \
|
|
|
|
|
treasurelist, unitlist, unit, update_region, wages, workquota_condition, \
|
|
|
|
|
workquota_details, workshop_profile
|
|
|
|
|
|
|
|
|
|
template<class T>
|
|
|
|
|
struct viewscreen_overlay : T {
|
|
|
|
|
typedef T interpose_base;
|
|
|
|
@ -124,86 +145,7 @@ struct viewscreen_overlay : T {
|
|
|
|
|
template<> IMPLEMENT_VMETHOD_INTERPOSE_PRIO(screen##_overlay, feed, 100); \
|
|
|
|
|
template<> IMPLEMENT_VMETHOD_INTERPOSE_PRIO(screen##_overlay, render, 100);
|
|
|
|
|
|
|
|
|
|
IMPLEMENT_HOOKS(adopt_region)
|
|
|
|
|
IMPLEMENT_HOOKS(adventure_log)
|
|
|
|
|
IMPLEMENT_HOOKS(announcelist)
|
|
|
|
|
IMPLEMENT_HOOKS(assign_display_item)
|
|
|
|
|
IMPLEMENT_HOOKS(barter)
|
|
|
|
|
IMPLEMENT_HOOKS(buildinglist)
|
|
|
|
|
IMPLEMENT_HOOKS(building)
|
|
|
|
|
IMPLEMENT_HOOKS(choose_start_site)
|
|
|
|
|
IMPLEMENT_HOOKS(civlist)
|
|
|
|
|
IMPLEMENT_HOOKS(counterintelligence)
|
|
|
|
|
IMPLEMENT_HOOKS(createquota)
|
|
|
|
|
IMPLEMENT_HOOKS(customize_unit)
|
|
|
|
|
IMPLEMENT_HOOKS(dungeonmode)
|
|
|
|
|
IMPLEMENT_HOOKS(dungeon_monsterstatus)
|
|
|
|
|
IMPLEMENT_HOOKS(dungeon_wrestle)
|
|
|
|
|
IMPLEMENT_HOOKS(dwarfmode)
|
|
|
|
|
IMPLEMENT_HOOKS(entity)
|
|
|
|
|
IMPLEMENT_HOOKS(export_graphical_map)
|
|
|
|
|
IMPLEMENT_HOOKS(export_region)
|
|
|
|
|
IMPLEMENT_HOOKS(game_cleaner)
|
|
|
|
|
IMPLEMENT_HOOKS(image_creator)
|
|
|
|
|
IMPLEMENT_HOOKS(item)
|
|
|
|
|
IMPLEMENT_HOOKS(joblist)
|
|
|
|
|
IMPLEMENT_HOOKS(jobmanagement)
|
|
|
|
|
IMPLEMENT_HOOKS(job)
|
|
|
|
|
IMPLEMENT_HOOKS(justice)
|
|
|
|
|
IMPLEMENT_HOOKS(kitchenpref)
|
|
|
|
|
IMPLEMENT_HOOKS(layer_arena_creature)
|
|
|
|
|
IMPLEMENT_HOOKS(layer_assigntrade)
|
|
|
|
|
IMPLEMENT_HOOKS(layer_choose_language_name)
|
|
|
|
|
IMPLEMENT_HOOKS(layer_currency)
|
|
|
|
|
IMPLEMENT_HOOKS(layer_export_play_map)
|
|
|
|
|
IMPLEMENT_HOOKS(layer_military)
|
|
|
|
|
IMPLEMENT_HOOKS(layer_musicsound)
|
|
|
|
|
IMPLEMENT_HOOKS(layer_noblelist)
|
|
|
|
|
IMPLEMENT_HOOKS(layer_overall_health)
|
|
|
|
|
IMPLEMENT_HOOKS(layer_reaction)
|
|
|
|
|
IMPLEMENT_HOOKS(layer_squad_schedule)
|
|
|
|
|
IMPLEMENT_HOOKS(layer_stockpile)
|
|
|
|
|
IMPLEMENT_HOOKS(layer_stone_restriction)
|
|
|
|
|
IMPLEMENT_HOOKS(layer_unit_action)
|
|
|
|
|
IMPLEMENT_HOOKS(layer_unit_health)
|
|
|
|
|
IMPLEMENT_HOOKS(layer_unit_relationship)
|
|
|
|
|
IMPLEMENT_HOOKS(layer_world_gen_param_preset)
|
|
|
|
|
IMPLEMENT_HOOKS(layer_world_gen_param)
|
|
|
|
|
IMPLEMENT_HOOKS(legends)
|
|
|
|
|
IMPLEMENT_HOOKS(loadgame)
|
|
|
|
|
IMPLEMENT_HOOKS(locations)
|
|
|
|
|
IMPLEMENT_HOOKS(meeting)
|
|
|
|
|
IMPLEMENT_HOOKS(movieplayer)
|
|
|
|
|
IMPLEMENT_HOOKS(new_region)
|
|
|
|
|
IMPLEMENT_HOOKS(noble)
|
|
|
|
|
IMPLEMENT_HOOKS(option)
|
|
|
|
|
IMPLEMENT_HOOKS(overallstatus)
|
|
|
|
|
IMPLEMENT_HOOKS(petitions)
|
|
|
|
|
IMPLEMENT_HOOKS(pet)
|
|
|
|
|
IMPLEMENT_HOOKS(price)
|
|
|
|
|
IMPLEMENT_HOOKS(reportlist)
|
|
|
|
|
IMPLEMENT_HOOKS(requestagreement)
|
|
|
|
|
IMPLEMENT_HOOKS(savegame)
|
|
|
|
|
IMPLEMENT_HOOKS(selectitem)
|
|
|
|
|
IMPLEMENT_HOOKS(setupadventure)
|
|
|
|
|
IMPLEMENT_HOOKS(setupdwarfgame)
|
|
|
|
|
IMPLEMENT_HOOKS(stores)
|
|
|
|
|
IMPLEMENT_HOOKS(textviewer)
|
|
|
|
|
IMPLEMENT_HOOKS(title)
|
|
|
|
|
IMPLEMENT_HOOKS(topicmeeting_fill_land_holder_positions)
|
|
|
|
|
IMPLEMENT_HOOKS(topicmeeting)
|
|
|
|
|
IMPLEMENT_HOOKS(topicmeeting_takerequests)
|
|
|
|
|
IMPLEMENT_HOOKS(tradeagreement)
|
|
|
|
|
IMPLEMENT_HOOKS(tradegoods)
|
|
|
|
|
IMPLEMENT_HOOKS(tradelist)
|
|
|
|
|
IMPLEMENT_HOOKS(treasurelist)
|
|
|
|
|
IMPLEMENT_HOOKS(unitlist)
|
|
|
|
|
IMPLEMENT_HOOKS(unit)
|
|
|
|
|
IMPLEMENT_HOOKS(update_region)
|
|
|
|
|
IMPLEMENT_HOOKS(wages)
|
|
|
|
|
IMPLEMENT_HOOKS(workquota_condition)
|
|
|
|
|
IMPLEMENT_HOOKS(workquota_details)
|
|
|
|
|
IMPLEMENT_HOOKS(workshop_profile)
|
|
|
|
|
MAP(IMPLEMENT_HOOKS, SCREEN_LIST)
|
|
|
|
|
|
|
|
|
|
#undef IMPLEMENT_HOOKS
|
|
|
|
|
|
|
|
|
@ -218,86 +160,7 @@ DFhackCExport command_result plugin_enable(color_ostream &, bool enable) {
|
|
|
|
|
|
|
|
|
|
DEBUG(control).print("%sing interpose hooks\n", enable ? "enabl" : "disabl");
|
|
|
|
|
|
|
|
|
|
if (INTERPOSE_HOOKS_FAILED(adopt_region) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(adventure_log) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(announcelist) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(assign_display_item) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(barter) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(buildinglist) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(building) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(choose_start_site) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(civlist) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(counterintelligence) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(createquota) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(customize_unit) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(dungeonmode) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(dungeon_monsterstatus) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(dungeon_wrestle) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(dwarfmode) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(entity) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(export_graphical_map) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(export_region) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(game_cleaner) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(image_creator) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(item) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(joblist) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(jobmanagement) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(job) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(justice) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(kitchenpref) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(layer_arena_creature) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(layer_assigntrade) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(layer_choose_language_name) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(layer_currency) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(layer_export_play_map) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(layer_military) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(layer_musicsound) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(layer_noblelist) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(layer_overall_health) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(layer_reaction) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(layer_squad_schedule) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(layer_stockpile) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(layer_stone_restriction) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(layer_unit_action) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(layer_unit_health) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(layer_unit_relationship) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(layer_world_gen_param_preset) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(layer_world_gen_param) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(legends) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(loadgame) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(locations) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(meeting) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(movieplayer) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(new_region) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(noble) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(option) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(overallstatus) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(petitions) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(pet) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(price) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(reportlist) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(requestagreement) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(savegame) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(selectitem) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(setupadventure) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(setupdwarfgame) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(stores) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(textviewer) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(title) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(topicmeeting_fill_land_holder_positions) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(topicmeeting) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(topicmeeting_takerequests) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(tradeagreement) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(tradegoods) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(tradelist) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(treasurelist) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(unitlist) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(unit) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(update_region) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(wages) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(workquota_condition) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(workquota_details) ||
|
|
|
|
|
INTERPOSE_HOOKS_FAILED(workshop_profile))
|
|
|
|
|
if (MAP_JOIN(INTERPOSE_HOOKS_FAILED, ||, SCREEN_LIST))
|
|
|
|
|
return CR_FAILURE;
|
|
|
|
|
|
|
|
|
|
is_enabled = enable;
|
|
|
|
|