Commit Graph

814 Commits (f8d8baef39d44549f6bfbb6c4b55f19d12f02276)

Author SHA1 Message Date
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
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
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 c7b922250b More maps api refactoring and renaming.
getBlockAbs is a very confusing name; getTileBlock is better.
2012-04-11 12:01:27 +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 93c795cfc3 Job module api tweaks: add a namespace to match others and some funcs. 2012-04-10 11:43:36 +04: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 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 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 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
Alexander Gavrilov 2d4af4ac3e A few more utility functions for lua. 2012-04-03 20:02:01 +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 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 e3d50b9b04 Optimize wrapper: use pointers instead of strings as most frequent keys. 2012-04-01 18:34:04 +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 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
Petr Mrázek 4bac6edd79 Merge https://github.com/rh73/dfhack 2012-04-01 00:29:00 +02: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
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
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 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 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
Clayton Hughes 3d1ce32785 Windows now detects hotkeys using the correct keyboard layout. 2012-03-09 00:56:09 -08: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
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 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
Petr Mrázek 58e3813d56 Fix more MSVC fail, make console recognize 'man' command. 2012-02-22 19:54:07 +01:00
Petr Mrázek a9c9ac98fe Silence some MSVC warnings. 2012-02-22 19:28:40 +01:00
Petr Mrázek 15cc08debc Fix the fail. 2012-02-22 19:02:06 +01:00
Petr Mrázek 0807baf0c0 Merge https://github.com/mikestewart/dfhack 2012-02-22 15:22:19 +01:00
Petr Mrázek 8ee27e182a Hidden weather command raw value override 2012-02-22 15:21:29 +01:00
Mike Stewart baea253578 Merge remote-tracking branch 'upstream/master' 2012-02-21 23:31:53 -08:00
Mike Stewart 14b471a459 Add ability menu/area map width reading and writing to the Gui module, and use the new information in follow to properly center the screen regardless of menu configuration. Also general fixing and cleanup in follow. 2012-02-21 23:30:44 -08:00
Petr Mrázek 2cd2ee9b0c New plugin interface 2012-02-21 18:19:17 +01:00
Quietust d394dc406b Update t_building, change subtype into a union of all possible subtypes (depending on type) 2012-02-18 11:34:52 -06:00
Petr Mrázek 448e270421 Merge https://github.com/quietust/dfhack
Conflicts:
	plugins/mapexport/mapexport.cpp
2012-02-14 09:59:33 +01:00
Petr Mrázek bdbfbf5988 Fix catsplosion. 2012-02-14 09:37:30 +01:00
Quietust 2fd2e3dce2 Get rid of t_effect_40d and EFFECT_TYPE - they're in the XML now, and they're actually correct too 2012-02-13 21:56:47 -06:00
Quietust 2ddd3df3a8 When searching for tile types, only require candidate tile to match variant or special if it actually has them 2012-02-13 20:32:41 -06:00
Quietust d15d38d536 Finish conversion, fix compile errors 2012-02-13 19:17:38 -06:00
Quietust d0a8c2edd8 Move TileTypes to XML, part 1 - a bunch of stuff is now broken 2012-02-13 16:56:33 -06:00
Petr Mrázek f600928ec1 Move catsplosion, tweak for build targets under MSVC. 2012-02-13 17:43:41 +01:00
Quietust 9f43d61c2c Fix MapCache crash when in Arena mode 2012-02-13 09:56:35 -06:00
Alexander Gavrilov e39852ff2e Make BitArray(unsigned) treat the argument as the number of bytes. 2012-02-12 18:06:00 +04:00
Alexander Gavrilov 1047c2517d Add size-defining constructors for BitArray. 2012-02-12 17:44:19 +04:00
Alexander Gavrilov c04a140713 Add a new DfArray class to match generated headers.
Also, add working assignment and copy constructor to BitArray, and
change the unsafe conversion to int from an operator to a method.
2012-02-12 16:44:35 +04: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 aee5efe7c0 Make it run on Windows, re-added more missing globals to memory.xml 2012-02-10 02:35:51 +01:00
Quietust 952f621ee2 Synchronize with df-structures 2012-02-08 22:35:22 -06: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 f7d8635be1 Remove fat from memory.xml, simplify memory.xml loading, break
everything.
2012-02-08 13:22:42 +01:00
Quietust 0d11d1b79c Synch with structures changes 2012-02-07 15:37:21 -06:00
Alexander Gavrilov 878bc3d3a1 Implement pre-embark estimate in prospector.
Requires careful tuning of the vein density computation.
2012-02-02 22:14:49 +04:00
Quietust a82f4c9138 Cleanup code to get rid of MSVC warning C4482 2012-01-31 10:17:27 -06:00
Quietust 8a4740c479 Make all "origin" fields strongly typed, and fix building.origin to actually be meaningful 2012-01-28 14:12:41 -06:00
Quietust 9e40228767 Adjust Maps typedefs a bit 2012-01-28 13:54:59 -06:00
Quietust ccad6efeb8 Remove UTF-8 BOMs 2012-01-27 09:47:14 -06:00
Petr Mrázek 1d7ed14442 Merge https://github.com/quietust/dfhack
Re-add some get* forms of module calls.

