Alexander Gavrilov
1b4a24c827
Support using focus strings to limit keybinding scope.
2012-05-19 21:31:42 +04:00
Alexander Gavrilov
f37f708b37
Add a workaround for Planepacked bug in buildings constructed via API.
...
Buildings hanging in the air cause constructWithFilters to
exhibit the same behavior as a moody dwarf in a burrow excluding
the workshop, i.e. endlessly collecting the same type of reagent.
http://www.bay12games.com/dwarves/mantisbt/view.php?id=1416
The workaround monitors jobs and reclassifies the reagents on the fly.
2012-05-17 20:38:27 +04:00
Alexander Gavrilov
e9ef9b87b5
Add central locations for onUpdate and onStateChange handling in core.
2012-05-17 20:04:09 +04:00
Alexander Gavrilov
68c5d9b86c
Stop Shift-Enter from being handled as if it was Shift-M.
2012-05-16 18:10:07 +04:00
Alexander Gavrilov
7e01b004e9
Implement timeouts in the core lua context, and quicksave script.
2012-05-04 20:59:06 +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
Petr Mrázek
7946cafc86
Merge https://github.com/jaxad0127/dfhack
2012-04-16 22:37:07 +02: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
Jared Adams
f3c7a685f5
Make tiletypes more useful
...
* Paint, filter, and brush state is now saved between calls.
* Added 'all' paint option to set material, shape, special, and variant at
the same time.
* Added tiletypes-here (like liquids here, except is uses the saved brush
settings)
* Added tiletypes-here-point (like liquids here, always only the tile under
the cursor)
* Added tiletypes-command: runs tiletypes commands seperated by ';' tokens
(affects saved state)
* Make the internal workings match liquids a bit more
* Give brush objects a descriptor string
* Make Core::cheap_tokenise available
2012-04-15 08:40:19 -06: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
249be0c1a0
Change SC_MAP_LOADED handling: only NULL/not NULL change is meaningful.
2012-04-10 12:11:00 +04:00
Alexander Gavrilov
42a9b0a592
Make Core::Suspend safe in plugin_onupdate by pretending to hold the lock.
...
It is in essence true that OnUpdate owns the suspend lock, so
expose it officially to the recursive suspend lock mechanics.
2012-04-03 13:29:59 +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
Petr Mrázek
7ff728b6fc
Track world and map changes separately for plugin_onstatechange
2012-04-01 02:56:54 +02:00
Alexander Gavrilov
0f41608ed4
Pull console output support and REPL out of dfusion into core lib.
2012-03-31 15:40:54 +04:00
Petr Mrázek
d82120a3db
More fixes
...
Include unistd.h in linux process file
Fix assert in autolabor
Don't print 'script missing' error on DF start
2012-03-29 02:49:44 +02:00
Alexander Gavrilov
fe091de0b2
Fix F keys in keybindings: they obviously don't have unicode symbols.
2012-03-28 17:00:06 +08:00
Alexander Gavrilov
976fa18d72
A number of interface tweaks in RemoteClient.
...
- Associate a default output stream with the whole connection.
If not explicitly specified in the constructor, uses stdout.
- Add methods that use this default stream to RemoteFunction.
- Add easily usable wrappers for CoreSuspend and CoreResume.
2012-03-16 14:11:46 +04:00
Quietust
52aca6e05a
Rename "interface" to "interfacest" and just avoid all of these MSVC problems
2012-03-15 13:00:47 -05:00
Petr Mrázek
e5efbc5895
Merge https://github.com/angavrilov/dfhack
2012-03-15 15:40:35 +01:00
Petr Mrázek
1ac8025025
Merge https://github.com/angavrilov/dfhack
...
Conflicts:
plugins/workflow.cpp
2012-03-15 14:43:05 +01:00
Alexander Gavrilov
4eb4811777
Make the DF suspend lock recursive, and add RPC calls for batch suspend.
...
The idea is that if you have to execute many RPC calls, it is
faster to suspend once. The service class takes care to auto-resume
in the destructor in case the client just disappears.
2012-03-15 15:33:19 +04:00
Alexander Gavrilov
87f925e72e
Add support for exporting functions from plugins, with example in rename.
...
TODO: test by actually calling them remotely.
2012-03-15 13:01:23 +04:00
Alexander Gavrilov
e7851f5abd
Improve support for void RPC functions, dfhack-run, etc.
2012-03-15 11:07:43 +04:00
Alexander Gavrilov
560e977f05
Implement trivial RPC interface for dfhack via TCP & protobufs.
...
Use it to make an executable capable of calling commands remotely.
2012-03-14 19:57:29 +04:00
Petr Mrázek
d75908b95c
Merge https://github.com/ClaytonHughes/dfhack
...
Conflicts:
library/Core.cpp
plugins/workflow.cpp
Just had to fix a few minor things.
2012-03-14 01:52:58 +01:00
Petr Mrázek
b3f6bccdf6
Merge branch 'cleanups' of https://github.com/plaes/dfhack
2012-03-12 15:05:44 +01:00
Petr Mrázek
ea8a2ad9a2
Remove references to never implemented commands...
2012-03-12 15:05:23 +01:00
Clayton Hughes
4cb8995a05
Fixed script loading improperly checking for errors.
...
Also closed the file for good measure. I couldn't find any documentation that said that ~ifstream() did this.
2012-03-12 00:33:59 -07:00
Clayton Hughes
445b580ad1
Added 'script' command to load DFHack scripts from file. Syntax is the same as dfhack.init / interactive.
2012-03-11 23:31:29 -07:00
Alexander Gavrilov
8cc82d5876
Make plugins accept explicit output stream references.
...
This is an incompatible change to the plugin ABI.
The Console is not thread-safe unless used indirectly
via color_ostream_proxy, so everything should use their
per-thread stream.
2012-03-10 15:55:42 +04:00
Clayton Hughes
47bbe1a3ff
Fixed up formatting, debug messages in new Windows Hotkey stuff.
2012-03-09 01:07:47 -08:00
Clayton Hughes
3d1ce32785
Windows now detects hotkeys using the correct keyboard layout.
2012-03-09 00:56:09 -08:00
Petr Mrázek
f83db86258
Use tile buffers!
2012-03-05 02:24:02 +01:00
Petr Mrázek
a45fc82743
First pass at windowing, track df2mc, stonesense
2012-03-05 01:34:04 +01:00
Petr Mrázek
d33e9a9770
Sort layer materials in prospector by depth.
2012-03-03 23:18:12 +01:00
Petr Mrázek
7fe8762852
Get rid of Simple namespace, Gui module is now a namespace.
2012-03-03 14:38:24 +01:00
Petr Mrázek
2682c54fce
Fix horrible errors and make MSVC shut upt about non-issues.
2012-03-01 01:29:55 +01:00
Petr Mrázek
d1a1c790ec
Paint DFHack in corner if supported.
2012-02-28 18:19:13 +01:00
Petr Mrázek
95ac3db542
Fix normal hooks.
2012-02-28 12:59:02 +01:00
Petr Mrázek
731472a478
Add eggy hooks (linux only for now)
2012-02-28 03:37:56 +01:00
Priit Laes
1299b0d4c6
Don't compile Lua on UNIX
2012-02-23 13:49:07 +02:00
Petr Mrázek
2371b93b3d
move sortable to top level
2012-02-22 23:22:41 +01:00
Petr Mrázek
58e3813d56
Fix more MSVC fail, make console recognize 'man' command.
2012-02-22 19:54:07 +01:00
Petr Mrázek
34c9c2d663
Fix stonesense, MSVC fail
2012-02-21 18:30:31 +01:00
Petr Mrázek
2cd2ee9b0c
New plugin interface
2012-02-21 18:19:17 +01:00
Petr Mrázek
0b9e849096
Update submodules, sort 'ls' output.
2012-02-21 15:21:50 +01:00
Petr Mrázek
ed53ee7031
Update to use the new symbols file.
2012-02-11 19:24:44 +01:00
Petr Mrázek
8527547cbe
Merge branch 'master' into purge
...
Conflicts:
library/DataDefs.cpp
2012-02-11 18:48:17 +01:00
Alexander Gavrilov
f469fab1e6
Use globals defined by the latest codegen.
2012-02-11 16:27:12 +04:00
Petr Mrázek
8f680dcf94
Make it build and run on linux (no stonesense, df2mc, dfusion)
2012-02-09 03:07:26 +01:00
Petr Mrázek
8f1a2ebf7f
Added missing keybinding mention to 'ls', DFusion hotfix.
2012-02-06 04:47:13 +01:00
Quietust
9afcea3deb
In all loops that iterate across a vector, use a size_t as the index
2012-01-31 10:55:38 -06:00
Quietust
a82f4c9138
Cleanup code to get rid of MSVC warning C4482
2012-01-31 10:17:27 -06:00
Alexander Gavrilov
fa4fb4b407
Modify a number of commands to use CR_WRONG_USAGE for displaying help.
2012-01-28 16:03:56 +04:00
Quietust
ccad6efeb8
Remove UTF-8 BOMs
2012-01-27 09:47:14 -06:00
Quietust
902e0c4d90
Strip out old offsets from Gui module and use df::global vars where available
2012-01-24 22:18:21 -06:00
Quietust
26730dc6c2
Kill the Constructions module
2012-01-24 16:11:48 -06:00
Quietust
8861e93848
Kill the Vegetation module, replacing it with the same 3 simple methods used in Engravings
2012-01-24 12:02:12 -06:00
Quietust
f8ce959402
Kill the Engravings module
2012-01-24 11:53:49 -06:00
Quietust
cc7c7795a1
Kill the Units module, and add another pair of methods to the Items module to simplify some things
2012-01-24 11:32:34 -06:00
Quietust
466bf89578
Goodbye, Translation module
2012-01-24 10:54:12 -06:00
Quietust
e7ecda1434
Kill the Maps module
2012-01-19 21:44:17 -06:00
Quietust
fd653a0227
Kill the Items module
2012-01-16 22:12:58 -06:00
Petr Mrázek
8a46386502
Dissolve vermin module.
2012-01-08 06:59:52 +01:00
Petr Mrázek
72016d9188
Buildings aren't a module anymore, fix probe segfaults.
2012-01-08 02:22:13 +01:00
Alexander Gavrilov
6476d61e59
Update structure definitions & add the fixwagons plugin from Q.
2012-01-01 23:05:45 +04:00
Petr Mrázek
f35cdb84cd
Merge https://github.com/angavrilov/dfhack
...
Conflicts:
library/Core.cpp
library/PluginManager.cpp
library/include/Core.h
library/include/PluginManager.h
library/modules/Gui.cpp
plugins/stockpiles.cpp
2011-12-31 13:09:12 +01:00
Petr Mrázek
9db20bd84d
Header changes/cleanup.
2011-12-31 12:48:42 +01:00
Alexander Gavrilov
b652ec4132
Implement context-sensitive keybinding support.
...
Allow defining commands with guard conditions, and binding
one or more commands to alphabetic and function keys. When
the relevant key is pressed, the first listed command with
successfully evaluated guard is chosen.
For consistency, the guard is also checked when the command
is invoked from the console; this requires suspending the
core inside PluginManager, before invoking plugin code.
2011-12-31 13:25:46 +04:00
Alexander Gavrilov
2222757e77
Implement context-sensitive keybinding support.
...
Allow defining commands with guard conditions, and binding
one or more commands to alphabetic and function keys. When
the relevant key is pressed, the first listed command with
successfully evaluated guard is chosen.
For consistency, the guard is also checked when the command
is invoked from the console; this requires suspending the
core inside PluginManager, before invoking plugin code.
2011-12-30 23:25:50 +04:00
Alexander Gavrilov
4aa77f5530
Execute commands from the dfhack.init file on startup.
2011-12-30 23:11:34 +04:00
Alexander Gavrilov
b71e577771
Allow specifying parameters in hotkey commands.
...
Now that hotkeys can be set to arbitrary strings, tokenize them.
2011-12-30 18:27:55 +04:00
Alexander Gavrilov
53346328e8
Notify plugins about game being loaded or unloaded.
...
As a test, make seadwatch deactivate on these events.
2011-12-30 18:12:15 +04:00
Alexander Gavrilov
298e2fe92d
Add a plugin to rename squads and hotkeys (without the 9 char limit).
2011-12-29 17:37:07 +04:00
Alexander Gavrilov
d513e75365
Use the updated code generator with support for vtables & constructors.
2011-12-29 16:46:01 +04:00
Alexander Gavrilov
79ac2a781a
Add infrastructure necessary to use the generated headers.
...
As a usage example, allow toggling water level display and idlers,
and implement a ui tweak for easily copying stockpiles.
Also disable df2mc by default - default options shouldn't
require anything not in the base package.
2011-12-24 14:51:58 +04:00
Petr Mrázek
647916e109
Graphic module
2011-12-07 20:37:09 +01:00
Petr Mrázek
f7d78539d3
Renaming Creatures to Units
2011-12-02 10:56:40 +01:00
Petr Mrázek
44dad25690
No nullptr, propector -> prospect
2011-11-14 09:24:36 +01:00
Petr Mrázek
7e475970fb
Fix crash when using load, unload and reload commands.
2011-11-07 10:55:18 +01:00
Petr Mrázek
af46b262b5
More init hardening.
2011-11-04 09:08:29 +01:00
Petr Mrázek
f0417e12dd
Hardening.
2011-11-01 13:06:27 +01:00
Petr Mrázek
d47e9b35a0
Update stonesense, fix small text alignment error.
2011-09-04 14:16:12 +02:00
Petr Mrázek
09cb6a6828
Added exporatory mining patterns tool.
2011-08-17 13:26:03 +02:00
Petr Mrázek
03e3e9002b
Linux debug...
2011-08-16 23:39:18 +02:00
Petr Mrázek
a0f99ef707
Many tweaks to plugins, reorganized the build system and removed more cruft.
2011-08-14 08:42:21 +02:00
Petr Mrázek
81e6bce92c
Command history separated from Console.
2011-08-13 14:42:09 +02:00
Petr Mrázek
d93032de3b
Fix formatting in Core.cpp
2011-08-07 08:41:46 +02:00
Petr Mrázek
fedb6150f4
Merge https://github.com/warmist/dfhack
2011-08-06 21:00:54 +02:00
Petr Mrázek
cb93b5542e
Fix problem with running interactive commands from hotkeys.
2011-08-06 04:37:29 +02:00
Warmist
4b9786f8af
Thread safety for void* sharing part of DFHack::Core
2011-08-04 22:33:54 +03:00
Warmist
9985b5de0f
DFHack::Core modification: added a way to share void* between plugins and/or plugin unloads.
2011-08-04 22:00:21 +03:00
Petr Mrázek
6cc66d3434
Merged grow and immolate tools into plants plugin.
2011-08-02 02:21:25 +02:00
Petr Mrázek
fa970fc8fa
Hotkey commands work with TEXT mode (limited).
2011-08-01 04:40:23 +02:00
Petr Mrázek
331ada8f91
Don't take over console in TEXT mode.
2011-08-01 03:31:52 +02:00
Petr Mrázek
2a95a4edf2
Windows part of mutex rewrite.
2011-07-27 14:22:37 +02:00
Petr Mrázek
2470e564a9
Linux-side of threading function rewrite. Windows=broken.
2011-07-27 05:59:09 +02:00
Matthew Cline
41130cb613
ClassNameCheck tracks class names used
...
Each time the ClassNameCheck constructor is called it adds to the list
of class names given to it, which can later be retrieved by a class
static method.
2011-07-24 21:24:34 -07:00
Matthew Cline
86577d4f8a
Notes module
...
Gets a vector of pointers to note structs
2011-07-20 18:26:52 -07:00
Petr Mrázek
873cbd8388
Make 'die' plugin a builtin, made the console interaction less confusing.
2011-07-20 20:58:19 +02:00
Petr Mrázek
84f74bc091
Added plugin loading/unloading/reloading. Many locks. Too many damn locks.
2011-07-18 16:22:49 +02:00
Petr Mrázek
d6d108dd34
Qt plugin fixes for windows, renamed interface to df_interface in Gui.
2011-07-16 18:10:08 +02:00
Petr Mrázek
0af631aaa3
And nuke the rest of linenoise...
2011-07-14 12:28:41 +02:00
Petr Mrázek
d21b196766
Error printing call for Console, the NYAN CAT!
2011-07-14 11:15:23 +02:00
Petr Mrázek
f2b46274ec
Fix for a bug in command history queue access. dfhack script can run valgrind.
2011-07-14 08:02:29 +02:00
Petr Mrázek
96153a7b05
Merge branch 'dfapi' of github.com:peterix/dfhack into dfapi
2011-07-14 04:06:12 +02:00
Petr Mrázek
792d272fbf
Windows side of the Console rewrite
2011-07-14 04:05:27 +02:00
Petr Mrázek
a40153a8e1
Merge pull request #98 from matthew-cline/TOPIC-vermin
...
Vermin module and colonies plugin
2011-07-13 04:24:38 -07:00
Petr Mrázek
630b746cfe
Integrate linenoise into Console - Linux part
2011-07-13 11:45:30 +02:00
Matthew Cline
d1170d54c3
Vermin module and colonies plugin
...
This is the start of the vermin module. Right now it just gets a list
of the positions at which vermin are created (spawn points). Most
spawn points are invisible and transient, but colonies (ant hills and
such) are permanent and visible. The address of the spawn points vector
is only provided for Linux 0.31.25
The colonies plugin uses the vermin module to list the location and
species of colonies, and can either wipe them all out or turn them all
into honey bee colonies.
2011-07-12 23:17:51 -07:00
Petr Mrázek
3a67a4d3c7
Added linenoise library to allow line editing in the terminal.
2011-07-12 12:13:14 +02:00
Petr Mrázek
aeeece5c5f
Made kittens plugin optional, and disabled by default.
2011-07-12 00:07:59 +02:00
Petr Mrázek
fa4d2d9b2e
Removed some silly data races from using cerr...
2011-07-11 23:07:42 +02:00
Petr Mrázek
4015586d89
Eliminated the core suspend latency, possibly added a heap of race conditions. Added vdig.
2011-07-11 22:23:13 +02:00
Petr Mrázek
d894ef0ffa
Hotkey UI for linux.
2011-07-09 11:33:58 +02:00
Petr Mrázek
65d7278f53
Added a bunch of butchered SDL headers, catching SDL events on linux.
2011-07-08 03:55:37 +02:00
Petr Mrázek
56a409d9a4
sync, some map data structures, commented out some dead code
2011-07-06 11:13:36 +02:00
Petr Mrázek
b1d4163095
Fixed prospector, added the command list back, removed the plugin init console spam.
2011-06-27 04:49:56 +02:00
Petr Mrázek
00ddb45dbd
Added optional plugin_onupdate function, called each Core update.
2011-06-27 02:13:01 +02:00
Petr Mrázek
722531f590
Added destructor code for PluginManager, console color reset funstion.
2011-06-25 08:05:17 +02:00
Petr Mrázek
6fd7d42f00
Plugin manager, reworked kittens and reveal.
2011-06-25 05:35:29 +02:00
Petr Mrázek
0bb097296a
Prospector prints text again. Plugin lookup is better (ignores more non-library files)
2011-06-24 02:48:56 +02:00
Petr Mrázek
857decbcce
Plugins go into a folder, disabled console close button on windows because of bugs.
2011-06-22 18:04:22 +02:00
Petr Mrázek
8f27966540
Console revamp - windows part
2011-06-22 14:25:39 +02:00
Petr Mrázek
f8cdd95b09
Console revamp - linux part.
2011-06-22 08:14:21 +02:00
Petr Mrázek
c6dc4900d2
Very basic plugin system.
2011-06-20 04:29:38 +02:00
Petr Mrázek
f2b91d3269
Making ready for adding plugins. Fixes all over the place, more removal of obsolete parts.
2011-06-20 01:12:07 +02:00
Petr Mrázek
e0fb8f7c81
Crud removal: Context is gone. Added missing FakeSDL.h
2011-06-17 15:02:43 +02:00
Petr Mrázek
4da11927af
Kittens, now for real. Also a lightweight curses relacement. Use it, love it.
2011-06-17 02:09:03 +02:00
Petr Mrázek
93be1eb1fb
Yay, kittens! Also some license cleanup, IO thread usage, more SDL wrapping and ability to run reveal from DFHack console.
2011-06-16 23:53:39 +02:00
Petr Mrázek
22b79bb46e
Now works on Windows again, some more cleanups, added a singleton Core object for holding all the globals.
2011-06-14 16:13:28 +02:00