Commit Graph

890 Commits (7f7102f90c0c061926702237a5b385450c02f7c5)

Author SHA1 Message Date
lethosor 8de710f1c1 Add Renderer module - safer way to install custom renderers 2015-10-21 17:18:39 -04:00
lethosor c44ac8ec6e Improve handling of fatal errors and errors in dfhack.lua
* Several fatal errors that occurred during core initialization didn't
  stop initialization or set 'errorstate' properly, which caused
  update hooks and other code to crash later. This has been fixed and
  should address crashes like the one mentioned in #470.
* Errors when loading dfhack.lua now cause Lua::Open() to fail, which
  triggers a fatal error in Core::Init()
* Failure to initialize the console no longer results in a call to
  fatal() (since it didn't actually stop initialization previously)
2015-10-17 21:18:04 -04:00
lethosor 5387c03ea0 DFHackVersion: Expose whether the built commit is tagged 2015-10-17 15:35:40 -04:00
lethosor 3f5c002634 Pass virtual_identity by reference 2015-10-03 09:27:24 -04:00
lethosor d343dfd8a0 Add a function to find viewscreens (or parents) of a given type
This makes it possible for some plugins to detect the game state more
reliably - for example, prospector would previously fail when
embarking if the viewscreen_choose_start_sitest instance had any
children.
2015-10-02 21:50:55 -04:00
lethosor 9eb86c7e38 Support additional script search paths
These can currently be added/removed from C++ or through the Lua API.
2015-09-06 16:23:02 -04:00
lethosor a5f15b279c plug: Include deleted plugins in full list 2015-08-14 19:32:41 -04:00
lethosor 4fc6cb6f17 Several PluginManager improvements
* load/unload/reload are no longer restricted to plugins that exist
  on startup
* Names passed to DFHACK_PLUGIN must match the plugin's filename
  (remotefortressreader vs RemoteFortressReader, counters vs probe)
* "plug" output lists all plugins and state/command information
* Deleted plugins can be reloaded again if they are replaced
* load/unload/reload don't fail silently with broken plugins
* Built-in commands are recognized internally (e.g. "help help"
  does not display "help is not a recognized command"), although help
  for them is not yet implemented
* New command: "type" (bash-like) - shows where/how a command is
  implemented
* "plug" can accept multiple plugin names
* "ls" displays more information about unloaded/unrecognized plugins
* "load all" changed to "load -all" (or "load --all", "load -a", ...)
2015-08-14 16:11:23 -04:00
lethosor 2aba2da56d Avoid DataStaticsFields dependency on PluginManager.h 2015-08-11 22:59:19 -04:00
lethosor de49befdbb Improve version information
* Add reimplementations of old DFHACK_VERSION-style macros
* Expose full git commit ID
* Expose all DFHack::Version functions to Lua
2015-08-06 17:30:51 -04:00
lethosor 22ea68e68a Use is_valid_enum_item in FOR_ENUM_ITEMS
This is part of the workaround for
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43680

Fixes DFHack/dfhack#654
Fixes JapaMala/armok-vision#21
2015-07-18 12:57:12 -04:00
lethosor ee7a2c7db7 Add git commit information to libdfhack-version
git is run every time 'make' is run, but the generated include file
is only updated when necessary. Plugins will be loaded successfully
if their DFHack version matches core's (assuming OpenLibrary()
succeeds), but will produce a warning if their git commit doesn't
match core's.
2015-06-24 19:32:45 -04:00
lethosor 36fde3d7e3 Allow Lua screens to allow OPTIONS to work 2015-06-05 18:45:52 -04:00
lethosor 96f3bdafb4 Implement an internal command to interrupt running Lua scripts
This inserts a debug hook that runs every 256 instructions by
default, which has a minimal impact on performance.
2015-05-24 19:06:01 -04:00
lethosor b6ec48c99a Add a macro that allows exported functions to use different names 2015-05-09 09:42:15 -04:00
lethosor a8f5e683f7 Merge remote-tracking branches 'RossM/autolabor-changes', 'RossM/workflow-changes' and 'lethosor/plugin-exports' into develop 2015-05-09 09:39:55 -04:00
lethosor 4b124bc022 Avoid including DFHackVersion.h in PluginManager.h
Changes to DFHackVersion.h previously required recompiling nearly all
of the DFHack core.
2015-04-03 14:02:14 -04:00
lethosor 786581689f Move get_dfhack_version() to a separate namespace and add a few other version-related functions 2015-04-02 16:37:58 -04:00
lethosor 9b6d8d2799 Allow dev plugins to be skipped on startup 2015-04-01 17:50:22 -04:00
lethosor bbb41078e7 Expose PenArray dimensions and tiles to Lua 2015-03-28 18:35:07 -04:00
lethosor e2b6ae9beb Allocate Lua PenArray objects using an existing buffer 2015-03-28 11:27:47 -04:00
lethosor 99f4ea4d2b Implement a PenArray class for caching parts of rendered screens 2015-03-27 22:56:30 -04:00
lethosor 01c6d05775 Add custom enabler::zoom_display() method (screen.zoom in Lua) 2015-03-25 17:55:56 -04:00
lethosor 42e4f584b9 Add SDL_SemWait and SDL_SemPost hooks 2015-03-25 16:08:25 -04:00
lethosor afca7419dc Add gametype checks to World.cpp 2015-03-09 20:08:21 -04:00
lethosor ea1c9fa0df Allow plugin exports to be defined in plugins (and looked up when needed) 2015-03-07 17:25:35 -05:00
lethosor 1570af3f4d Allow plugins to export additional functions through a class 2015-03-07 15:56:43 -05:00
lethosor 88ff51c755 Add PushEvent hook on OS X
See #553
2015-02-21 21:28:35 -05:00
lethosor bd809d7bbc Replace most interposed functions with dlsym wrappers on OS X 2015-02-21 21:28:35 -05:00
lethosor 0f77a1a578 Move DFHack version to a separate (static) library
This allows the DFHack version to be changed without recompiling
everything
2015-02-19 12:08:23 -05:00
lethosor c399377f08 Ensure that command usage information always ends with a newline 2015-02-16 20:17:47 -05:00
lethosor 10cfef0553 Fix whitespace issues 2015-02-14 22:53:06 -05:00
lethosor a8a8fc43ef Add df2console() wrapper
Closes #522
2015-02-13 17:56:29 -05:00
lethosor 56dfc66309 Implement map load/unload scripts and allow additional scripts to be registered 2015-02-11 15:03:47 -05:00
lethosor 15d3b7831f hide/show: Provide feedback on unsupported platforms 2015-02-08 09:30:40 -05:00
lethosor a1691b6777 Merge remote-tracking branch 'warmist/console-hide' into develop
Conflicts:
	library/Console-darwin.cpp