Conflicts:
	plugins/mapexport/mapexport.cpp
2012-01-27 06:27:57 +01:00
Petr Mrázek d5d4875532 Make things work properly. 2012-01-27 05:54:26 +01:00
Quietust fe34e07d2b Re-add the ability to request simplified copies of Constructions, Engravings, and Plants; also fix the "isValid" checks for those modules to actually be meaningful 2012-01-26 20:29:59 -06:00
Quietust cfca04f2d2 Cleanup TileTypes
* Group tiletypes by 0x10 instead of by 10
* Change tile type parameters to use int16_t consistently
* Various description fixes
2012-01-26 10:38:18 -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 6d1af090c5 Tweak Engravings.h 2012-01-24 11:57:47 -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 02d75e2c94 Building module is gone, so this function doesn't exist anymore 2012-01-24 10:59:26 -06:00
Quietust 466bf89578 Goodbye, Translation module 2012-01-24 10:54:12 -06:00
Alexander Gavrilov 174d9d0739 Tweak showmood, add a few validity checks, commit a dfhack.init example. 2012-01-24 15:36:30 +04:00
Quietust ccf22bed10 Replace df_plant with df::plant - this leaves the Vegetation module a bit empty, but I'll leave it in case we decide to add something new there 2012-01-21 17:54:57 -06:00
Quietust d2c78646ea t_creaturecaste shouldn't be using t_attrib, because those AREN'T actual attribute values, just the PHYS/MENT_ATT_RANGE values from the raws 2012-01-21 13:24:38 -06:00
Quietust 7b2835e2a9 Get rid of df_name 2012-01-21 13:12:40 -06:00
Quietust 8052305c2e Cleanup the Units module 2012-01-21 13:03:39 -06:00
Quietust 118e5c6617 Major cleanup of Materials modul, precursor to eventually nuking it 2012-01-21 10:12:26 -06:00
Quietust d504479fc2 Merge https://github.com/angavrilov/dfhack 2012-01-21 09:59:54 -06:00
Quietust d9c4f259a0 These will become necessary shortly 2012-01-21 08:59:19 -06:00
Alexander Gavrilov b0cda1526e Adjust FOR_ENUM_ITEMS to account for ENUM_LAST_ITEM being inclusive now. 2012-01-21 18:50:44 +04:00
Alexander Gavrilov 2449b80010 Update to match the data definitions. 2012-01-21 17:18:53 +04:00
Alexander Gavrilov cc510a2c4b Replace DFCoord with df::coord and df::coord2d. 2012-01-20 14:28:00 +04:00
Quietust e7ecda1434 Kill the Maps module 2012-01-19 21:44:17 -06:00
Quietust 4bb724cd6c Significant cleanup of Maps module - next step will be to kill it properly 2012-01-19 14:11:52 -06:00
Alexander Gavrilov e2d7359bdd Add the gps global to Memory.xml. 2012-01-19 17:26:21 +04:00
Alexander Gavrilov 7db467a740 Update code to accomodate the new coord/coord2d/coord_path structs.
Also replicate the methods of DFCoord.
2012-01-19 14:30:22 +04:00
Quietust fd653a0227 Kill the Items module 2012-01-16 22:12:58 -06:00
Quietust 9d8c67b710 Kill the Kitchen module (which was never really a proper module to begin with) 2012-01-16 21:22:42 -06:00
Quietust a9eb555b99 Get rid of t_itemimprovement (wasn't even used) 2012-01-16 20:41:09 -06:00
Quietust 7c5835d318 t_itemref -> df::general_ref 2012-01-16 20:40:29 -06:00
Quietust c18619520d df_contaminant -> df::contaminant 2012-01-16 20:18:40 -06:00
Quietust 64b55acf37 df_item -> df::item, t_itemflags -> df::item_flags 2012-01-16 20:16:16 -06:00
Quietust 97bae19c13 Update BitArray to automatically grow whenever setting/toggling bits beyond the end 2012-01-15 18:08:35 -06:00
Petr Mrázek d972b07d57 Merge https://github.com/quietust/dfhack
Conflicts:
	plugins/autodump.cpp
	plugins/cleaners.cpp
2012-01-15 19:51:34 +01:00
Alexander Gavrilov bcb51d8ff7 Use the announcement API to report starting and stopping workflow jobs. 2012-01-15 15:39:20 +04:00
Alexander Gavrilov 0f56611edc Support showing announcements, as suggested by Q. 2012-01-15 15:19:20 +04:00
Alexander Gavrilov a31542862a Add utility functions to retrieve the selected job/unit/item.
Units can be selected via 'u', 'j', 'v' and 'k'; full-screen
unit details view not supported.

Items can be selected via 't', 'k', 'v'->inventory.

Also, when viewing a container item full-screen, the selected
contained item or unit is returned; never the container itself.

The api is used in rename to allow setting nicknames for
arbitrary units, including animals and enemies.
2012-01-14 19:31:43 +04:00
Quietust 24576ffe19 Silence annoying warning in MSVC 2012-01-11 08:54:54 -06:00
Alexander Gavrilov 7f5aa4de62 Support the most important job types in workflow. 2012-01-10 17:23:37 +04:00
Petr Mrázek 571498ea21 Vermin tweaks. 2012-01-10 00:45:43 +01:00
Alexander Gavrilov 50386f66a3 Update structures and implement modifying the job_item item type. 2012-01-09 16:20:17 +04:00
Alexander Gavrilov ea790f1346 Move a few functions into the core, and add some more. 2012-01-08 20:02:12 +04:00
Alexander Gavrilov 64a9a49ec0 Merge remote-tracking branch 'origin/master' 2012-01-08 16:19:58 +04: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 87009c0535 Add a plugin that protects specific repeat jobs from disappearing.
If they do disappear, they are re-added in a suspended state.
2012-01-07 21:47:23 +04:00
Alexander Gavrilov 07ad9ad972 Add persistent data storage in fake historical figure names. 2012-01-07 19:21:31 +04:00
Alexander Gavrilov f5e121a196 Move a bunch of stuff from the jobutils plugin into the core. 2012-01-07 19:21:07 +04:00
Alexander Gavrilov 0e90e6b78e Support multi-valued enum attributes. 2012-01-06 22:08:09 +04:00
Petr Mrázek a2cad00dbb Remove GetCustomWorkshopType, custom workshop types are now saner. 2012-01-06 01:08:30 +01:00
Petr Mrázek 72a4698968 Merge https://github.com/angavrilov/dfhack 2012-01-05 23:54:33 +01:00
Petr Mrázek 78a98de37e Fix MSVC builds, break buildings :D 2012-01-05 23:39:14 +01:00
Alexander Gavrilov 687245abd9 Allow setting job item materials. 2012-01-05 22:04:05 +04:00
Alexander Gavrilov 284009e873 Add a hotkey command to duplicate jobs in workshops. 2012-01-04 19:39:38 +04:00
Alexander Gavrilov 99dda069de Update data definitions. 2012-01-04 18:46:39 +04:00
Petr Mrázek 86464b99cc Remove DfVector, break MSVC builds until further notice. 2012-01-04 01:45:11 +01:00
Alexander Gavrilov 1d1cd63800 Implement printing job details. 2012-01-03 22:56:05 +04:00
Alexander Gavrilov f8814909a9 Move the MaterialInfo class to the main library. 2012-01-03 19:25:55 +04:00
Alexander Gavrilov fb736a8556 Support more ways to binsearch in a vector. 2012-01-03 13:07:49 +04:00
Alexander Gavrilov 326c58f793 Add a plugin to tweak inorganic materials in jobs.
It also auto-seeks in the build item list if used in that context.
2012-01-02 18:46:24 +04:00
Alexander Gavrilov bfcaca9266 Update xml defs with more ui info. 2012-01-02 15:18:23 +04: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
Petr Mrázek 1284b30f79 Merge https://github.com/angavrilov/dfhack 2011-12-31 01:40:08 +01: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 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
Petr Mrázek e6ff6b04fc Merge https://github.com/warmist/dfhack 2011-12-30 03:12:29 +01:00
Alexander Gavrilov d513e75365 Use the updated code generator with support for vtables & constructors. 2011-12-29 16:46:01 +04:00
Warmist 2643e0c5a7 Merge branch 'master' of git://github.com/peterix/dfhack 2011-12-28 22:49:31 +02:00
Petr Mrázek 51dae5a5dc Fix for minor MSVC error. 2011-12-24 14:34:10 +01:00
Petr Mrázek e9f9f9b92e Merge https://github.com/angavrilov/dfhack 2011-12-24 14:27:58 +01:00
Petr Mrázek 59c32b1ee9 Some changes required on windows. 2011-12-24 14:27:35 +01:00
Alexander Gavrilov 2eb56d0480 Make strongly-typed 'any virtual class' pointers optional.
It seems they might not work properly on msvc.
2011-12-24 17:17:01 +04:00
Alexander Gavrilov 81ad287c06 Generate very simple static functions to find objects in global vectors. 2011-12-24 16:22:10 +04:00
Warmist dc78e99f75 Added getKeys to OffsetGroup (for easy lua access to all things that memory.xml has) 2011-12-24 13:53:59 +02: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 b36e5ac248 Add missing files. 2011-12-07 20:50:37 +01: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 9dba6003bc Small Items tweak. 2011-11-30 07:42:59 +01:00
Petr Mrázek 57b5ed8fa7 Made invalid tile types really invalid, license and unused depends cleanup. 2011-11-25 18:54:50 +01:00
Petr Mrázek 9be4092c7f creature thoughts 2011-11-06 01:22:11 +01:00
Petr Mrázek da21fa1d79 MATERIAL_SOIL tweak 2011-11-04 18:51:52 +01:00
Petr Mrázek af46b262b5 More init hardening. 2011-11-04 09:08:29 +01:00
Petr Mrázek 0f42dee97a More material changes. 2011-11-03 05:01:25 +01:00
Petr Mrázek 4f0695a6d5 Messing with materials. 2011-11-03 04:30:59 +01:00
Petr Mrázek 7f6fa2a008 Add an enum for base material types. 2011-10-30 21:32:43 +01:00
Petr Mrázek 063894276c Tiny type fixes for spatter veins, updated df2mc. 2011-10-30 15:25:29 +01:00
Petr Mrázek dc12c41d86 Fix kitchen exclusion class not being exported. 2011-10-30 03:26:50 +01:00
Petr Mrázek a29bb4578f Move kitchen exclusion module methods to a source file. 2011-10-30 03:20:54 +01:00
Petr Mrázek a3a1629521 Fix seedwatch some more. 2011-10-30 02:52:25 +01:00
Petr Mrázek 4688f6557e Fix problem with magic numbers in fastdwarf. 2011-10-28 06:22:07 +02:00
Petr Mrázek e74aae6f3e Rename some plant material variables 2011-10-28 05:25:49 +02:00
Petr Mrázek bfc8df3005 Added plant raw struct 2011-10-28 04:40:35 +02:00
Petr Mrázek 61be3413e3 Make seedwatch work on linux, still with ugly hacks. 2011-10-27 03:31:13 +02:00
Petr Mrázek 335ad28fe5 Add item contaminants vector to df_item, fixed up cleanitems plugin to use it. 2011-10-27 01:08:59 +02:00
Petr Mrázek c8cd307bcf Added missing method stubs to df_item. 2011-10-26 23:47:45 +02:00
Petr Mrázek 1f0e91c3d0 Add enum for item types. 2011-10-26 23:12:20 +02:00
Petr Mrázek b545de7f43 Items refactor. readItem turned into copyItem, most Items methods now accept plain df_item * instead of the copies. 2011-10-26 22:18:13 +02:00
Petr Mrázek 866b63f567 More of the items overhaul 2011-10-25 13:30:41 +02:00
Petr Mrázek 2adf1d22eb Item description method found! 2011-10-25 05:31:37 +02:00
Petr Mrázek 04495a304c Kill item variable accessors. YES. 2011-10-25 04:48:06 +02:00
Petr Mrázek 998d85919f Windows offset for save name, some tweaks, updated stonesense submodule to current. 2011-10-23 22:23:54 +02:00
Petr Mrázek a83d9fa944 Added mouse position and designation coord, along with a 'trackpos' command for kittens plugin. 2011-09-26 03:39:27 +02:00
Petr Mrázek 83ae8d6c12 Creature likes (at least the structures are back), malloc wrapper that sets memory to 0xCC. 2011-09-25 01:29:55 +02:00
Petr Mrázek dc81367a68 Gems are now properly detected in prospector. Nuked some legacy garbage. 2011-09-24 06:48:06 +02:00
Petr Mrázek 71de950919 Possible creature variables 2011-09-21 21:48:54 +02:00
Petr Mrázek 1df71d2b7a More tweaks related to creatures, murder implication flag for items/corpse pieces. 2011-09-21 13:47:12 +02:00
Petr Mrázek dca4c43b0b Creatures module rewrite 2011-09-18 13:49:10 +02:00
Petr Mrázek e48f8af9a8 Remove stray include. 2011-08-31 14:41:46 +02:00
Petr Mrázek e5f0c7637e Fixes to help/readme entries related to digcircle. 2011-08-27 15:12:03 +02:00
gsvslto b173a59a42 Change < to " for dfhack/BitArray.h include
Unchanged, I got and error when building in MSVC++ 2010 Express

Not sure if line endings are UNIX as online edit from Windows machine
2011-08-23 10:57:37 +02:00
gsvslto 90163c4be5 Added includes for <maps> and <vector>
Without, I got errors when building in MSVC++ 2010 Express

Not sure if line endings are UNIX as online edit from Windows machine
2011-08-23 10:48:28 +02:00
Petr Mrázek 4922be0a75 Circle dig designation tool. 2011-08-22 15:18:35 +02:00
Petr Mrázek b1868f802c Make autodump fix the block-local item ID vectors. 2011-08-21 23:02:05 +02:00
Petr Mrázek 81e6bce92c Command history separated from Console. 2011-08-13 14:42:09 +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
Petr Mrázek be358ec1de Ported deramp, cleanowned and cleartask tools. 2011-08-05 00:41:31 +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 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 a36d8b0619 Merge https://github.com/warmist/dfhack 2011-07-31 23:29:34 +02:00
Petr Mrázek 9cf69164ed BitArray implementation, now used in Maps for the flags. 2011-07-30 16:47:49 +02:00
Petr Mrázek a9a3a3ff5f Merge branch 'topic_tools' 2011-07-28 02:36:25 +02:00
Warmist bc23cc9eca Made Process::setPermisions functions, to set memory page's permisions 2011-07-28 01:00:12 +03:00
Petr Mrázek 2470e564a9 Linux-side of threading function rewrite. Windows=broken. 2011-07-27 05:59:09 +02:00
Petr Mrázek d65f5596cb Ported mode, probe. Some changes required for that. 2011-07-25 10:14:58 +02:00
Petr Mrázek a8ff3d9d48 Merge pull request #116 from matthew-cline/TOPIC-items
Improved Items module and itemhacks plugin
2011-07-25 01:10:07 -07:00
Matthew Cline 109f34cd6e Improved Items module and itemhacks plugin
Items module:
* Identified flags for "owned by hostile" and "owned by trader".
* Identified an unknown uint32_t field as being the item age.
* Added and documented ClassNameCheck for more item ref types, though
  they aren't used yet (other than to mark that item ref class as a
  "known" class).
