Kelly Martin
abbe0ceb8d
Fix order-of-operations oopsie in DFHack::Items::moveToInventory
2012-05-19 14:13:32 -05:00
Petr Mrázek
bc7dbe1175
Merge derp fixed.
2012-05-19 20:03:08 +02:00
Alexander Gavrilov
1b4a24c827
Support using focus strings to limit keybinding scope.
2012-05-19 21:31:42 +04:00
Petr Mrázek
51f06c78fc
Merge https://github.com/playfordh/dfhack
...
Conflicts:
library/include/modules/Items.h
library/modules/Items.cpp
2012-05-19 19:09:13 +02:00
Petr Mrázek
ba45ac42c2
Track submodules
2012-05-19 18:34:50 +02:00
Alexander Gavrilov
7774f5f2c1
Add a mechanism converting ui focus to a string representation.
...
The idea is to make ui handling more modular, dispensing with
huge functions that switch or if/else on lots of variables.
For now, used to split up functions in the sort plugin.
2012-05-19 19:50:36 +04:00
Alexander Gavrilov
4aa6dbdd00
Support sorting items in the trade screens.
...
Caveat: sorts items in containers independently from the container.
2012-05-18 19:18:49 +04:00
Petr Mrázek
1333dc569f
Merge https://github.com/Caldfir/dfhack
2012-05-18 17:42:34 +02:00
Petr Mrázek
ed6da7618a
Merge https://github.com/warmist/dfhack
2012-05-18 17:41:09 +02:00
Alexander Gavrilov
3c44e22760
Support trade viewscreens in Items::getSelectedItem.
2012-05-18 17:54:05 +04:00
Kelly Martin
51ad697bf5
Fix unresolved symbol reference in Windows platform.
2012-05-18 08:25:25 -05:00
Warmist
48185568e9
Added df::Items::moveToBuilding. Moved item from ground to building, usefull for museum forts (placing items on tables)
2012-05-18 16:05:29 +03:00
Kelly Martin
3f542b4df1
Update merge
2012-05-18 07:40:05 -05:00
Alexander Gavrilov
52426f9035
Track xml
2012-05-17 20:41:41 +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
2c0024adc9
Make Items::getPosition exactly match the DF original in behavior.
2012-05-17 19:56:55 +04:00
Alexander Gavrilov
efdb709284
Support creating rollers and stops with dfhack.buildings.constructBuilding.
2012-05-17 00:19:29 +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
dbd39af58a
Support testing and modifying pending timeout callbacks.
2012-05-16 17:06:08 +04:00
Kelly Martin
e77c9dc730
Add new PUSH_HAUL_VEHICLES labor to autolabor.
...
This commit will only work with 0.34.08 (or later).
2012-05-15 13:42:48 -05:00
harlanplayford
27ca317871
Added new method - Items::moveToInventory(...)
...
Signed-off-by: playfordh <harlanplayford@gmail.com>
2012-05-15 06:01:59 -04:00
Kelly Martin
d4f9806568
Track library
2012-05-14 17:30:21 -05:00
Kelly Martin
e078c75737
Track submodules
2012-05-14 13:44:03 -05: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
c6b52067bd
Request designation rescan in auto-growing burrows.
...
This improves performance of burrowed miners digging 1-wide tunnels.
2012-05-12 20:54:26 +04:00
Alexander Gavrilov
60bb486aba
Add api for enabling liquid and temperature updates for blocks.
...
Now updates also have to be enabled for the z level to work.
2012-05-12 20:12:09 +04:00
Alexander Gavrilov
af3e389093
Update submodules.
2012-05-12 18:50:22 +04:00
Petr Mrázek
92f069e209
Brush output lists numbers, update xml.
2012-05-11 07:00:18 +02: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
b70130cf36
Add a couple more building api functions.
2012-05-06 11:22:55 +04:00
Alexander Gavrilov
05e8083c84
Allow constructing itemless actual buildings.
2012-05-06 10:09:39 +04:00
Alexander Gavrilov
3bd44e5367
Move some things that won't work in dfhack-client to a separate file.
2012-05-05 21:07:18 +04:00
Alexander Gavrilov
81f2240c23
Fix some things that confuse MSVC.
2012-05-05 20:46:28 +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
Alexander Gavrilov
5afe2ca002
Update dfhack for specific_ref.
2012-05-03 11:47:04 +04:00
Alexander Gavrilov
28b5068382
Allow both coordinate object and (x,y,z) as arguments to getTileBlock.
2012-05-02 12:50:05 +04:00
Alexander Gavrilov
eadce95940
Add a convenience function for designating constructions.
2012-05-01 19:55:25 +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
82a0e52a3e
Add api to check the walkable cache, and update flow_forbid in liquids.
2012-04-26 18:51: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
6ab270d129
Retrieve unit noble position info, and use it in getProfessionName.
2012-04-26 12:03:56 +04:00
Alexander Gavrilov
9489c6ed1a
Add support for a few more viewscreens to Units::getSelectedUnit.
2012-04-26 11:05:35 +04:00
Alexander Gavrilov
1cd802d426
Implement unit sorting for the pen zone assignment interface.
2012-04-25 18:28:00 +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
Caldfir
035d65536b
Added in job loading to t_unit for stonesense.
2012-04-22 18:51:27 -07: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
adbd351462
Rename units.other[0] to units.active.
2012-04-21 12:46:55 +04:00
Alexander Gavrilov
0a6982f404
Enable warnings correctly on linux and fix a lot of them.
2012-04-20 13:30:37 +04:00
Alexander Gavrilov
d95cc3435f
Fix lua wrapper sizeof for static arrays.
...
Since it actually depends on the element type, it is more tricky.
2012-04-20 13:04:03 +04:00
Alexander Gavrilov
0b32d374db
Implement SOIL/STONE substitution logic, and add compat in mapexport.
2012-04-19 23:02:30 +04:00
Alexander Gavrilov
4b87f1bcac
Refactor MapCache: make it parse everything that is known re tiles & mats.
2012-04-19 19:17:07 +04:00
Alexander Gavrilov
f655a0986d
Sync to changes in the data structure definitions.
2012-04-19 11:03:29 +04:00
Petr Mrázek
d825356878
Fix windows console bug
...
Line input cursor was going crazy when input reached right side of the screen
2012-04-17 23:23:45 +02:00
Petr Mrázek
c031349a62
Track structures
2012-04-17 21:48:18 +02:00
Alexander Gavrilov
378a1fb914
Support the '#' string as index for wrapper vector insert at end.
2012-04-17 12:15:45 +04:00
Alexander Gavrilov
3beb2ebf25
Export the onStateChange event to core lua context & add some docs.
2012-04-17 11:45:09 +04:00
Petr Mrázek
7946cafc86
Merge https://github.com/jaxad0127/dfhack
2012-04-16 22:37:07 +02: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
9c25351281
Add a template to make using lua_pcallk a bit more convenient.
2012-04-16 18:01:21 +04:00
Alexander Gavrilov
3e4863bc80
Integrate coroutines with table-based error handling.
...
Properly attach stack traces to errors passing the resume boundary.
Replaces coroutine.resume and coroutine.wrap with appropriately
modified versions, and adds a Lua::SafeResume function for C++.
2012-04-16 14:45:04 +04:00
Alexander Gavrilov
48e4717dd2
Try working around some msvc problems.
2012-04-16 10:59:55 +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
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
cb27a1d839
Fix typo in the 1MB constant.
2012-04-15 11:31:05 +04:00
Petr Mrázek
fc38371b29
Clean up some chaos in old code.
2012-04-15 01:15:15 +02:00
Petr Mrázek
5f1c933b0f
Merge pull request #148 from wjrogers/feature-protobuf-api
...
Add SetUnitLabors and additional optional data to ListUnits
2012-04-14 14:56:19 -07:00
Petr Mrázek
fa063e2936
Track structures, fix trivial problem in zone plugin
2012-04-15 00:35:59 +02: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
7a34a89f53
Add burrow subcommands to modify burrow unit and tile sets.
2012-04-14 14:12:59 +04:00
Alexander Gavrilov
2f54a48e63
Add a plugin that makes selected burrows auto-grow on digging.
2012-04-13 21:41:42 +04:00
Alexander Gavrilov
37cfb1fdcd
Add unit position and container api.
2012-04-13 16:10:19 +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
38a8c43a25
Reverse-rebase the vtable pointers printed to stderr.log.
2012-04-12 11:21:25 +04:00
Alexander Gavrilov
583ccdcc0c
Support pre-initializing vtable pointers from symbols.xml
2012-04-12 10:54:53 +04:00
Alexander Gavrilov
5d5502ae34
Update the item owner modification api and export it to lua.
2012-04-11 20:10:31 +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
c7b922250b
More maps api refactoring and renaming.
...
getBlockAbs is a very confusing name; getTileBlock is better.
2012-04-11 12:01:27 +04:00
Will Rogers
8c40a27ea0
Add unit_misc_trait list to BasicUnitInfo protobuf API.
2012-04-10 20:42:23 -04:00
Will Rogers
6cf8220f28
Add SetUnitLabors protobuf API.
2012-04-10 20:41:54 -04:00
Alexander Gavrilov
59ddbfacb7
Implement item occupancy tracking in MapCache.
2012-04-10 20:19:41 +04:00
Alexander Gavrilov
b15d2da819
Get rid of some obsolete api functions, and restructure MapCache.
2012-04-10 18:21:19 +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
93c795cfc3
Job module api tweaks: add a namespace to match others and some funcs.
2012-04-10 11:43:36 +04:00
Alexander Gavrilov
0e0740fddf
Stop printall(df.global) from breaking if there are unknown addresses.
2012-04-10 10:34:03 +04:00
Petr Mrázek
585de77489
Track structures
2012-04-09 00:59:57 +02:00
Alexander Gavrilov
45ae2ed67f
Pull a few utility functions into the core and publish to lua.
2012-04-07 19:08:30 +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
2640addf49
Split LuaTools.cpp to separate core utils from general dfhack api.
2012-04-06 18:00:54 +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
28a741082f
Encode & decode names in utf-8 for transfer in remote messages.
...
That's the encoding required by the protobuf spec.
2012-04-05 18:10:16 +04:00
Alexander Gavrilov
59f411e401
Oops, forgot return statement.
2012-04-05 12:32:10 +04:00
Alexander Gavrilov
3afed43cdb
Experimental: try wrapping a dfhack api function.
2012-04-05 11:59:39 +04:00
Alexander Gavrilov
d1b27418a6
Add a World::GetPersistentData version that auto-adds if not found.
2012-04-05 11:32:23 +04:00
Petr Mrázek
a45e83ef14
Merge pull request #146 from wjrogers/feature-protobuf-api
...
Add ListJobSkills protobuf API
2012-04-04 16:46:20 -07:00
Will Rogers
1b6f5f3f34
Add additional related data to ListJobSkills.
...
Add the attributes for profession and unit_labor, and (re)name the
protobuf messages JobSkillAttr, ProfessionAttr, and UnitLaborAttr to
better reflect their content and distinguish them from e.g. the
SkillInfo message included in BasicUnitInfo.
2012-04-04 11:53:47 -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
81fb57a853
Add color output and input prompt support to core lua api.
2012-04-04 10:40:33 +04:00
Will Rogers
7e896277ec
Don't export describeJobSkills.
2012-04-03 14:22:46 -04:00
Will Rogers
59d7b6faab
Add ListJobSkills.
2012-04-03 14:03:06 -04:00
Alexander Gavrilov
2d4af4ac3e
A few more utility functions for lua.
2012-04-03 20:02:01 +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
444377f9db
Finish documenting the DFHack core lua api existing so far.
2012-04-03 13:13:44 +04:00
Alexander Gavrilov
a8fe0eccb4
Add functions for checking validity of lua wrapper objects.
2012-04-02 22:02:04 +04:00
Petr Mrázek
467f4108ae
Track structures
2012-04-02 13:42:56 +02:00
Petr Mrázek
2a998a5b8a
Merge https://github.com/quietust/dfhack
2012-04-02 13:42:18 +02:00
Quietust
06da0f9720
Fix coord/coord2d division/modulo operators to properly handle negative numbers (fixes some glitches with revflood and possibly other utils)
2012-04-01 19:44:35 -05:00
Alexander Gavrilov
d109b6570b
Add dfhack.with_suspend(f[, args...]) that calls f with core suspended.
...
The lock is properly removed in case of error, which is then propagated.
Just for fun, it also can be yielded from within in a coroutine.
2012-04-01 19:38:42 +04:00
Alexander Gavrilov
e3d50b9b04
Optimize wrapper: use pointers instead of strings as most frequent keys.
2012-04-01 18:34:04 +04:00
Alexander Gavrilov
604c84953b
Fix a bug: LookupTypeInfo cannot assume the result is userdata.
2012-04-01 17:59:47 +04:00
Alexander Gavrilov
a3e526abdb
Add df.is_instance(a,b) to check if typeof(b) is subtype of typeof(a).
...
Allows both objects and types as arguments. Also accepts nil and
primitives as b, returning nil.
2012-04-01 17:32:57 +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
Petr Mrázek
7ff728b6fc
Track world and map changes separately for plugin_onstatechange
2012-04-01 02:56:54 +02:00
Petr Mrázek
209b261284
Get rid of MALLOC_FILL build option
2012-04-01 00:30:42 +02:00
Petr Mrázek
4bac6edd79
Merge https://github.com/rh73/dfhack
2012-04-01 00:29:00 +02:00
Alexander Gavrilov
9d6e26fa5f
Fix crashing color_ostream::printerr due to vfprintf vs fprintf mixup.
...
Also enable heap clearing in gdb mode, and fix a few newlines.
2012-03-31 22:26:41 +04:00
Robert Heinrich
39787e9cd5
Renamed digging commands to uniformly start with 'dig*'(vdig -> digv etc). Added command digl, diglx (dig layerstone instead of veins). Updated readme.rst.
2012-03-31 15:41:55 +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
Alexander Gavrilov
9384f0c842
Update lua to 5.2 and fix obvious breakage due to obsolete api.
2012-03-31 12:11:43 +04:00
Alexander Gavrilov
10b610669f
Give some sensible looking names to the arrays in pregnancy_ptr.
2012-03-31 10:31:45 +04:00
Petr Mrázek
a01f512733
Track structures
2012-03-31 01:33:14 +02:00
Petr Mrázek
543f3970db
Tweak readme, bump version to 0.34.07
2012-03-31 01:13:21 +02:00
Petr Mrázek
5d8415c8d9
Merge https://github.com/warmist/dfhack
...
Conflicts:
plugins/Dfusion/luafiles/init.lua
2012-03-30 20:32:57 +02:00
Alexander Gavrilov
81bc73f435
Follow a typo fix in flag name.
2012-03-30 10:44:52 +04:00
Quietust
07bb51946f
Fix bug in MapCache - squash veins with the correct priority
2012-03-29 18:59:07 -05:00
Alexander Gavrilov
ec48405f0a
Fix mistake: static initialization code cannot access other static objects.
...
Specifically, the eid->type() call depends on the order of linking.
2012-03-29 22:56:06 +04:00
Petr Mrázek
004acdad4e
Tweaks!
...
Strip commands.clear() from all plugins
Fix changeitem - a variable name has changed in item flags
2012-03-29 18:37:22 +02:00
Robert Heinrich
cc54d5dfa9
Merge branch 'master' of git://github.com/angavrilov/dfhack
...
Conflicts:
library/xml
2012-03-29 16:12:54 +02:00
Robert Heinrich
9b75373403
Merge branch 'master' of git://github.com/peterix/dfhack
...
Conflicts:
library/xml
2012-03-29 16:03:12 +02:00
Robert Heinrich
88c914142b
added plugin changeitem (change material type and base quality)
2012-03-29 15:33:54 +02:00
Alexander Gavrilov
a9b7c74a23
Allow assigning NULL lightuserdata to pointers, and export a global.
...
Otherwise there is no way to specify NULL via recursive lua table assign.
2012-03-29 14:47:33 +04:00
Alexander Gavrilov
85c91c92d8
Implement __pairs and __ipairs for DF objects.
...
Structs enumerate fields in memory order in pairs().
Containers & biftields enumerate int indexes in ipairs, and
string keys in pairs (i.e. using index-enum for arrays).
2012-03-29 14:39:13 +04:00
Alexander Gavrilov
17ff235c81
Use codegen.out.xml instead of static.inc in cmake code generation rules.
...
Now only that file is guaranteed to always be overwritten.
2012-03-29 10:59: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
Petr Mrázek
757ad3334c
Track structures
2012-03-29 00:27:03 +02:00
Petr Mrázek
6235d2e801
Merge https://github.com/angavrilov/dfhack
2012-03-28 19:53:10 +02:00
Quietust
95ec363a7f
Merge branch 'master' of https://github.com/peterix/dfhack
...
Conflicts:
library/LuaTypes.cpp
library/LuaWrapper.cpp
2012-03-28 11:51:49 -05:00
Alexander Gavrilov
e4e643f9d2
Clear the command vector during plugin load and unload to avoid confusion.
2012-03-28 18:47:03 +04:00
Alexander Gavrilov
b7ff7681ac
Merge remote-tracking branch 'peterix/master'
2012-03-28 15:07:13 +04:00
Petr Mrázek
06188da380
Track structures
2012-03-28 12:46:50 +02:00
Petr Mrázek
40cf5fe538
Track structures
2012-03-28 11:46:23 +02:00
Alexander Gavrilov
929657bed4
Disable pointer auto-vivification unless new is specified.
...
Since it is essentially allocating non-gc managed objects,
it can lead to memory leaks and shouldn't happen invisibly.
Also support using the 'assign' key to request assign()
from another object before processing the current map.
2012-03-28 17:00:07 +08: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
b76bdad50f
Implement recursive transfer of values from lua to c++ structures.
...
E.g. df.global.cursor = { x = 1, y = 2, z = 3 }. The lua data
must be represented by raw lua tables.
For structs, the entries in the table are assigned to matching fields.
For containers, if a 'resize' field is missing or nil, the table is
treated like 1-based lua array, and the container is resized to match
its # length. Otherwise, the field must be either an explicit number,
true or false. If it is true, the size is selected by the highest index
in the table. After that, entries are copied using 0-based indices.
For pointers, the table must match the target object. If the pointer
is null, the object is auto-allocated; this can be controlled using
the 'new' field, the value of which will be passed to df.new().
2012-03-28 16:58:51 +08:00
Alexander Gavrilov
ee94894516
Disable pointer auto-vivification unless new is specified.
...
Since it is essentially allocating non-gc managed objects,
it can lead to memory leaks and shouldn't happen invisibly.
Also support using the 'assign' key to request assign()
from another object before processing the current map.
2012-03-28 11:28:42 +04:00
Alexander Gavrilov
d6e6fc483f
Fix F keys in keybindings: they obviously don't have unicode symbols.
2012-03-28 11:25:55 +04:00
Quietust
be2a7af362
Merge branch 'master' of https://github.com/angavrilov/dfhack
2012-03-27 14:14:04 -05:00
Quietust
6656852fff
win32 SetConsoleTextAttribute doesn't know what COLOR_RESET (-1) is
2012-03-27 13:22:45 -05:00
Alexander Gavrilov
bc74c5984e
Implement recursive transfer of values from lua to c++ structures.
...
E.g. df.global.cursor = { x = 1, y = 2, z = 3 }. The lua data
must be represented by raw lua tables.
For structs, the entries in the table are assigned to matching fields.
For containers, if a 'resize' field is missing or nil, the table is
treated like 1-based lua array, and the container is resized to match
its # length. Otherwise, the field must be either an explicit number,
true or false. If it is true, the size is selected by the highest index
in the table. After that, entries are copied using 0-based indices.
For pointers, the table must match the target object. If the pointer
is null, the object is auto-allocated; this can be controlled using
the 'new' field, the value of which will be passed to df.new().
2012-03-27 21:47:52 +04:00
Alexander Gavrilov
22d775f95c
Fix sscanf parsing the memory map on linux, so that dfusion loads.
2012-03-26 21:05:24 +04:00
Petr Mrázek
4e78947b10
Track structures
2012-03-26 16:13:41 +02:00
Alexander Gavrilov
157f23be5c
Fix warnings.
2012-03-26 12:42:05 +04:00
Alexander Gavrilov
00a5bfcf3e
Work around a msvc issue with spurious specialization ambiguity errors.
2012-03-26 10:46:51 +04:00
Petr Mrázek
1a19e17695
Track structures, stonesense
2012-03-26 03:39:14 +02:00
Alexander Gavrilov
d0090e9551
Fix lua wrapper: create one function identity instance per method.
...
Otherwise all methods of the same prototype are lumped into one.
2012-03-25 21:12:20 +04:00
Alexander Gavrilov
1d81cb56ba
Make enum attributes accessible through the lua wrapper.
...
TODO: make them completely read-only.
2012-03-25 19:12:59 +04:00
Alexander Gavrilov
0412aaebe4
Add a delete() method to the objects in the lua wrapper.
2012-03-25 15:48:18 +04:00
Alexander Gavrilov
7209e4d3f2
Attach static methods to the type objects in the lua wrapper.
2012-03-25 15:20:58 +04:00
Alexander Gavrilov
8d345be6e7
Expose virtual methods in the lua wrapper.
2012-03-25 14:06:05 +04:00
Quietust
947adeac83
Silence warning 4482
2012-03-24 18:18:29 -05:00
Petr Mrázek
645e5eb2c1
track structures
2012-03-24 22:44:16 +01:00
Petr Mrázek
39f722339c
Track structures
2012-03-24 17:10:45 +01:00
Alexander Gavrilov
517b2ffadb
Merge remote-tracking branch 'peterix/master'
2012-03-24 16:30:07 +04:00
Alexander Gavrilov
0c7fc233bd
Support resize/erase/insert for containers, and allow any index in BitArray.
2012-03-24 16:28:53 +04:00
Petr Mrázek
8a847dbaba
Tweaks and cleanups
...
Removed t_virtual.
Made lua use C++ compiler
Removed many silly exception types from Error.h and renamed the rest.
Removed Brush classes from tiletypes plugin.
2012-03-24 12:13:51 +01:00
Alexander Gavrilov
d865d54a90
Split LuaWrapper.cpp into two files.
2012-03-24 13:25:10 +04:00
Alexander Gavrilov
053bfe345c
Implement allocation and copy for c++ objects in the lua wrapper.
2012-03-24 12:43:53 +04:00
Petr Mrázek
90de6a1b62
Track submodules
2012-03-23 22:59:40 +01:00
Alexander Gavrilov
2b1f8aa2bb
Add a _field method that returns refs to struct and container items.
...
Hack: allocate ad-hoc pointer identities as full lua userdata.
2012-03-23 12:55:29 +04:00
Alexander Gavrilov
6b2006361d
Add a _displace method that implements offsetting a pointer by an int.
2012-03-23 11:54:59 +04:00
Alexander Gavrilov
78437310d0
Add a sizeof method/function to retrieve object/type size and address.
2012-03-23 11:30:54 +04:00
Alexander Gavrilov
ccc8fac166
Get rid of the write mode field table in metamethods.
...
Two separate tables can be confusing, e.g. if a builtin field
overrides a writable custom one only in the read table.
2012-03-23 10:56:29 +04:00
Alexander Gavrilov
ead28db451
Remove the return type from lua_read, because it always returns 1.
2012-03-23 09:38:49 +04:00
Alexander Gavrilov
27824642d9
Minor refactoring of container indexing and object allocation.
2012-03-22 10:56:32 +04:00
Alexander Gavrilov
ad10303cec
Implement bitfields and add a _kind metadata field to types and objects.
2012-03-21 20:04:37 +04:00
Alexander Gavrilov
9b78fffe92
Support containers in the lua wrapper.
2012-03-21 13:26:53 +04:00
Alexander Gavrilov
73e138c9fd
Support ordinary struct and class fields.
2012-03-20 21:34:27 +04:00
Alexander Gavrilov
6c661bcaa9
Add support for primitive type fields in lua wrapper.
2012-03-20 13:56:29 +04:00
Alexander Gavrilov
dbbd9acfad
Export the type tree with enum keys to lua.
2012-03-19 20:12:27 +04:00
Alexander Gavrilov
296d3a0af3
Skeleton type metadata for future use in lua bindings.
2012-03-19 16:59:11 +04:00
Alexander Gavrilov
bfb226b92e
Add a few comments.
2012-03-19 11:33:30 +04:00
Quietust
cf58876a8e
Need to return a value here
2012-03-18 14:42:36 -05:00
Alexander Gavrilov
d4626f9751
Add unit professions and filtering on status.
2012-03-18 15:35:38 +04:00
Alexander Gavrilov
e33414fa69
Export unit curse, squad, death and burrow info.
2012-03-18 13:52:39 +04:00
Alexander Gavrilov
415ae35dff
Add RPC calls to query some global state.
2012-03-18 12:09:06 +04:00
Alexander Gavrilov
b9ecd03fe2
Make the server suspend the core around calls unless disabled.
...
I expect the majority of methods will have to suspend the core
first thing anyway, so this will reduce typing and bugs.
Also get rid of the "me->" ugliness by splitting threadFn.
2012-03-18 11:04:15 +04:00
Alexander Gavrilov
aa63493bb8
Add a ListSquads request.
2012-03-17 20:04:15 +04:00
Alexander Gavrilov
3d80a1ee35
Use a more obscure serialize method to avoid recalculating byte size.
2012-03-17 17:52:23 +04:00
Alexander Gavrilov
368b92f81f
Add a RPC call to retrieve unit info.
...
For performance reasons, material flag arrays are changed to use ints,
with enum item name mappings retrievable via a different RPC call.
2012-03-17 17:41:56 +04:00
Alexander Gavrilov
15ccfbb086
Add a ListMaterials remote call for bulk download of basic material info.
2012-03-17 15:36:42 +04:00
Alexander Gavrilov
58eb199036
Add many new template functions for enums & bitfields.
...
An incompatible change: ENUM_KEY_STR returns std::string now.
The old behavior is available via enum_item_key_str function.
2012-03-17 12:52:22 +04:00
Alexander Gavrilov
14d6a62e1d
Move CoreService to a separate file.
2012-03-17 12:09:30 +04:00
Petr Mrázek
3168a2ef62
Add a tiletype function to get basic shapes from shapes. Track modules.
2012-03-16 20:41:07 +01: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
5464564ef6
Merge branch 'master' of git://github.com/angavrilov/dfhack
...
Conflicts:
library/xml
2012-03-15 20:12:01 -05:00
Quietust
4d66218783
Update bprobe to print civzone subtypes
2012-03-15 20:09:56 -05:00
Petr Mrázek
c72fb76316
MSVC fixage for the new socket API
2012-03-15 22:05:33 +01:00
Quietust
52aca6e05a
Rename "interface" to "interfacest" and just avoid all of these MSVC problems
2012-03-15 13:00:47 -05:00
Quietust
57a41a0deb
Fix indentation
2012-03-15 11:50:38 -05:00
Alexander Gavrilov
f84b1539a8
Change to the traits representation of enum and bitfield properties.
2012-03-15 20:46:08 +04: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
605ee9669a
Plugin-exported functions now actually work.
2012-03-15 14:06:50 +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
Alexander Gavrilov
c42e2ff053
Support crafts and add a couple of options in workflow.
2012-03-14 12:09:02 +04:00
Alexander Gavrilov
a05cbcc2de
Rename the world substruct with the save directory name.
2012-03-14 10:56:30 +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
Quietust
a4ce1fff13
Update MapCache to allow decoding tiles underneath ice and constructions, and allow revflood to take those into account
2012-03-13 15:40:38 -05:00
Quietust
8e933fb75e
Ignore the .rule file too
2012-03-13 12:17:00 -05:00
Petr Mrázek
9079ffa4ff
Add clsocket as a dependency for dfhack lib.
2012-03-13 17:10:46 +01:00
Petr Mrázek
eb4757043b
Move depends out of main library, make them (static) libraries.
2012-03-13 14:46:48 +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
Petr Mrázek
db93b548db
Check for a valid plugin_shutdown function when unloading plugins
...
Fixes related segfault
2012-03-11 23:07:38 +01:00
Petr Mrázek
32cc4c8928
Fix MSVC build error related to min and max macros
...
Tinythread was leaking those.
2012-03-10 20:47:10 +01:00
Petr Mrázek
75113b715a
Misc fixes for warnings...
2012-03-10 16:03:11 +01:00
Petr Mrázek
cff654bca6
Track structures
2012-03-10 15:51:50 +01:00
Petr Mrázek
003a0f9eb8
Merge https://github.com/angavrilov/dfhack
2012-03-10 15:51:45 +01:00
Petr Mrázek
50b7db982f
Fix zlib, protobuf.
...
Zlib is now found using CMake on linux and set to harcoded paths
on windows, yet uniform in use throughout the build system.
protobuf-lite now compiles under MSVC properly.
2012-03-10 15:31:46 +01: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
Alexander Gavrilov
b2737e2bed
Pull out a colored text output interface out of the Console class.
2012-03-10 13:29:33 +04:00
Petr Mrázek
c260aca3f1
Merge https://github.com/angavrilov/dfhack
2012-03-10 02:15:34 +01:00
Alexander Gavrilov
75c569b097
Add some experimental message definitions to the main library.
2012-03-09 21:42:22 +04:00
Alexander Gavrilov
edf77cf270
Link protobuf to dfhack core as a shared library.
...
- Change protobuf libraries to build as DLLs.
- Move some stream features to the lite library.
- Install the lite library and use it from dfhack.
Note that:
- A couple of protobuf headers had to be tweaked.
- The lite library is used because the full one is
absolutely incompatible with reloading plugins.
- Shutting down protobuf also can't be allowed.
2012-03-09 19:46:21 +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
3598282ed7
Update readme, track df2mc and structures
2012-03-07 23:40:22 +01:00
Petr Mrázek
b6df6c2eff
Track structures
2012-03-07 21:02:46 +01:00
Alexander Gavrilov
9b071097de
Fix advtools metal-detector
...
Trader items are now inside tables, and thus not in the block
item lists. Thus it is necessary to scan the global item vector
and look up blocks by coords.
2012-03-07 18:10:53 +04:00