2015-02-08 09:20:05 -05:00
expwnent e5e0d93ef1 Added modtools/reaction-product-trigger. 2015-02-02 02:39:05 -05:00
expwnent e9b4fc513a Merge remote-tracking branch 'cdombroski/zone-plugin-cleanup' into temp
Conflicts:
	NEWS
	plugins/zone.cpp
2015-01-31 21:01:41 -05:00
lethosor 066adfdf95 Implement a function to list directories recursively 2015-01-30 17:29:17 -05:00
Chris Dombroski f608235b1e Fix some Lua things 2015-01-29 19:56:50 -05:00
Chris Dombroski f2eec3198c Rename findPenPitAtCoord 2015-01-29 15:02:54 -05:00
Chris Dombroski 86495270a6 Remove duplicate isMilkable definition. 2015-01-29 14:40:09 -05:00
Chris Dombroski 48b6cf1beb Export functions to Buildings.h 2015-01-29 13:57:50 -05:00
lethosor daf739fcec Remove FIFO support 2015-01-28 21:39:17 -05:00
Chris Dombroski c179f5b913 Extract some stuff from zone.cpp to plugins/Units.{h,cpp} 2015-01-28 21:28:32 -05:00
lethosor f98e2964e6 Fix a few Windows compilation errors 2015-01-28 20:05:24 -05:00
lethosor bebceffa5f Add Filesystem::listdir() 2015-01-28 19:15:58 -05:00
lethosor e8c0482fdc Add atime()/ctime()/mtime() 2015-01-28 18:18:06 -05:00
lethosor 2e3261565c Clean up Filesystem.h 2015-01-28 17:15:09 -05:00
lethosor fd1ba80e1f Change MOD_* to DFH_MOD_*
MOD_* constants are defined in Winuser.h on Windows
2015-01-17 09:05:45 -05:00
lethosor 077d149d64 Expose key modifier state to C++/Lua 2015-01-11 12:51:02 -05:00
lethosor 0c768796e2 Merge remote-tracking branch 'danaris/fortplan'
Conflicts:
	plugins/buildingplan.cpp