* Added method to get list of an item's unknown item ref classes.
* Made all unknown flags have name 'unk#', instead of some also having
  the name 'u_ngrd#'.

Itemhacks plugin:
* Folded second command into "dumpitems unknown", which will list
  any items which have the unknown vector field non-empty (which seems
  to be associated with tasked items).
* "dumpitems unknown" will also dump any item with a set unknown flag
  or with item refs of an unknown class.
2011-07-24 21:35:50 -07: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
Petr Mrázek bd9643c8cc Merge branch 'dfapi'
Conflicts:
	CMakeLists.txt
	library/DFProcess-linux.cpp
	library/include/dfhack-c/modules/Creatures_C.h
	library/include/dfhack/modules/Maps.h
	library/modules/Creatures_C.cpp
2011-07-23 17:29:05 +02:00
Petr Mrázek 6b6eed34cc Merge https://github.com/zilpin/dfhack 2011-07-23 17:08:15 +02:00
Petr Mrázek caf6f881df Minimize notes module. 2011-07-23 03:25:42 +02:00
Petr Mrázek 35cf108040 Fix up material color names and basic flag array type in Materials. 2011-07-22 03:54:09 +02:00
Petr Mrázek e00a4e8888 Fix ore/gem sorting. 2011-07-22 03:00:56 +02:00
Petr Mrázek 7325808c98 Fixes to materials. 2011-07-22 02:44:36 +02:00
Petr Mrázek 131c32494a Added DF material structs reversed by Quietust 2011-07-21 22:37:02 +02:00
Matthew Cline 86577d4f8a Notes module
Gets a vector of pointers to note structs
2011-07-20 18:26:52 -07:00
Matthew Cline 6631f97a6a More info on inorganic materials
Get value, wall tile, boulder tile, smelting info and strand extraction
info for inorganic materials.  Prospector uses this to separete out vein
materials into ores, gems and other.

