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
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
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
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
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
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
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
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
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
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
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
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
Petr Mrázek
75113b715a
Misc fixes for warnings...
2012-03-10 16:03:11 +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
Clayton Hughes
47bbe1a3ff
Fixed up formatting, debug messages in new Windows Hotkey stuff.
2012-03-09 01:07:47 -08:00