2015-01-05 16:47:35 -05:00
lethosor 6e36b224d1 Merge remote-tracking branch 'ramblurr/stockpiles'
Also update stockpiles plugin to use REQUIRE_GLOBAL()

Conflicts:
	plugins/stockpiles.cpp
2015-01-05 16:16:29 -05:00
Timothy Collett 5547722414 Initial work on fortplan plugin, including separating out code that needs to be shared with buildingplan 2014-12-23 16:56:15 -05:00
Casey Link 7072252902 fix build error on windows
with certain #include permutations the lack of this define would
break the build on windows as windows.h pollutes the namespace with min
and max macros that conflict with std::min and std::max.
2014-12-05 12:35:24 +01:00
lethosor cac2245438 Update some plugins to use REQUIRE_GLOBAL 2014-12-03 23:26:54 -05:00
lethosor e206c242c6 Add a plugin_globals vector to aid in safety checks for plugins that require globals
This allows "using df::global::foo" to be replaced by "REQUIRE_GLOBAL(foo)",
and DFHack will refuse to load the plugin if df::global::foo is NULL
2014-12-02 21:32:04 -05:00
lethosor 445640f80c Allow commands invoked through command-prompt to access selected items/units/buildings
Fixes #273
2014-11-25 20:25:31 -05:00
expwnent 798bec3ced Merge branch 'delvintemp' into develop 2014-11-15 16:28:52 -05:00
expwnent 2edc3594b8 Make it compile. 2014-11-15 16:03:36 -05:00
expwnent 3021fa47db Merge remote-tracking branches 'jjyg/develop', 'putnam/patch-4' and 'eswald/blank-histories' into develop
Conflicts:
	NEWS
2014-11-15 15:07:20 -05:00
Eric Wald c85d4994cf Preventing blank history files 2014-11-14 17:35:06 -07:00
expwnent 779ac3fd50 Updated interaction-trigger to work better. 2014-11-09 18:36:21 -05:00
Alexander Gavrilov 6046d68639 Support std::fstream in data structures and add file_compressorst to xml.
One tricky thing is that fstream does not have operator=, so the new
file_compressorst requires a manually implemented one that skips it.
2014-09-24 22:47:04 +04:00
Timothy Collett 3678c5f649 New SDL hooks to support Stonesense updates 2014-09-16 21:16:52 -04:00
Eric Wald 8631da7e4e Convenience method to collect a vector from StockpileIterator. 2014-09-07 14:10:27 -06:00
Eric Wald 567397df85 Stockpile iterator.
Efficient way to operate on all items stored on a stockpile.
Doesn't currently check whether the items match the stockpile settings,
but does ignore empty containers assigned to the stockpile.
2014-09-07 13:52:07 -06:00
Quietust deee486b81 Update Maps::SortBlockEvents to include spoors and item spatters 2014-08-20 10:51:58 -05:00
JapaMala 5add8c433d Merge branch 'develop' of github.com:DFHack/dfhack into remote_reader
Conflicts:
	plugins/remotefortressreader.cpp
2014-08-15 19:15:00 +05:30
Alexander Gavrilov 2471c4a68e Add a new API for converting between interface_key and string characters.
It's necessary now that the simple linear arrangement is broken.
2014-08-11 14:23:19 +04:00
JapaMala 36435ca8cf Merge branch 'develop' of https://github.com/quietust/dfhack into remote_reader
Conflicts:
	library/modules/Items.cpp
	library/modules/MapCache.cpp
	library/modules/Maps.cpp
	library/modules/Materials.cpp
	library/modules/Translation.cpp
	plugins/CMakeLists.txt
