Commit Graph

1296 Commits (940f7de0d29a13e67887cb5b903a32b8f55e443f)

Author SHA1 Message Date
Ryan Williams 785fe9aa3a fix "info" level described as "error" level 2022-05-14 05:56:57 -07:00
Tim Siegel 55e4008925
MiscUtils: teach word_wrap() to optionally preserve whitespace 2022-05-09 13:42:11 -04:00
Ryan Williams f565de88e8
Fix stuff (#4)
* Update Lua API.rst

* Update Gui.h

* Update Gui.cpp

* Update LuaApi.cpp
2022-05-01 22:53:53 -07:00
Ryan Williams 89ed9950c7
Update Gui.h
Added parseReportString, which parses a string using '&' as a control character (&r as newline, && as &) and cuts to a certain length w/o splitting words.

Added autoDFAnnouncement, which takes a report_init and a string, and handles them like DF does.
Added variants to log unprinted announcements and to build the report_init from arguments.

Added pauseRecenter, which recenters on an xyz coord (item style, not unit) and optionally pauses, while respecting pause_zoom_no_interface_ms.
Added variant that takes a pos.

Added recenterViewscreen, which recenters on an xyz coord using a report zoom style (item, unit, generic. revealInDwarfmodeMap calls "unit" style "center". Generic style ignores coords and just enforces valid view bounds.)
Added variants that take pos or use current cursor coords.
2022-04-24 22:32:41 -07:00
Josh Cooper 9c9a7ef99a Adds consistent interface signatures for Maps module 2022-04-21 19:40:58 -07:00
Josh Cooper 251f4f92c8 Fixes build errors 2022-04-18 23:53:23 -07:00
Josh Cooper d6b2629cfc Adds hash functions and operator overloads for event data structures 2022-04-18 23:53:23 -07:00
lethosor d1f0edd33b
Apply initial pre-commit config 2022-04-12 14:48:19 -04:00
Myk 257e7a3dfd
[core] Debug logging facelift (#2060)
* route 'Loading script...' messages through the debug logging framework
  * they are now controllable via debugfilter. to turn off, add this to your dfhack.init file: debugfilter set Warning core script
* clarify debug logging docs
* prevent DEBUG messages from being compiled out of the binary
* recolor INFO messages so they blend into existing console output
* add configuration interface for log message header elements so they are individually configurable. all default to off
2022-03-30 14:46:09 -07:00
Myk 2df6980237
fix crash in eventful due to misaligned fn map (#2059)
also add warnings in eventful and EventManager to prompt devs to keep them in sync
2022-03-29 12:51:21 -07:00
Josh Cooper b18eff9ce2
Revert EventManager to previous behavior, but keep new events
Fixes #2031
2022-03-29 09:42:24 -07:00
Ryan Williams 88b403ec7a
Add functions reverse-engineered from ambushing unit code (#1992)
* Add functions reverse-engineered from ambushing unit code

* Fix whitespace

* Fix debug_showambush check

* Remove getOuterContainerRef from Lua API

Don't think this works properly without allocating a new specific_ref. More trouble that it's worth.

* Fixed tile visibility check

* I don't think gamemode or gametype are ever NULL

* Minor tweaks to documentation

* Reimplement getOuterContainerRef for Lua; fix some comments

* Update Units.cpp and changelog

* Update Units.cpp
* Update changelog.txt
2022-03-13 17:19:35 -07:00
Quietust aa1bc3fe52 Cleanup Kitchen module (and the seedwatch plugin which uses it) 2022-03-12 12:04:34 -08:00
Josh Cooper ba5710f263 Adds new event type NEW_UNIT_ACTIVE 2022-03-12 11:33:27 -08:00
Josh Cooper fb51e2d8b5 Adds comments to members of EventHandler 2022-03-12 11:33:27 -08:00
Josh Cooper 24255d3195 Adds event type JOB_STARTED 2022-03-12 11:33:27 -08:00
Josh Cooper f5ced46608 Refactors EventManager
- handler freq now works on an individual handler basis (set to 0 to fire as frequently as possible)
- tick events no longer need to be re-registered after every eventful tick
2022-03-12 11:33:27 -08:00
Josh Cooper 12df6d14e9 Improves documentation for plugin writing 2022-03-12 11:33:27 -08:00
myk002 e9eef31344
refactor list item removal into a library fn 2021-08-19 19:51:25 -07:00
myk002 5b960b97bc
fix comment for Maps::getSize(); add getTileSize() 2021-07-30 13:09:12 -07:00
Ryan Williams c5fb28a13c
Rename getPlantAtCoords to getPlantAtTile 2021-06-23 23:00:30 -07:00
Ryan Williams d81de5e4c7
Add getPlantAtCoords function to Maps namespace
Derived from disassembly of DF code. Returns a pointer to plant struct that owns the tile at position. Useful for finding a tree from one of its branches. Lua API support.
2021-06-22 20:01:10 -07:00
lethosor 2fc5fbacb5
Merge remote-tracking branch 'myk002/myk_reveal_unhideFlood' into develop 2021-06-19 01:08:05 -04:00
myk002 fc860478e4
move fastdwarf's teleport code to Units module
and expose in Lua API
2021-06-06 08:48:32 -07:00
myk002 fb8d6614c7
expose core flood unhide logic to Lua
refactor is a straight copy-paste. this code could really stand some
cleanup (unused vars, unnecessary use of the MapCache layer, forced
allocation of all blocks even if they are not being unhidden, etc.), but
that can come in a later PR.
2021-06-02 14:49:19 -07:00
myk002 aff5c9bf35
add getCursorCoords overload for df::coord
and factor out active cursor detection
2021-05-15 12:05:00 -07:00
lethosor dfb52a2aba
Merge remote-tracking branch 'lethosor/command-prompt-fix-gui-scripts' into develop
Conflicts:
	docs/changelog.txt
2021-04-02 21:53:14 -04:00
Ben Lubar c06d1f8e52
tagged union support for lua (#1818) 2021-03-30 15:55:06 -05:00
lethosor 59b023c71d
Ensure that command-prompt is dismissed after a command creates a new screen
Fixes #1803

Running a command that created a new screen would previously result in a screen
order that looked like this, due to how `Screen::Hide` works:

- DF screen
  - `command-prompt` screen (dismissed)
    - New screen

The `command-prompt` screen remained on the stack until the new screen was
dismissed, so it would intercept viewscreen vmethod calls intended for the
DF screen.

This change adds a new behavior to `Screen::Hide` that results in this screen
order after running a command:

- DF screen
  - New screen
    - `command-prompt` screen (dismissed) - DF removes this screen immediately
2021-03-21 20:42:50 -04:00
myk002 6819ee9928
make alchemist flag valid for controllable civs 2021-02-05 16:45:39 -08:00
myk002 3ba984c22c
only reset extents if they are unusable
this allows callers of Buildings::setSize() to "pre-initialize" the
extents to declare non-rectangular structures. this allows quickfort to
create non-rectangular stockpiles, farm plots, zones, etc. the extents
are still reset as before if the size of the building doesn't match the
caller's expectations.

this commit also fixes a memory leak when setSize() allocates memory for
extents, but the memory is not deallocated if the building is ultimately
invalid for some reason.
2020-12-16 11:10:47 -08:00
lethosor 8cb38ecf5b
Merge remote-tracking branch 'myk002/myk_metalhead_mario' into develop 2020-11-13 14:04:30 -05:00
myk002 10616a387f
cleaner mask-based implementation 2020-11-12 22:44:38 -08:00
myk002 02a86d761a
identify bars as non_economic items
allows Job::isSuitableMaterial() to match metal bars as a building
material
2020-11-12 19:10:06 -08:00
lethosor 913d860ae4
Use initial working directory as process path on Linux, and expose to Lua 2020-11-12 19:07:51 -05:00
lethosor 23b230495e
Merge branch 'develop' into cwd-handling 2020-11-12 18:44:05 -05:00
lethosor ce7772a1c2
Add Filesystem::restorecwd()
This allows restoring the working directory to its original value, which may not actually be the DF root. See #1671, dfhack/scripts#152
2020-10-14 21:22:53 -04:00
Myk Taylor 9d2abafefc Merge branch 'buildingplan_refactor' into buildingplan_refactor2_squashed 2020-10-11 12:11:51 -07:00
Myk Taylor 4d7f4d80ad prep buildingplan for core algorithm changes
player-visible changes
- removed text that showed up if you used the wrong hotkeys. no other
  dfhack screen does this, and it seems unneeded. can add back if others
  think otherwise, though

internal changes
- changed signature of lua-exported isPlannableBuilding to take subtype
  and custom type in addition to building type. this is only used by
  quickfort, and it already sends all three params in preparation for
  this change
- added lua-exported scheduleCycle(), which is like doCycle(), but only
  takes effect on the next non-paused frame. this lets quickfort
  run only one buildingplan cycle regardless of how many #build
  blueprints were run
- declared a few dfhack library methods and params const so buildingplan
  could call them from const methods
- converted buildingplan internal debug logging fn to have a printf api
- reshaped buildingplan-planner API and refactored implementation in
  preparation for upcoming core algorithm changes for supporing all
  building types (no externally-visible functionality changes)
  - changed df::building_type params to type, subtype, custom tuple keys
  - introduced capability to return multiple filters per building type
    (though the current buildings all only have one filter per)
- split monolith hook functions in buildingplan.cpp into one per scope.
  this significantly cleans up the code and preps the hooks to handle
  iterating through multiple item filters.
- got rid of send_key function and replaced with better reporting of
  whether keys have been handled
2020-10-04 20:05:08 -07:00
George Murray a3c565b243 Add to_search_normalized to search for characters with accents 2020-09-24 07:31:10 -07:00
lethosor 65b8071941
Use typedefs from xlsxio in PluginStatics.h
The typedefs in the header foward-declared new structs of the same names in the DFHack namespace, e.g. DFHack::xlsxio_read_struct. Apparently the constructors that used these typedefs are not inlined on Windows, so libdfhack was compiled with a constructor taking a "DFHack::xlsxio_read_sheet_struct", and xlsxreader was looking for a constructor taking just a "xlsxio_read_sheet_struct", which didn't exist.
2020-09-18 15:05:17 -04:00
lethosor 8779ca0659
Merge remote-tracking branch 'myk002/quickfort_civzones' into develop 2020-08-21 00:34:26 -04:00
Myk Taylor e546d3eec3 rename is_civzone to the more general allow_wall 2020-08-15 20:13:48 -07:00
Myk Taylor ae872e812f properly detect valid tiles for civzones 2020-08-15 17:24:12 -07:00
Myk Taylor bda678bcd4 add some explanatory text to the top of the header 2020-08-11 19:47:04 -07:00
Myk Taylor 39ae2d95fc 2nd attempt to solve compilation errors on windows 2020-08-11 17:06:28 -07:00
Myk Taylor 4f88bb4c3d attempt to solve compilation error on windows 2020-08-11 16:54:53 -07:00
Myk Taylor 0bda289b17 move xlsxreader identity statics to dfhack lib 2020-08-11 14:51:17 -07:00
Myk Taylor a41f7c0998 convert XlsxReader module to xlsxreader plugin 2020-08-09 08:54:42 -07:00
Myk Taylor 18f4786458 Merge remote-tracking branch 'upstream/develop' into quickfort_xlsxio 2020-08-08 17:17:45 -07:00
Myk Taylor 89a6309788 build xlsxio and link it into dfhack, add lua api 2020-08-08 15:24:12 -07:00
lethosor 8c5b21b7ee
Fix a couple warnings in the Units module (#1615) 2020-08-08 14:35:12 -04:00
Ryan Bennitt 9510dd52e1 Add Goal to Manipulator Detail Modes 2020-08-04 23:01:28 +01:00
Myk Taylor e17d492203 address PR review comments on api docs 2020-07-23 21:55:05 -07:00
Myk Taylor 16cfd34678 recurs-ify default config copying logic
I refactored Filesystem::listdir_recursive to support removing the path
prefix from the returned files list. There are no current calls that
make use of the prefix parameter, so I converted it into a boolean.
Current usages will use the new default parameter and will not see any
changed behavior.
2020-07-18 22:22:37 -07:00
Myk Taylor bb91fdcf8c Merge remote-tracking branch 'upstream/develop' into blueprint_in_blueprints 2020-07-16 09:24:52 -07:00
Myk Taylor c19fc1f349 gcc-4.8 compatibility 2020-07-15 21:35:21 -07:00
lethosor a44a2e2298 Merge branch 'develop' into lua-ref-target 2020-07-14 01:31:23 -04:00
Ben Lubar f20446534b
fix DfOtherVectors computed size 2020-05-14 14:01:12 -05:00
Ben Lubar 6c20fe4c80
implement df-other-vectors-type for lua 2020-05-09 18:28:40 -05:00
Ben Lubar 7cf9624de9
add assert to make sure other_id array index is in bounds 2020-05-09 18:28:40 -05:00
Ben Lubar fc10ed3df6
Implementation for df-other-vectors-type in C++. Still needs Lua and Ruby support. 2020-05-09 18:28:40 -05:00
lethosor 9e085b66ac Merge branch 'develop' into lua-ref-target 2020-04-27 23:24:29 -04:00
lethosor 7c1d1c43e5 Merge remote-tracking branch 'PatrikLundell/stocks' into develop
Conflicts:
	docs/changelog.txt
2020-04-25 21:12:27 -04:00
lethosor 125f4b129b Add ref_target attribute to primitive field references 2020-04-09 00:02:07 -04:00
Ben Lubar 6b810b97a0
DataDefs.h can have little a documentation 2020-04-07 13:46:44 -05:00
Ben Lubar b29d009b14
update structures; implement struct_field_info_extra 2020-03-21 13:21:35 -05:00
Ben Lubar ffb3c29cfc
simplify Graphic module. update structures.
it appears that all this added complexity including an extra pointer dereference was to avoid including the vector header.
2020-03-08 00:12:48 -06:00
Ben Lubar a214e00407
allow union vectors to have tags that are bit vectors if they have exactly 2 members 2020-03-06 16:48:33 -06:00
Ben Lubar fa574cfbec
allow dfhack-run to output colors.
refactor Console-posix to avoid having a parameter equivalent to not calling the function at all.
2020-03-06 15:02:03 -06:00
Ben Lubar 84cae060b1
move find_union_tag from check-structures-sanity to DataDefs.h 2020-03-04 18:23:49 -06:00
Ben Lubar 18523a1821
Convert untagged unions to tagged. Fix some edge cases in check-structures-sanity union checking. 2020-02-29 15:08:39 -06:00
Ben Lubar 94e818fd53
reference union_identity in the df namespace 2020-02-29 13:26:42 -06:00
Ben Lubar 3ddbb5cec1
fix typo 2020-02-29 13:24:12 -06:00
Ben Lubar a30678cee3
subclass struct_identity for unions 2020-02-29 13:11:23 -06:00
Ben Lubar 0d36e62d81
fix some weird uses of the part of speech enum 2020-02-18 16:39:39 -06:00
Ben Lubar 9caf6e97e6
add -enums, -sizes, and specific starting point flags to check-structures-sanity 2020-02-14 19:47:26 -06:00
Ben Lubar 0243e422e5
Allow plugins to define subclasses of dfhack_viewscreen that have their own virtual_identity. 2020-02-07 16:00:14 -06:00
Ben Lubar 321d948f8d
Fix crash on missing symbols.
Fixes #1487.
2020-02-03 20:21:10 -06:00
PatrikLundell 121497a466 Propagated getBookTitle to Lua 2020-01-26 11:47:47 +01:00
PatrikLundell 876ac6c056 Renamed to getBookTitle, cut down on virtual_cast 2020-01-25 21:46:10 +01:00
PatrikLundell c6bbf39c6c Issue #1262. Added Items::getTitle and used in stocks 2020-01-25 12:43:02 +01:00
lethosor 5eca50476e Merge remote-tracking branch 'nornagon/unit-description' into develop 2020-01-13 23:31:23 -05:00
Jeremy Apthorp 50e696acf6 getDescription => getPhysicalDescription 2019-12-14 09:36:47 -08:00
Jeremy Apthorp 7fce6fe0b0 move THISCALL define to header, clean up code a little 2019-12-13 23:54:27 -08:00
Jeremy Apthorp 910f965838 wip 2019-12-07 22:17:59 -08:00
lethosor ca7d0f1cac Add algorithm include for MSVC 2019-10-03 23:26:57 -04:00
lethosor f3658db85f Merge branch 'develop' into avoid_rebuilding_df_statics_if_core_h_changes 2019-10-03 23:23:36 -04:00
lethosor 07575095fd Merge branch 'develop' into persist 2019-08-22 22:00:50 -04:00
lethosor 99038c395a Merge remote-tracking branch 'ab9rf/biometype' into develop 2019-07-20 16:32:46 -04:00
Pauli 49f3de979f Make ServerMain and ServerConnection data race free
RemoteServer and PluginManager side would need complete redesign to be
data race free and concurrent. But as that would be unlikely to be
required from DFHack I decided simpler solution that is fixing data
ownership to a thread and all ServerConnection share a single lock which
allows access to PluginManager and Core.
2019-07-18 23:05:11 -04:00
Pauli 0605b9601c Make Core::started thread safe 2019-07-18 23:05:11 -04:00
lethosor 5b11d14c6c Rename save/load to "save data"/"load data" 2019-05-29 19:52:03 -04:00
lethosor ceebef5fe2 Merge branch 'develop' into persist 2019-05-28 21:08:16 -04:00
Pauli f0632347d0 Remove Core.h include from DataDefs.h
Core.h isn't required for DataDefs.h which removes Core.h dependency
from DataStatics*.
2018-12-30 17:08:42 -05:00
lethosor a2f8742128 Merge remote-tracking branch 'suokko/runtime_debug_prints' into develop
Also fix and reorganize changelog
2018-12-27 16:28:25 -05:00
lethosor 13c6bfc1b2 Merge remote-tracking branch 'sgayda2/memory_fixes' into develop 2018-12-22 11:54:31 -05:00
Ben Lubar a672ffcb95
Use viewscreen_savegamest instead of viewscreen_optionst 2018-08-26 19:05:44 -05:00
Ben Lubar 4e690df96a
Add Persistence module.
Alter World to use Persistence instead of storing data in historical figures.

Fake historical figures will be converted to the new format when a world is loaded.

Added plugin_save and plugin_load functions to the plugin API.

Made the weird int7/int28 code that was in the old persistence API slightly safer.
2018-08-26 18:27:58 -05:00
Kelly Kinkade 59d70d6687 Add function to infer biome type to Maps module
This moves code intended to infer biome type currently living in a
couple of plugins into the Maps module, so that this code can be shared
more easily by multiple plugins, as discussed in #1392.
2018-08-15 20:28:18 -05:00
Lethosor 9bd5ecd738
Merge pull request #1372 from BenLubar/dfhack-viewscreen-identity
Add an identity to dfhack_viewscreen and dfhack_lua_viewscreen.
2018-07-26 16:06:24 -04:00
Ben Lubar 4837e65322
Add an identity to dfhack_viewscreen and dfhack_lua_viewscreen. 2018-07-22 17:31:39 -05:00
Stoyan Gaydarov 38cccdb0f4 Update the module create calls to return unique_ptrs 2018-07-14 19:55:25 -07:00
Stoyan Gaydarov 6f90273bb6 More usage of smart pointers throughout core and version info. 2018-07-14 19:55:25 -07:00
Stoyan Gaydarov 6cfd987c0d Remove an outdated comment, with c++11 enabled the code is thread safe 2018-07-14 19:51:46 -07:00
Stoyan Gaydarov 12c8046f90 Some memory management changes for Core 2018-07-14 19:51:46 -07:00
Stoyan Gaydarov b5ddde8475 Use a shared_ptr to avoid having to manage VersionInfo vector memory 2018-07-14 19:51:46 -07:00
Stoyan Gaydarov c127ceab96 Use a unique_ptr for VersionInfo to avoid worrying about memory 2018-07-14 19:51:46 -07:00
Pauli bc8b8ef256 Use configure_file to optimize incremental builds for git-describe.h 2018-07-13 16:07:46 +03:00
lethosor 9ee368d456 Merge remote-tracking branch 'suokko/MapCache_reduce_latency_from_designation_to_jobs' into develop 2018-07-11 11:51:24 -04:00
lethosor 7afa3690bf Add support for DFHACK_BUILD_ID
Used for BuildMaster builds, for example
2018-07-11 11:47:55 -04:00
lethosor fa8c6724f6 Merge remote-tracking branch 'suokko/dlsym_libgraphics' into develop 2018-07-10 12:25:11 -04:00
lethosor 06511340ab Merge remote-tracking branch 'BenLubar/proto-docs' into develop 2018-07-10 11:26:31 -04:00
Pauli ca5c11603f Support dlsym loading from libgraphics vtables 2018-07-10 17:08:23 +03:00
lethosor 2dac3c53c7 Add stress cutoffs to Units module, fix dwarfmonitor/manipulator
Fixes #1292
2018-07-09 15:59:12 -04:00
lethosor 46e53fc3b3 Make df2console only call df2utf if the output stream is a console
Fixes output in command-prompt, for example
2018-07-09 11:00:28 -04:00
lethosor 03b01048d7 Merge remote-tracking branch 'BenLubar/linked-list' into develop 2018-07-07 23:49:53 -04:00
lethosor 037e7e4901 Merge remote-tracking branch 'suokko/spotclean_ui_state_fix_1194' into develop
Moved/adjusted changelog entry
2018-07-07 18:08:53 -04:00
lethosor aa76b92662 Merge remote-tracking branch 'suokko/main_thread_ownership_for_df_ai' into develop 2018-07-06 16:37:06 -04:00
Ben Lubar 3b6a0738a0
Add check-rpc.py for Travis. 2018-07-04 15:32:06 -05:00
Pauli d1a3f1a738 Allow canceling lineedit with ctrl+c 2018-07-04 15:21:25 +03:00
Pauli a550e112c3 Allow temporary transfer of main logic thread ownership
Dependency to fix df-ai to work with the new CoreSuspender
2018-07-04 00:02:03 +03:00
Ben Lubar dabe04cbf1
Rename bind argument proto -> plugin to avoid confusion. 2018-07-03 16:00:48 -05:00
Pauli 320e94a1eb Avoid locking CoreSuspender second time in main thread 2018-07-04 00:00:06 +03:00
Pauli ee999ccbdf Implement runtime debug print filtering
The runtime debug print filtering support dynamic debug print selection.
Tis patch only implements basic core support for filtering. The commands
to change the runtime filtering settings will be added in a following
patch.

But even with only this one can change filtering settings by editing
memory using a debugger. It can even be automated by using gdb break
point commands.
2018-07-03 15:23:46 +03:00
lethosor 616675f0ce Merge remote-tracking branch 'suokko/kittens_data_race_fix' into develop 2018-07-03 00:30:36 -04:00
lethosor c543a17250 Improve RPC port handling
- Use port from remote-server.json in dfhack-run
- Make DFHACK_RUN environment variable take priority over remote-server.json
- Log current port to stderr
2018-07-02 23:53:56 -04:00
lethosor 81a7ddcf92 Merge remote-tracking branch 'suokko/screen_show_memory_leak' into develop 2018-07-02 22:58:11 -04:00
lethosor f0ff96f614 Merge remote-tracking branch 'suokko/multibyte_console' into develop 2018-07-02 10:55:03 -04:00
Ben Lubar b5eb541fd3
Handle pointers back to the list link. 2018-06-30 23:04:27 -05:00
Ben Lubar 1606483e7e
perf improvement for DfLinkedList::end(), erase/insert/insert_after/push_front implementations 2018-06-30 23:04:26 -05:00
Ben Lubar 0b9d46712f
Run DfLinkedList::end's computations only when needed. 2018-06-30 23:04:26 -05:00
Ben Lubar 31d22967f8
Linked list 2018-06-30 23:04:26 -05:00
Pauli 645ec0d591 Improve kittens thread safety and shutdown with core
The bools could use acquire&release memory order or even relaxed but I
didn't think code was worth auditing for such low level optimizations.
Sequantial consistent is fast enough but much harder to use incorrectly.

The timeLast is protected by CoreSuspender lock. plugin_update is only
called when CoreSuspender lock is held.

The last_menu is protected by trackmenu_flg loads and stores.
2018-06-30 21:53:12 +03:00
Pauli 0727403ac1 Fix devel plugins linking in linux 2018-06-30 21:12:42 +03:00
lethosor 105ddd86d8 Merge remote-tracking branch 'suokko/jsoncpp_upgrade_to_submodule' into develop 2018-06-29 22:33:00 -04:00
Pauli c39a882b57 Add missing Unit::isDiplomat
Fixes #1324
2018-06-29 16:19:18 +03:00
Pauli 123de7fdf7 Use constexpr to prevent attempts of linking static variable 2018-06-24 17:06:32 +03:00
Pauli f6b0ac7819 Refactor CoreSuspender to fix Console::lineedit exit hangs
The old CoreSuspender requires processing from Core::Update to allow
commands execute. But that causes issues if Core::Shutdown wants
quarentee cleanup order with std:🧵:join. Fixing shutdown ordering
adds too many branches to already fairly complex code.

I decided to try to refactor CoreSuspender to use simpler locking
locking using a std::recusive_muted as primary synchronization
primitive.
To help control when Core::Update unlocks the primary mutex there is
std::contition_variable_any and std::atomic<size_t> queue lenght
counter.
The last state variable is std::atomic<std:🧵:id> that is used to
keep track of owner thread for Core::IsSuspended query.

This should be merged only just after a release to make sure that it
gets maximum testing in develop branch before next release.

Fixes #1066
2018-06-22 17:57:37 +03:00
Pauli 0bc1db4f07 Make sure hotkeythread exits before cleanup 2018-06-22 17:57:37 +03:00
Pauli 1acb60daa2 Prevent data races during console/init thread shutdown
There is a minor chance that console or init thread would access already
freed memory when core is shutting down and cleaning up state. To avoid
any danger of having random bugs caused by the potential data race I
decided to make sure the shutdown code waits for the thread to exit
first.

Windows change is completely untested. It is purely based on msdn
documentation.
2018-06-22 17:57:37 +03:00
Pauli 19a169ba65 Convert Core.cpp to use c++11 thread
I noticed that tthread is missing some c++11 features that make thread
handling code a bit easier. To be able to use those features I decided
to convert Core.cpp to use equivalent standard classes.

This patch has no functional changes.
2018-06-22 17:57:37 +03:00
lethosor 854f467f56 Merge remote-tracking branch 'suokko/check_jobs_on_mapcache_commit_1229' into develop 2018-06-21 15:03:51 -04:00
Pauli 9b6781f0f2 Temporary lower command-prompt when executing the command
command-prompt viewscreen may affect command execution if they are
looking for UI state. To make commands execute simillary to hotkeys or
console commands the viewscreen needs to removed from the top position.

Fixes #1194
2018-06-20 21:51:45 +03:00
lethosor 6077a8ce4c Merge remote-tracking branch 'suokko/printf_warnings' into develop 2018-06-20 11:25:14 -04:00
Pauli 9c59b7ff48 Fix unlikely memory leaks if Screen::show fails
The Screen::show takes ownership of the screen pointer. I decided to
switch the parameter to std::unique_ptr to make the pointer ownership
explicit. The unique_ptr then provides automatic screen destruction in
Screen::show unless pointer is inserted or is already in the linked list
that is managed by df.
2018-06-19 16:41:31 +03:00
Pauli 1b5ec7ce69 Update jobs when committing MapCache changes
The map_block->designation.{dig,smooth} are reset to zeros when a job
posting is created for the designation. The job is then used to override
the designation state in the map_block. To make the new designation set
propogate to jobs the job structure would require updating. The update
would be possible a complex operation. The simple alternative is to
remove the job and let df create a new job in the next tick.

Fixes #1229
2018-06-18 16:34:09 +03:00
Pauli 6a151353e3 Use automatic return type for index_tile 2018-06-18 16:23:57 +03:00
Pauli 0bc2b3ab1b Update toSimpleString to use a the new builder API 2018-06-14 21:20:54 +03:00
Pauli 2b79b4cce7 Use jsoncpp 1.8.4 as a submodule
This makes jsoncpp a submodule that can be build directly from git
sources. This changes depends/jsoncpp to depends/jsoncpp-sub to avoid
filename conflict if someone tries to use git bisect.

jsoncpp library name changes to jsoncpp_lib_static.

jsoncpp version is the latest tagged release.
2018-06-14 21:20:46 +03:00
lethosor 10e6016989 Merge branch 'units_dead' into develop
Closes #1297
2018-06-13 15:38:35 -04:00
PatrikLundell f329774059 dead & killed flag separation
squashed 4 commits from #1297
2018-06-13 15:37:45 -04:00
Pauli 8484b5dc8a Add parameter type checks to printf style functions
gcc supports type checks for printf parameters which can catch some hard
to reproduce bugs. Possible bugs happen when the parameter value is
intepreted differently to the variable value.

Example warnings follow
../library/LuaWrapper.cpp:1011:86: warning: format ‘%llu’ expects argument
    of type ‘long long unsigned int’, but argument 3 has type ‘uint64_t
    {aka long unsigned int}’ [-Wformat=]
../plugins/follow.cpp:159:35: warning: format not a string literal and no
    format arguments [-Wformat-security]
2018-06-11 19:27:35 +03:00
lethosor 03968db344 Fix GCC warnings in 'tweak kitchen-prefs-all' and dev plugins 2018-06-01 10:02:38 -04:00
lethosor 7a04fefb0b Remove Vermin module (unused and obsolete) 2018-06-01 00:22:10 -04:00
lethosor 17ba492992 Add some exclusion functions to Kitchen module, expose to Lua, fix build 2018-05-17 19:34:03 -04:00
lethosor 97a79893e7 Change Kitchen.{h,cpp} to title case 2018-05-17 11:08:13 -04:00
lethosor e9ec08f419 Add Buildings::getRoomDescription(), moved from search plugin, +cleanup 2018-05-12 17:00:21 -04:00
lethosor c15571caa0 Move isRouteVehicle, isSquadEquipment from workflow to Items module 2018-05-12 14:49:30 -04:00
lethosor a34b34d3cb Move a few item functions from autotrade/stocks into DFHack::Items 2018-05-12 12:04:46 -04:00
lethosor 272cdcb2b5 Add function names to NullPointer and InvalidArgument exceptions 2018-05-11 09:49:27 -04:00
lethosor 2a52582c1f Add Gui::inRenameBuilding 2018-05-09 10:23:05 -04:00
lethosor a708b0b303 Add some includes in DataDefs.h 2018-04-19 21:11:43 -04:00
lethosor 2bf9632000 Merge remote-tracking branch 'origin/develop' into complex-enum 2018-04-11 10:23:32 -04:00
lethosor 61539bf345 Lua: implement key lookup and ipairs for complex enums 2018-04-09 11:04:37 -04:00
lethosor ae6b8a16e8 Handle most complex enum metadata on the C++ side 2018-04-09 03:00:58 -04:00
Ben Lubar 9cbba0ae01
Hide warnings about non-virtual destructors from df-structures. 2018-04-05 14:46:28 -05:00
lethosor eb22d5c38e Add ABI version symbol to plugins 2018-03-10 16:55:00 -05:00
lethosor f2ff609e1c Initial 0.44.06 support, update xml 2018-03-10 16:18:15 -05:00
lethosor 8779168c96 DFHACK_PLUGIN: qualify Plugin 2018-02-16 02:17:58 -05:00
Japa 7b19c9b8f0 Merge remote-tracking branch 'remotes/DFHack/develop' into RemoteServerUnsafe
# Conflicts:
#	plugins/proto/RemoteFortressReader.proto
#	plugins/remotefortressreader/remotefortressreader.cpp
#	scripts
2018-02-12 20:19:40 +05:30
Ben Lubar 7426f08504
Fix Error.cpp compile for Windows 2018-02-07 10:40:52 -06:00
lethosor c1e2633e17 Refactor DFHack exception classes
Move implementations out of MiscUtils.cpp to Error.cpp and make what() return a
more useful description
2018-02-05 19:18:35 -05:00
lethosor 1ba5477b63 Add designation priority support to MapCache and dig plugin
Fixes #481
2018-01-21 19:27:16 -05:00
lethosor 0332a5c25a Replace a call to abort() with a VTableMissing exception
This makes some scripts crash less when the viewscreen vtable is unavailable,
for example.
2017-12-25 20:13:15 -05:00
Quietust 4edc7a6f43
update DataFuncs to support vmethods with 12-13 parameters (#1192) 2017-12-02 21:41:44 -06:00
Japa Mala Illo a0634f9ee0 Merge remote-tracking branch 'DFHack/develop' into RemoteServerUnsafe 2017-11-25 11:50:56 +05:30
lethosor 2c95ac411e Update xml and all uses of job_handler 2017-11-25 00:59:59 -05:00
Japa Illo 3c5483df03 Change tabs to spaces to satisfy travis. 2017-10-04 09:48:12 +05:30
Japa 8dffd48f70 Add a flag for functions considered safe for a remote computer to call. 2017-10-02 19:55:16 +05:30
Ben Lubar 17a7885ef2
Fix a bunch of 64-bit Windows warnings 2017-07-21 13:30:05 -05:00
lethosor 10e13c532a Add "tweak cage-butcher" and some extra Building module functions
* Buildings::markedForRemoval()
* Buildings::getCageOccupants()

Closes #906
2017-06-25 15:27:21 -04:00
lethosor ae809afde7 Add Gui::refreshSidebar()
This handles feeding CURSOR_DOWN_Z and CURSOR_UP_Z properly, avoiding issues
when on the lowest z-level.
2017-06-23 00:02:21 -04:00
lethosor 0796fafb2a Add new built-in "alias" command
Closes #701
2017-06-19 00:15:20 -04:00
lethosor 27343e3253 Add unit and tile visibility functions 2017-06-10 21:54:08 -04:00
lethosor 778ffb0971 More Units module cleanup, modernize getUnitsInBox 2017-06-10 21:02:30 -04:00
lethosor 1321a64613 Remove lots of old/unused functions from the Units module 2017-06-10 17:21:34 -04:00
lethosor ba68683964 Fix ncurses wgetch() on OS X
Ref #731
2017-06-08 13:05:31 -04:00
lethosor 43c4a88068 Move some checks in paintTile/readTile after hooks are called 2017-06-02 00:40:14 -04:00
lethosor 05f322ca30 Merge remote-tracking branch 'lethosor/lua-dmdims' into develop 2017-06-01 23:34:35 -04:00
lethosor 939aff3231 readTile(): add hook support and map parameter 2017-05-31 12:12:15 -04:00
lethosor 55931703ac Designate the correct tile for trees with multi-tile trunks
DF always designates the southeast trunk tile, while plant.pos is the center,
which is sometimes inaccessible (see #1014)
2017-05-05 21:25:25 -04:00
lethosor d3c496cc2b Add getSelectedPlant() and related functions
Currently only works with the center tile of multi-tile trees
2017-05-05 14:45:46 -04:00
lethosor 1e469453fc Add Designations module, currently supporting plant/tree designations
This makes it easier for tools to properly handle designating and undesignating
trees for chopping and plants for gathering, which changed significantly in
0.40.20.

Ref #531 (?), #656, #1014, #1018, #1030, #1076
2017-05-04 21:47:12 -04:00
lethosor 71b553b305 Add a few functions to retrieve unit social activities 2017-04-28 17:25:58 -04:00
lethosor a10d4ae226 Add viewscreen::feed_key method 2017-02-11 16:53:50 -05:00
lethosor 538b07d214 Update xml and fix knowledge_scholar_category_flag::value() custom method
Allows bitfields within unions (#1047, dfhack/df-structures#169)
2016-12-27 23:24:22 -05:00
David Corbett acdb369aa8 Avoid non-trivial bitfield constructors 2016-12-09 13:41:14 -05:00
lethosor 8521b830b2 Merge remote-tracking branch 'CannibalVox/job_remove' into develop 2016-12-05 15:24:37 -05:00
Stephen Baynham 595f3857b6 Reverse the param order of these two methods
The current way doesn't match other Job module methods
2016-12-01 20:13:49 -08:00
Stephen Baynham 7920f71517 Bad formatting 2016-11-25 00:25:18 -08:00
Stephen Baynham e490afdf00 Rebuilt slightly to offer bool return val
We fail on unknown general ref types now, without modifying the job at
all yet
2016-11-24 22:36:11 -08:00
Stephen Baynham 74f5df99db Add job remove method
Job remove eliminates a job's worker & holder references, if any, puts
the worker on cd, if appropriate, removes the job's postings, eliminates
the job from the global linked list, and then finally deletes it.  This
code was tested by incorporating it into autochop and it does make the
plugin work.  However, chop jobs don't have holder building references,
and anyway, with DF being 90% edge case by volume, this could use a heck
of a lot more testing.

I saw elsewhere code that prevented worker removal if the job was a
special job, and that made me feel funny so I made the job remove method
not work if the job is a special job.
2016-11-17 19:54:41 -08:00
lethosor 4c21bbd5ae Add Lua::TableInsert() helper 2016-10-15 14:55:48 -04:00
lethosor 8a138fcc4c Avoid polluting global namespace in MapCache.h 2016-10-15 14:53:10 -04:00
Japa 08cc9f3188 Cast size_t to int explicitly to avoid compiler warning C4267 2016-10-15 10:31:38 +05:30
Japa 98ab357df0 Use size_t in both path methods, to avoid warning C4267 2016-10-15 10:17:38 +05:30
lethosor 70d3c07cdb Initial lua getDwarfmodeViewDims rewrite 2016-10-07 23:51:58 -04:00
lethosor a5338d2f59 Fix rebase_delta type mismatch
See #984. GCC wasn't complaining about this on x64 for some reason.

Also reordered includes.
2016-09-28 20:43:02 -04:00
lethosor 9e4a6d7591 Update default base address on 64-bit Linux 2016-08-18 17:28:18 -04:00
lethosor e965f5318f Replace many includes with forward declarations in modules/Maps.h 2016-08-13 21:44:01 -04:00
lethosor 02eef95147 Fix base address for Darwin x64 2016-08-09 20:00:31 -04:00
lethosor e22b3b1de7 Use non-fixed-width types in integer identity_traits definitions
In some situations (e.g. 32-bit Linux), "intptr_t" is defined as "int", which is
equivalent to "int32_t", leading to issues with duplicate definitions. In other
situations with GCC, "intptr_t" is "long", which isn't covered by any intNN_t
types. Also, definitions for "long" already had to be added on Windows, because
no fixed-width types in MSVC are equivalent to "long".

Switching to non-fixed-width types should hopefully cover all of these
situations. If this doesn't cover any integer types that we need, it will
be caught quickly, e.g. by references to integer_traits<T> in LuaWrapper.cpp.
2016-08-08 11:46:20 -04:00
lethosor 79377669a1 Merge remote-tracking branch 'NCommander/dwarfvet' into develop 2016-07-29 16:25:53 -04:00
lethosor 158f18106f Merge remote-tracking branch 'NCommander/vs2015' into develop 2016-07-29 15:30:32 -04:00
lethosor 55970a71ab Fix Lua::Push for enums 2016-07-29 11:06:16 -04:00
lethosor b7856fd9f2 Use enable_if for Lua::Push specializations 2016-07-28 22:04:46 -04:00
lethosor 7b7f7a1b79 Fix support for integer fields in Lua 5.3 2016-07-28 16:36:02 -04:00
lethosor 41a81f9021 Fix some more warnings (GCC 4.8) 2016-07-28 11:00:52 -04:00
lethosor ddd56d7825 Fix (for win64) and avoid duplicating base address 2016-07-27 20:10:03 -04:00
Vitaly Pronkin 8916aba3bf win64 fixes (partial)
cherry-picked from 2f734ae2317060edb83021f17cffc966c435ad7b
2016-07-27 19:46:49 -04:00
Vitaly Pronkin fe18f176f7 More 64-bit fixes
Cherry-picked from 7eb3ba6
- Lua update already done in e2c6350, 4dd411e
- Excluded library/modules/Buildings.cpp
2016-07-26 23:47:53 -04:00
Michael Casadevall ed6fb69012 Fix whitespace spacing
Signed-off-by: Michael Casadevall <mcasadevall@ubuntu.com>
2016-07-11 18:54:03 -05:00
lethosor 2455e36510 Initial 64-bit support 2016-07-03 23:32:43 -04:00
Michael Casadevall d509cf2fb5 It helps when you pop pragmas
Signed-off-by: Michael Casadevall <mcasadevall@ubuntu.com>
2016-06-28 09:39:46 -05:00
Michael Casadevall d49032ef73 Supress a lot of compiler noise in hopes of finding real errors. Right now, a plugin free DFHack can be built with VS2015 2016-06-28 08:34:11 -05:00
Japa 36aafd550b Increased the message size limit in RemoteClient from 8mb to 64mb. 2016-06-20 13:17:30 +05:30
lethosor 022a1bf9e8 Wrap script descriptions in `ls` output and remove description length cap 2016-06-14 21:24:27 -04:00
Michael Casadevall e45fbfc61d Modified dwaftvet plugin to work with latest DFHack
Initial commit of the dwarfvet plugin

Signed-off-by: Michael Casadevall <mcasadevall@ubuntu.com>
2016-06-08 04:14:59 -04:00
lethosor 9fc43cff4d Make const method wrappers possible
Reverts ae3052f
Ref #935
2016-05-28 20:11:42 -04:00
lethosor ae3052f79a Make knowledge_scholar_category_flag::value() non-const
const methods can't be wrapped at the moment, at least without changing things
in DataFuncs.h
2016-05-28 10:28:22 -04:00
Ben Lubar e76258b040 knowledge category flag 2016-05-26 15:15:42 -05:00
lethosor 52728babd4 Merge branch 'develop' into zone-unassign 2016-04-22 18:41:15 -04:00
lethosor b97d33ca28 moveToBuilding improvements
- Don't set in_building by default when use_mode is 0 (consistent with most vanilla DF items)
- make use_mode optional and default to 0 (including in Lua API)

Resolves #885
2016-04-05 11:43:02 -04:00
lethosor 37c81df21c Add reverse vtable name lookup 2016-04-03 20:45:44 -04:00
sv-esk dd9f1bf759 make world friend of machine and building handlers to allow use their
protected constructor
2016-03-09 13:03:16 +02:00
lethosor 25507a10f9 Add Units::getKillCount() and expose it to Lua 2016-02-25 15:21:14 -05:00
lethosor 297bbd6f20 Merge remote-tracking branch 'warmist/develop' into develop (closes #772) 2016-02-24 17:24:03 -05:00
sv-esk 83c70ccb0f forbid manipulator editing non-citizens 2016-02-11 13:31:52 +02:00
Warmist d4988c5faf Add no handler version of lua event. 2016-02-01 22:22:12 +02:00
James Gilles 0a670bb0db Implement #804, move some functions to Units, colorize zone output, a
little cleanup
2016-02-01 11:12:06 -05:00
lethosor 2d23a848cc git-describe: Add git xml information 2016-02-01 10:30:53 -05:00
lethosor 80ecbbd369 get rid of "private" comment in BitArray.h 2016-01-21 16:49:16 -05:00
lethosor d0c28d3f50 Prevent plugins with active viewscreens from being unloaded
This requires plugins to pass plugin_self to Screen::show(), but
avoids the need to implement special checks in plugin_onstatechange
for the SC_BEGIN_UNLOAD event.
2016-01-01 11:15:29 -05:00
lethosor d087f4f741 Expose process MD5/PE to Lua (useful in export-dt-ini) 2015-12-27 14:59:18 -05:00
lethosor 2a2ab00ca9 Add "map" parameter to a lot of drawing functions
Ref #746
2015-12-22 11:42:51 -05:00
lethosor 5a1e5e1464 Expose Units::casteFlagSet() 2015-12-19 11:07:35 -05:00
lethosor 347a112aa1 Add support for 11-argument function wrappers
Needed by item::addImprovementFromJob() as of 0.42:
dfhack/df-structures@f6361e2
2015-12-18 17:45:23 -05:00
lethosor 83603fcf45 Add prerelease build flag and warning script 2015-12-11 20:27:46 -05:00
lethosor 2aeac718cc workflow: Account for job postings correctly and fix existing issues
Without removing postings correctly, it was possible to end up with
multiple workers assigned to a job that workflow had suspended
multiple times, which caused crashes if more than one worker was
assigned to the same job by DF.

This adds an additional command, fix-job-postings, that runs
automatically when loading a world and fixes:
- Multiple job postings that point to the same job
- Job postings that point to a job where posting_index == -1
  (i.e. jobs that should have no posting assigned)

Fixes #741
2015-11-25 20:33:13 -05:00