expwnent
0db0244d08
Added add-syndrome script to modtools and fixed syndromeUtil so it actually works. This should make it so that event hooks only have to be able to run scripts instead of run scripts and add syndromes.
2014-06-27 05:47:52 -04:00
expwnent
187ce3c58b
Fixed the organization of my new lua modules. They now go in library/lua instead of where plugin lua modules go. Updated scripts accordingly.
2014-06-27 02:43:05 -04:00
Alexander Gavrilov
6f162a4e72
Verify that mkmodule is called with the correct module name.
2014-06-26 18:11:05 +04:00
lethosor
d538e13450
Allow runCommand arguments to be passed as a table internally
2014-06-16 11:16:35 -04:00
lethosor
2a01259192
Fix runCommand crash, return output and result
2014-06-10 21:38:21 -04:00
lethosor
143b1e3469
Lua runCommand improvements
...
* Return error codes (e.g. CR_FAILURE) when a command fails instead of output
* Make dfhack.runCommand() take a list of arguments as well
2014-06-10 13:41:01 -04:00
lethosor
91a93a00d2
Add dfhack.run_command (Lua)
...
Simplified version of runCommand
2014-06-07 20:31:20 -04:00
Alexander Gavrilov
6bef167f83
Add a couple of useful scripts and fix two missing NULL checks.
...
- A script to unstick jobs trying to build walls from the same tile.
- A devel script for viewing the path a unit is currently following.
2014-04-21 09:24:05 +04:00
Alexander Gavrilov
55cea36c76
Use the new API to produce combat reports for aimed siege engine attacks.
...
This requires exposing the actual operator unit to lua code.
2014-04-15 19:50:23 +04:00
Alexander Gavrilov
a09e132107
Support using multiple lua init scripts per save.
...
This should make it easier to add and remove init script code by
automated means, or install multiple mods that need such code.
2014-03-31 16:00:55 +04:00
expwnent
ce1bb1e95b
Merge remote-tracking branch 'putnam/master' into 0.34.11-r4
2013-10-20 23:27:12 -04:00
Putnam3145
4a32aff6a3
Update script.lua
2013-10-20 13:58:15 -07:00
expwnent
57fc0f3e89
Merge remote-tracking branch 'angavrilov/master' into 0.34.11-r4
...
Conflicts:
NEWS
library/xml
plugins/CMakeLists.txt
plugins/autoSyndrome.cpp
2013-10-19 20:19:29 -04:00
Alexander Gavrilov
9e81d27cd1
Implement the same random generator as DF uses for DFHack.
2013-09-30 19:46:39 +04:00
expwnent
11635caeb8
Add makeown.lua.
2013-08-31 16:15:54 -04:00
Alexander Gavrilov
03b91ca26c
Fix a problem in binpatch.lua and comment out debug messages in tweak.
2013-02-26 12:29:02 +04:00
Warmist
e4f4943b10
Merge branch 'master' of https://github.com/angavrilov/dfhack
2012-12-23 12:34:05 +02:00
Alexander Gavrilov
bb3a491d68
Implement a per-save lua init script.
2012-12-21 14:00:50 +04:00
Warmist
ff4278d04e
Removed debug spam, added support for "HAS_MATERIAL_REACTION_PRODUCT" type reactions.
2012-12-09 23:07:13 +02:00
Warmist
6c4f163a5e
Merge branch 'master' of https://github.com/angavrilov/dfhack
...
Conflicts:
NEWS
2012-12-09 14:25:31 +02:00
Warmist
4f5fdebbe9
furnaces added and custom reactions.
2012-12-09 00:53:03 +02:00
Warmist
3bce3838af
Advfort now supports workshops and siege weapons >:)
2012-12-03 21:49:17 +02:00
Alexander Gavrilov
9703d3fd8f
Detect mouse press events for lua.
2012-12-02 14:43:23 +04:00
Alexander Gavrilov
58239e97ed
Implement the history graph in the workflow status screen.
2012-12-01 16:50:03 +04:00
Alexander Gavrilov
0bfe006016
Try to reimplement the inventory monitor by falconne in lua.
...
For no other reason than to provide a complete example of lua
interface for a native plugin :)
TODO: paint the graph in the right pane.
2012-11-30 19:10:17 +04:00
Warmist
471d15ba4c
New building selection dialog.
2012-11-29 20:49:16 +02:00
Alexander Gavrilov
5ea26d9cae
Only show the advanced new constraint dialog on Shift-Enter.
...
Upon reflection it is a bit too scary to be always shown.
2012-11-29 16:27:51 +04:00
Alexander Gavrilov
94e6690586
Don't complain about fake input tokens in simulateInput.
2012-11-29 13:37:16 +04:00
Alexander Gavrilov
2953e4c386
Implement a dialog to specify a workflow constraint with all features.
2012-11-17 20:32:39 +04:00
Alexander Gavrilov
6cf85b4318
Abstract the back-end from the binpatch script, and use in gui/assign-rack.
2012-11-12 12:26:31 +04:00
Warmist
0e4df55364
Merge branch 'master' of https://github.com/angavrilov/dfhack
2012-11-11 12:46:55 +02:00
Alexander Gavrilov
bd8c59462c
Add documentation for the core lua gui library stuff.
2012-11-04 17:06:32 +04:00
Alexander Gavrilov
9598316855
Add a native pen object for lua with a more checked behavior.
2012-11-03 20:06:33 +04:00
Warmist
6be65690f7
Merge branch 'master' of https://github.com/angavrilov/dfhack into experimental-dontmerge
2012-11-02 20:29:27 +02:00
Alexander Gavrilov
e353f5f03e
Add a script to complement the weapon rack binary patch.
2012-10-27 20:16:27 +04:00
Alexander Gavrilov
1f994295b8
Consider assigned vehicles in use, and tweak text color rendering.
2012-10-25 13:20:41 +04:00
Alexander Gavrilov
8eebfa007c
Tweak the workflow gui script to make the UI operate smoother.
2012-10-25 12:15:18 +04:00
Alexander Gavrilov
a1dd31aab3
Tweak the mechanics for showing and rendering lua screens.
...
- Place new screens below any dismissed ones on top.
- When asked to render a dismissed lua screen, call render() on its
parent to avoid producing a black screen frame when unlucky.
2012-10-25 12:09:39 +04:00
Alexander Gavrilov
59ec9b304e
Implement adding workflow constraints from gui/workflow.
2012-10-24 21:49:30 +04:00
Alexander Gavrilov
616c57257d
Support changing the constraint ranges from the workflow gui script.
...
TODO: implement creating completely new constraints.
2012-10-24 19:25:06 +04:00
Alexander Gavrilov
46938625fd
Pass the hotkey keys to dwarfmode from overlays, and fix gui/workshop-job.
2012-10-21 21:45:51 +04:00
Alexander Gavrilov
dee0c97584
Add a gui script for viewing and changing job_item properties.
2012-10-20 21:57:36 +04:00
Warmist
da92fb9a1c
Start of dfusion module. Fixed small error in memscan.lua and start of custom embark command.
2012-10-17 21:43:44 +03:00
Alexander Gavrilov
1e2570f4cb
Add an extremely simple item selection dialog by wrapping ListBox.
2012-10-17 21:42:06 +04:00
Alexander Gavrilov
4f7895f571
Support restricting the set of materials presented in the dialog.
2012-10-17 18:29:15 +04:00
Alexander Gavrilov
0046b093f7
Link visibility and event handling order.
...
- Hidden widgets don't receive events.
- Children handle events in top to bottom order.
2012-10-17 11:49:11 +04:00
Alexander Gavrilov
ad4f9908fb
Extract a generic filtered list widget from the materials dialog.
2012-10-17 10:41:50 +04:00
Alexander Gavrilov
b14e4e97f5
Natively support entry icons in the List widget.
2012-10-17 09:41:48 +04:00
Alexander Gavrilov
023dc82564
Implement a material selection dialog.
2012-10-16 18:33:00 +04:00
Alexander Gavrilov
d336abfd97
Add label and list widgets, and switch stock dialogs to them.
2012-10-16 14:18:35 +04:00
Alexander Gavrilov
abfe2754fb
Start implementing common widgets for lua screens.
2012-10-15 20:03:18 +04:00
Alexander Gavrilov
33bd8103de
Extract an abstract View superclass from Screen to handle widget trees.
2012-10-15 15:30:00 +04:00
Alexander Gavrilov
33aead34b4
Implement a more automated search mode based on keys for some globals.
2012-10-02 19:53:16 +04:00
Alexander Gavrilov
bd3d3061ae
Add a module that wraps the dialogs as "blocking" coroutine functions.
2012-10-02 18:01:28 +04:00
Alexander Gavrilov
abf503fcdc
Fix the ListBox dialog to behave in a more consistent way.
2012-10-02 16:45:17 +04:00
Alexander Gavrilov
9d5adf1b2f
Update the lua screens to use the new key display string API function.
2012-10-02 15:25:59 +04:00
Alexander Gavrilov
62cde96724
Add a script to reclassify 'individual choice' weapons based on unit skill.
2012-09-29 17:21:49 +04:00
Warmist
a02a120e2d
Merge branch 'master' of https://github.com/angavrilov/dfhack into experimental-dontmerge
...
Conflicts:
dfhack.init-example
library/xml
plugins/CMakeLists.txt
2012-09-18 23:46:16 +03:00
Alexander Gavrilov
57b72831ca
Overhaul the concept of lua 'class' initialization yet again.
2012-09-18 20:30:25 +04:00
Alexander Gavrilov
94b729579e
Reindent to remove tabs.
2012-09-09 10:53:08 +04:00
warmist
8e0f3e3bce
Added ListBox to gui.dialogs
...
A listbox class. Can be either filled with table of strings, or string+callback tables. Needs some code revision :)
2012-09-09 02:28:07 +03:00
Alexander Gavrilov
bfa6ed3e08
Support setting the target area for the siege engine.
2012-09-08 13:46:02 +04:00
Alexander Gavrilov
325e294af2
Start the siege engine plugin with code to highlight obstacles on screen.
2012-09-07 19:54:32 +04:00
Warmist
0db873493a
Merge branch 'master' of https://github.com/angavrilov/dfhack into experimental-dontmerge
...
Conflicts:
dfhack.init-example
2012-09-07 17:24:38 +03:00
Alexander Gavrilov
d5ea05ebb8
Implement a pressure plate sensitive to machine power.
...
When built next to a gearbox, it will monitor its powered state.
2012-09-06 12:37:29 +04:00
Warmist
3dcaee7cb9
Merge branch 'master' of https://github.com/angavrilov/dfhack into experimental-dontmerge
2012-09-05 21:55:17 +03:00
Warmist
6fc10fc268
Fixed embark anywhere to use more sane code segment search
2012-09-05 21:52:54 +03:00
Alexander Gavrilov
8d876cc7d9
Support renaming some buildings, and arbitrary units, via gui script.
2012-09-05 21:27:42 +04:00
Alexander Gavrilov
57086ac56e
Add stock MessageBox and InputBox dialog screens for lua scripts.
2012-09-05 19:45:45 +04:00
Alexander Gavrilov
27f169e298
Provide a partial application utility function to lua.
...
Implemented in C++ for efficiency.
2012-09-05 17:37:36 +04:00
Warmist
532839a4d5
Embark anywhere ported
2012-09-01 10:54:45 +03:00
Warmist
7cabf1b843
Small bug fix
2012-09-01 10:13:08 +03:00
Warmist
d784d4bc40
Static code segment search for memscan.lua
2012-09-01 10:05:31 +03:00
Alexander Gavrilov
41ad42d0fd
Expose the liquids plugin engine to lua, and make a wrapper gui script.
2012-08-25 10:37:03 +04:00
Alexander Gavrilov
d52c54cc76
Pull some minor stuff from mechanisms into main libs.
2012-08-24 13:49:22 +04:00
Alexander Gavrilov
296f82b02f
Try using the Objective-C 'alloc + init' idiom for lua screen objects.
2012-08-24 13:28:34 +04:00
Alexander Gavrilov
e825dc5ddb
Tweak the API for current viewscreen, and dispatch show/dismiss from C++.
2012-08-24 13:20:08 +04:00
Alexander Gavrilov
c6c5ad56c9
Track lua event listener count, and let the C++ host know.
...
This allows completely avoiding the call overhead if there
are none. The downside is that the event object now has to
be a userdata with lots of metamethods.
2012-08-23 19:27:28 +04:00
Alexander Gavrilov
cf4b8a0196
Improve viewport manipulation utilities and support scroll in mechanisms.
...
I.e. allow the user to scroll around with cursor keys,
provided that keeps the cursor still visible.
2012-08-22 22:29:01 +04:00
Alexander Gavrilov
7987ea9a98
Put some compatibility features into the base dfhack viewscreen.
2012-08-22 18:18:19 +04:00
Alexander Gavrilov
6e8b68fb29
Add yet one more frame style.
2012-08-22 13:06:06 +04:00
Alexander Gavrilov
2b79582e99
Implement a policy of marking DFHack-owned screens with a signature.
2012-08-22 12:28:01 +04:00
Alexander Gavrilov
15235cc938
More work on utilities for making lua viewscreens.
2012-08-21 19:40:37 +04:00
Alexander Gavrilov
451e965936
Add a Painter class for lua viewscreens, and extract other utilities.
...
Painter clips to an arbitrary rectangle window, and
tracks current cursor and color state.
2012-08-21 11:35:39 +04:00
Alexander Gavrilov
601a3a7927
Add a script that implements a linked mechanism browser.
2012-08-20 23:04:01 +04:00
Alexander Gavrilov
cacb082416
Add a stupid example of a lua-controlled viewscreen.
2012-08-19 17:53:25 +04:00
Alexander Gavrilov
30f71ff510
Implement support for lua-backed viewscreens.
2012-08-19 14:27:44 +04:00
jj
c20951c30b
Merge branch 'master' of git://github.com/angavrilov/dfhack
2012-07-06 20:37:14 +02:00
jj
8e17ebbefc
add SC_PAUSED / SC_UNPAUSED onStateChange events
2012-07-05 18:03:02 +02:00
Alexander Gavrilov
9046fed648
Add documentation for some utility functions implemented in lua.
2012-06-24 12:51:19 +04:00
Alexander Gavrilov
bd37cc09c5
Update the Lua API document with info about scripts.
2012-06-22 20:17:55 +04:00
Alexander Gavrilov
65e82f7c12
Support controllable error presentation verbosity in lua code.
...
Use qerror to squash stack traces and location prefix.
2012-06-22 16:36:50 +04:00
Alexander Gavrilov
752da9ced5
Move formatting newly-found globals for symbols.xml to lua code.
2012-06-21 21:26:25 +04:00
Alexander Gavrilov
f207714d42
Add finders for enabler, gps and init.
2012-06-21 21:08:36 +04:00
Alexander Gavrilov
ed4acbdedb
Add a searcher for current_weather, using a prepared save.
2012-06-20 10:12:26 +04:00
Alexander Gavrilov
bd5b675fa5
Add ui_menu_width finder, tweak instructions, and add a case for win exe.
2012-06-18 21:11:54 +04:00
Alexander Gavrilov
dc6cb61979
Add more offset finders to the script.
2012-06-17 18:44:59 +04:00
Alexander Gavrilov
67536da2fe
Add an interactive script finding a limited subset of linux offsets.
2012-06-16 19:51:15 +04:00
Alexander Gavrilov
7eb4fc19de
Make dfhack.run_script usable from other scripts, and document it.
2012-06-14 12:46:12 +04:00
Alexander Gavrilov
efdb709284
Support creating rollers and stops with dfhack.buildings.constructBuilding.
2012-05-17 00:19:29 +04:00
Alexander Gavrilov
642a625586
Support custom buildings in dfhack.buildings.getFiltersByType.
...
Also document it and constructBuilding in Lua API docs.
2012-05-13 18:39:00 +04:00
Alexander Gavrilov
87ec1de891
Improve lua api for tile biome access.
2012-05-13 13:58:41 +04:00
Alexander Gavrilov
d6813c7690
Change xml submodule pointer.
2012-05-08 19:08:34 +04:00
Alexander Gavrilov
191071beb6
Add more lua scripts.
2012-05-08 12:55:06 +04:00
Alexander Gavrilov
fca618ff1b
Support default building inputs in dfhack.buildings.constructBuilding.
2012-05-06 19:11:29 +04:00
Alexander Gavrilov
9ad8d767b4
Add code for adding abstract buildings and removing constructions.
2012-05-06 19:09:11 +04:00
Alexander Gavrilov
d4d6349f48
Expose builtin commands to dfhack-run, and add lua script support.
...
Move builtin command implementation to Core methods, and fall
back to hack/scripts/*.lua for otherwise unrecognized commands.
2012-05-04 19:47:18 +04:00
Alexander Gavrilov
4cffb6428d
Update building creation code with new knowledge, and fix zone.
...
Also, document new lua api, and add a more convenient wrapper.
2012-05-01 18:55:30 +04:00
Alexander Gavrilov
2303a25bde
Implement unconstructed building instance creation and linking into world.
...
For more flexibility, the base api is split into 3 phases:
alloc, setSize, and construct. No support for non-actual
buildings like stockpiles and activity zones at the moment.
2012-04-29 21:07:39 +04:00
Alexander Gavrilov
16ee049664
Split off the burrows api from Maps and Units.
2012-04-26 12:56:28 +04:00
Alexander Gavrilov
763a301b4f
Add a few more lua api functions, documentation, and unit sort orders.
...
Units::getProfessionName appears to work correctly for
everything except nobles.
2012-04-23 21:30:53 +04:00
Alexander Gavrilov
125cd6622a
Support sorting units in many more ui contexts.
2012-04-22 19:22:00 +04:00
Alexander Gavrilov
2ef321a208
Preserve the original lua global environment for modules.
...
The intent is to prevent accidental pollution of module namespaces
by globals defined from careless scripts running in the _G environment.
2012-04-21 20:15:57 +04:00
Alexander Gavrilov
4af051bab3
Add a few more unit orderings, and a way to reverse direction.
2012-04-21 16:53:17 +04:00
Alexander Gavrilov
3282ac3db2
Add a hotkey command that sorts units in lists using lua comparators.
2012-04-21 15:43:52 +04:00
Alexander Gavrilov
3beb2ebf25
Export the onStateChange event to core lua context & add some docs.
2012-04-17 11:45:09 +04:00
Warmist
17d5b2de04
Multiline interpreter.
...
To test try writing for k,v in pairs(table) do <enter> print(k) <enter> end
Also prompt could be changed (couldn't think of anything better).
2012-04-16 18:46:20 +03:00
Alexander Gavrilov
1e64a6a2f6
Make dfhack.lineedit automatically interact with RunCoreQueryLoop.
...
It still falls back to the original waiting mode if yield fails.
2012-04-16 18:05:42 +04:00
Alexander Gavrilov
a1756a864c
Implement a way to do prompts from core context.
...
The trick obviously is doing it without forcing DF to wait suspended.
Fortunately, lua has built-in coroutine support, so the interactive
prompt can simply yield and rely on the external loop to do the job.
To use this however the REPL had to be replaced with lua code.
2012-04-15 21:50:22 +04:00
Alexander Gavrilov
14709e5d45
Add an official core lua context, and allow plugins to send events to it.
...
- This context requires core suspend lock and asserts it in a few places.
- Special 'event' objects are introduced. They can be invoked as
functions, in which case they iterate all their fields and call
them as functions. Errors are printed and consumed.
- When a plugin is opened by the core context, events registered in
a special array are linked to it. The system is organized so as to
avoid even trying to pass the event to lua if the module isn't loaded.
2012-04-15 19:09:25 +04:00
Alexander Gavrilov
cb49c92b99
Allow plugins to export functions to lua with safe reload support.
...
- To ensure reload safety functions have to be wrapped. Every call
checks the loaded state and locks a mutex in Plugin. If the plugin
is unloaded, calling its functions throws a lua error. Therefore,
plugins may not create closures or export yieldable functions.
- The set of function argument and return types supported by
LuaWrapper is severely limited when compared to being compiled
inside the main library.
Currently supported types: numbers, bool, std::string, df::foo,
df::foo*, std::vector<bool>, std::vector<df::foo*>.
- To facilitate postponing initialization until after all plugins
have been loaded, the core sends a SC_CORE_INITIALIZED event.
- As an example, the burrows plugin now exports its functions.
2012-04-14 19:44:07 +04:00
Alexander Gavrilov
2d8611a480
Add core api for moving items between ground and containers.
2012-04-12 18:37:27 +04:00
Alexander Gavrilov
0c2b78b96b
Add api for manipulating burrows to the core.
2012-04-11 19:42:05 +04:00
Alexander Gavrilov
61245711f7
Export a few maps functions to lua.
2012-04-11 16:20:16 +04:00
Alexander Gavrilov
e74788cb26
Add a generic facility for object finalization during stack unwind.
...
Supports two modes of finalization:
- try {...} finally {...}
- try {...} catch { ...; throw }
Argument passing discipline is designed with vararg tail calls in mind.
2012-04-07 14:21:38 +04:00
Alexander Gavrilov
0daafef690
Wrap MaterialInfo for lua.
2012-04-06 19:56:19 +04:00
Alexander Gavrilov
903e9ee716
Export a few more functions to lua.
2012-04-06 11:21:28 +04:00
Alexander Gavrilov
9eed9f0d24
Wrap a few utility functions defined on the c++ side for lua.
2012-04-05 19:55:59 +04:00
Alexander Gavrilov
7efbd798ce
Upgrade lua errors to structures when attaching stack trace.
...
This allows detecting when it's re-thrown and avoiding attaching the
stack twice, and so on. Would also be useful if debugging is added.
2012-04-04 13:34:07 +04:00
Alexander Gavrilov
2d4af4ac3e
A few more utility functions for lua.
2012-04-03 20:02:01 +04:00
Alexander Gavrilov
edd63080b5
Only print the shortcut help once in the lua interactive mode.
2012-04-01 17:00:25 +04:00
Alexander Gavrilov
afe4eba957
Improve performance of the persistent data api, and wrap it for lua.
...
Use an stl table for string keys to avoid linear cost of lookup.
This uncovered a bug in the new luaL_getsubtable function.
2012-04-01 16:43:40 +04:00
Alexander Gavrilov
a9a6fbd8b5
Lua tweaks: a couple of functions, dfusion tweak, backtrace metadata.
2012-04-01 12:50:56 +04:00
Alexander Gavrilov
0f41608ed4
Pull console output support and REPL out of dfusion into core lib.
2012-03-31 15:40:54 +04:00