2014-08-08 20:54:44 +05:30
JapaMala b7c871eed7 gave t_matglossPair a few operator overloads so it can be used in std::map 2014-08-02 17:12:19 +05:30
Quietust 1450298484 assumed_identity -> identity 2014-07-29 16:30:22 -05:00
JapaMala b598cbb0dd Merge branch 'develop' of github.com:DFHack/dfhack into develop 2014-07-20 16:43:00 +05:30
JapaMala a14caa53d0 Fixed mapcache reading plants in for 0.40.01 onwards. 2014-07-20 16:41:20 +05:30
expwnent 2fb8faf3e6 Added Items::createItem function. 2014-07-03 10:39:20 -04:00
expwnent 81c87d0921 EventManager: INTERACTION event for unit interactions. 2014-07-03 04:55:12 -04:00
expwnent 4ac32cfd74 EventManager: made UNIT_ATTACK trigger for severed body parts. 2014-07-01 08:58:48 -04:00
expwnent 961d033ade EventManager: unload event for convenience. 2014-06-29 10:03:55 -04:00
expwnent 8e7e87ac73 Added UNIT_ATTACK event to EventManager and exposed it to Lua. 2014-06-28 02:31:34 -04:00
expwnent 7313c18a2a EventManager/eventful: added ON_REPORT event and exposed it to Lua. 2014-06-23 09:15:46 -04:00
expwnent 036aae060b Merge lethosor stuff. For some reason, git's auto merge message didn't happen because of git-stash shenanigans. Oh well. 2014-06-19 22:58:17 -04:00
lethosor ef69522d93 Merge branch 'develop' into filesystem-module-pr 2014-06-18 15:45:42 -04:00
Alexander Gavrilov 2db73a407d Merge branch 'manipulator_show_squad' from git://github.com/pierredavidbelanger/dfhack.git into develop 2014-06-17 10:39:26 +04:00
lethosor 6fa478de22 Filesystem module
Implements a handful of filesystem-related functions (e.g. chdir, mkdir)
in C++ and Lua.
2014-06-15 22:38:17 -04:00
Alexander Gavrilov 08b4279c4d Document better how to access fields of the interposed class. 2014-06-10 13:10:10 +04:00
Pierre-David Bélanger bdcc00f6f7 Util method (in the Units class) to get a unit squad name (the translated name, or alias if set) 2014-06-09 21:51:52 -04:00
Warmist dedd7e4185 Adds new console methods and commands to hide/show console. Only on windows (for now?) 2014-05-26 18:42:04 +03:00
Alexander Gavrilov 415cdad489 Make using new for allocating DF objects with vtables a compile-time error.
When done from plugins, it doesn't correctly initialize the vtable
because of some weird things MSVC does, so the only safe way is to
use df::allocate<df::foo>(). For consistency, it is also enforced
for code in the main library. It reveals the issue in the digging
invaders plugin, first found by warmist.

This change is linked to a modification in df-structures codegen.
2014-04-30 21:28:02 +04:00
Quietust 0f4684f29d Add Items::getItemBaseValue and Items::getValue, available from Lua 2014-04-25 11:04:21 -05:00
Quietust c3d45c3a1e Add Job::getName(job *), also available from Lua 2014-04-23 08:03:10 -05:00
Alexander Gavrilov c27c38e4c0 Remove tired or hungry siege operators from duty when at peace.
The threshold is set at the level when they start to blink - normally
they would continue on with the job until they get a thirsty/hungry
thought, but immediately run off to eat if they lose the job (thus
refusing to load the engine after firing it). The code checks for
active sieges and whether there is a free replacement unit.
2014-04-15 21:52:39 +04:00
Alexander Gavrilov fc9826389b Account for meandering movement when predicting unit path in siege engine.
The movement is random, but there is an average slowdown coefficient.
2014-04-15 19:50:23 +04:00
Alexander Gavrilov 7844907204 Add new API functions for creating announcements and combat reports.
Allow specifying the announcement flags directly, and adding unit
combat reports. Also, make announcement functions write the message
to the game log.
2014-04-15 19:50:23 +04:00
Alexander Gavrilov 788bc55096 Fix a mistake in the lua resize() method of BitArray. 2014-04-04 22:33:05 +04:00
Quietust e620ae765c Add missing import/export info for MersenneRNG::unitvector<> 2014-03-25 13:30:21 -05:00
jj 6d0e6cf7d5 remove old unused code from when dfhack was out of process 2014-02-26 12:44:10 +01:00
Alexander Gavrilov 7bdb687e4a Support calling a lua function via a protobuf request.
Previously the only way to call lua code was to call scripts
and parse their output to the stream, which is cumbersome.
2014-02-10 20:09:06 +04:00
expwnent 329741f235 EventManager: added EQUIPMENT_CHANGE event and exposed it to lua. 2013-10-24 19:32:52 -04:00
expwnent c409289ee4 EventManager: TICK events should unregister correctly when requested and after they fire, other tweaks.
- fixed unregister to allow unregistering individual TICK events
 - make registerTick return the resulting freq you have to put back in to the handler in order for it to be unregisterable
- when TICK events fire, they now automatically remove themselves from handlers[TICK], as they should
- make sure manageTickEvent fires once per tick
2013-10-20 22:54:25 -04:00