Offsets provided for both Linux and Windows, but only tested on Linux.
2011-07-20 06:18:50 -07:00
Petr Mrázek 0defcc9889 Making Items a bit more sane. It's still using Accessors though. 2011-07-20 10:41:13 +02:00
zilpin 4eb13800cd -WriteVein(), and some convenience functions for the vein bitmaps. 2011-07-18 15:55:41 -04:00
Petr Mrázek 00cf7bc39e Merge branch 'dfapi' of github.com:peterix/dfhack into dfapi 2011-07-18 16:28:06 +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 e021199178 Merge pull request #106 from matthew-cline/TOPIC-folder
Get game's current world save folder
2011-07-17 02:26:06 -07:00
Petr Mrázek fdb5397a1d Safer console shutdown. 2011-07-17 11:06:45 +02:00
Matthew Cline a923d19f76 Get game's current world save folder
Use World::ReadWorldFolder() to get "region1" (or whatever it currently
is).  Only have offset for Linux.
2011-07-16 16:00:50 -07:00
Petr Mrázek 9f822af45a Process: added a method for getting the main module base (windows). Returns 0 on linux. 2011-07-16 23:00:28 +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 fd418cd2dc cmake cleanup in library/ 2011-07-16 07:59:36 +02:00
Petr Mrázek 459d48d75a Made the linux console super awesome. The dfhack script won't LD_PRELOAD dfhack for gdb. 2011-07-15 15:55:01 +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 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 4015586d89 Eliminated the core suspend latency, possibly added a heap of race conditions. Added vdig. 2011-07-11 22:23:13 +02:00
Matthew Cline 5c1526d6d9 creatures: read and write pregnancy counter
Also change creaturemanger to print out the ticks-until-birth for
pregnant creatures.
2011-07-11 02:48:10 -07:00
Petr Mrázek 3850954449 Hotkey input works on windows/under wine. Added skeleton for the veindigger plugin. 2011-07-10 21:07:14 +02:00