Commit Graph

4231 Commits (0362c09811204c5314f81d4702172b00fa02d25c)

Author SHA1 Message Date
Ben Lubar c06d1f8e52
tagged union support for lua (#1818) 2021-03-30 15:55:06 -05:00
lethosor 572b6ebab5
Fix warning (#1796) 2021-03-27 00:11:50 -04:00
lethosor d61c4aa234
Merge remote-tracking branch 'myk002/myk_xlsxreader_classes' into develop 2021-03-27 00:10:03 -04:00
myk002 4d2af8438f
always read all cells to work around xlsxio bug
otherwise xlsxio will return a spurious empty row on next row read
2021-03-26 19:43:15 -07:00
lethosor 26e41005e3
Fix fastdwarf warning 2021-03-25 17:20:33 -04:00
myk002 aac958aa50
add open() wrapper fn and document class methods 2021-03-22 09:38:20 -07: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
lethosor 1f9e875bcd
Update stonesense, scripts 2021-03-11 00:00:49 -05:00
Ben Lubar 67ed9e135f
update stonesense ref 2021-03-10 15:45:36 -06:00
Ben Lubar f566284b80
update stonesense ref 2021-03-10 15:31:50 -06:00
Ben Lubar 1554d06831
update stonesense submodule 2021-03-10 15:14:12 -06:00
DFHack-Urist via GitHub Actions 45823c2745 Auto-update submodules
scripts: master
plugins/stonesense: master
2021-03-10 07:15:44 +00:00
myk002 69a2f44020
Lua class wrappers for the xlsxreader plugin API 2021-03-08 15:04:50 -08:00
Ben Lubar 4aaa54c056
dwarfvet: remove console spam when plugin is enabled but no hospitals exist 2021-03-07 14:59:41 -06:00
PatrikLundell ef53c2d672 adapted to changed df-structures enum value names 2021-03-05 12:45:51 +01:00
lethosor 9df06564a0
Merge remote-tracking branch 'PatrikLundell/Prospector' into develop
Conflicts:
	docs/changelog.txt
2021-03-03 23:56:06 -05:00
lethosor 1b2eed7c5e
confirm convict: use visible name to avoid exposing alternate identities
Ref #1593
See also:
https://www.reddit.com/r/dwarffortress/comments/ltzu82/if_i_wasnt_sure_i_found_the_vampire_before/
http://www.bay12forums.com/smf/index.php?topic=164123.msg8253738#msg8253738
2021-02-28 01:01:47 -05:00
lethosor 4a7fcc6118
Fix plugin name in error, add link in docs
Ref #1769
2021-02-25 00:41:13 -05:00
lethosor cb9ed4ff0c
Merge remote-tracking branch 'myk002/myk_manipulator' into develop
Conflicts:
	docs/changelog.txt
2021-02-25 00:39:01 -05:00
lethosor af34b5d614
Merge remote-tracking branch 'bseiller/ea_improve_survey_performance_keep_mlts_on_heap' into develop 2021-02-23 00:22:22 -05:00
bseiller 60e83046f8 Prevent accidental double-frees
- matcher.cpp, survey.cpp: setting the state pointer to null/nullptr in ::shutdown() to prevent errors caused by accidental double-frees - an additional check if the pointer is null already is not necessary as the standard guarantees that nothing happens if delete is called on a nullpointer

Co-Authored-By: Alan <3719547+lethosor@users.noreply.github.com>
2021-02-20 22:43:12 +01:00
myk002 de9375574a
fix syntax error 2021-02-18 23:25:21 -08:00
myk002 3e6294198b
update wording of fortplan deprecation notice 2021-02-18 23:23:50 -08:00
myk002 09f0607db2
add deprecation warnings to fortplan 2021-02-13 11:07:14 -08:00
myk002 55743fc43f
Merge remote-tracking branch 'upstream/develop' into myk_manipulator 2021-02-13 07:16:58 -08:00
Ben Lubar a051077820
update structures 2021-02-10 18:54:12 -06:00
lethosor ebbbfc0f8e
Merge remote-tracking branch 'myk002/myk_orders_crash' into develop
Conflicts:
	docs/changelog.txt
2021-02-10 00:10:53 -05:00
bseiller 6ffbf401c4 Merge branch 'develop' into ea_improve_survey_performance_keep_mlts_on_heap 2021-02-09 08:42:42 +01:00
PatrikLundell 4660f52b36 improved pre embark mineral estimates 2021-02-08 14:45:49 +01:00
myk002 09d91dcae1
move alchemist-enabling logic to autohauler 2021-02-06 14:14:08 -08:00
myk002 6819ee9928
make alchemist flag valid for controllable civs 2021-02-05 16:45:39 -08:00
myk002 4d57d27d4d
Revert "allow alchemist skill to be toggled in manipulator"
This reverts commit fa662cafbc.
2021-02-05 16:10:36 -08:00
bseiller efc92750fa Fix crash
embark-assistant.cpp: Move call to survey::initiate() after call to survey::setup(), otherwise state won't exist
2021-02-04 01:10:10 +01:00
bseiller 52bf998224 Adapt to review comments by @PatrikLundell
- survey.cpp: rename loop variable for more clarity; replace use of parmeter with use of vector.size(), replace nested vector.at calls with direct index access/subscript as it is faster and easier to read
2021-02-03 14:32:03 +01:00
bseiller 0c304cf85f Improve performance of surveying => faster search
replace the local/automatic mid_level_tiles variable in matcher::match_world_tile with one that is created once during the setup phase (heap).
The dynamic part of the contained (16*16*3 = 768) vectors is being allocated on the heap in both cases - which made the repeated instatiations of the automatic variable so slow/expensive.

Also replace calls to vector<bool>.resize in nested loops with direct assignments to those vectors, which curiously even after a lot of profiling is the fastest way to reset the inorganic vectors - at least on Windows.

- embark-assistant.cpp: Replace 2 local/automatic mid_level_tiles variables with a single dynamic variable created during setup as well; add calls to matcher::setup() and matcher::shutdown()
- matcher.cpp/.h: add state with mid_level_tiles member; add setup and shutdown functions
- survey.cpp: add function reset_mlt_inorganics as replacement for the looped calls to vector::resize as all inorganic vectors are now expected to have the proper size when entering survey::survey_mid_level_tile
2021-02-03 00:08:59 +01:00
myk002 1063497828
don't crash on malformed orders json 2021-02-02 10:50:21 -08:00
myk002 fa662cafbc
allow alchemist skill to be toggled in manipulator
since autohauler uses it as a flag
2021-02-02 08:28:48 -08:00
bseiller 56335977ab Merge branch 'develop' into ea_refactoring 2021-02-01 23:36:04 +01:00
bseiller fede136008 refactoring embark-assistant survey, 12.iteration
- survey.cpp: replace repeated (nested) vector access with an const int / auto pointer in survey_mid_level_tile
2021-02-01 22:57:30 +01:00
bseiller aff64956fb refactoring embark-assistant survey, 11.iteration
- survey.cpp: replace repeated (nested) vector access with a auto pointers in survey_mid_level_tile
2021-02-01 22:53:45 +01:00
bseiller 4fdcec5893 refactoring embark-assistant survey, 10.iteration
- survey.cpp: replacing repeated vector access with auto value in survey_mid_level_tile
2021-02-01 22:36:16 +01:00
bseiller 1ed783284e refactoring embark-assistant survey, 9.iteration
- survey.cpp: replacing repeated vector access with a const world_geo_biome pointer in survey_mid_level_tile
2021-02-01 22:31:58 +01:00
bseiller 9d64c9a549 refactoring embark-assistant survey, 8.iteration
survey.cpp: remove unused includes
2021-02-01 22:25:57 +01:00
bseiller db423cc11e refactoring embark-assistant survey, 7.iteration
- survey.cpp: replacing repeated nested vector access with a const df::inorganic_raw pointer in survey_mid_level_tile
2021-02-01 22:22:10 +01:00
bseiller aa520dfcce refactoring embark-assistant survey, 6.iteration
- survey.cpp: add function to copy all incursion values from one  mid_level_tile_incursion_base instance to another; replace repeated assignments with  calls to new function in survey_mid_level_tile
2021-02-01 16:00:01 +01:00
bseiller 3181532bf2 refactoring embark-assistant survey, 5.iteration
- survey.cpp: replacing repeated nested vector access with a const mid_level_tile reference in survey_mid_level_tile
2021-02-01 00:24:56 +01:00
bseiller 16438c59c8 Remove trailing whitespace as per lint rules 2021-01-31 14:03:49 +01:00
bseiller 115b8a439f fixing use of wrong indices, discovered during refactoring in survey::survey_mid_level_tile
- survey.cpp: replacing faulty repeated nested vector access (due to wrong indices) with the existing region_map_entry reference
2021-01-31 13:58:17 +01:00
lethosor fd7c3fc4aa
Prevent stockpiles hotkey label from overlapping with autodump
stockflow moved to last slot because it isn't enabled in dfhack.init-example

Ref #1764
2021-01-30 21:14:45 -05:00
lethosor 9c65c1f7c7
Merge remote-tracking branch 'myk002/myk_stockpiles_stockflow_conflict' into develop
Conflicts:
	docs/changelog.txt
2021-01-30 21:11:58 -05:00
lethosor c78866aba7
Merge remote-tracking branch 'abstern/autofarm-fallow-if-no-eligible-plants' into develop 2021-01-30 18:09:12 -05:00
lethosor 62870e9aee
Remove extra log statement, reorder changelog
ref #1753
2021-01-30 18:08:17 -05:00
lethosor 9d0eacadbf
Merge remote-tracking branch 'Moth-Tolias/seedwatch' into develop 2021-01-30 17:56:16 -05:00
bseiller 741e430a06 removing dead store from survey::survey_mid_level_tile
- survey.cpp: deleting declaration of and assigments to variable base_z which is never used apart from a self-assigment
2021-01-30 23:37:09 +01:00
bseiller 028a68ae6f refactoring embark-assistant survey, 4.iteration
- survey.cpp: replacing repeated nested vector access with a region_map_entry reference in survey_mid_level_tile; made a reference mid_level_tile const to prevent acidental change of values
2021-01-30 23:33:09 +01:00
bseiller b1cf65860c Merge branch 'develop' into ea_refactoring 2021-01-30 17:39:41 +01:00
Susan 8540fd84a4 move world loaded check and message printing to plugin_enable() 2021-01-30 15:14:46 +00:00
lethosor c6da99e5ce
Merge remote-tracking branch 'myk002/myk_stockflow_steals_input' into develop
Conflicts:
	docs/changelog.txt
2021-01-30 01:59:44 -05:00
lethosor 845993ba59
Merge remote-tracking branch 'lethosor/fix-k-search-crash' into develop 2021-01-29 20:08:08 -05:00
Su 545fcf6745
Merge branch 'develop' into seedwatch 2021-01-29 11:34:57 +00:00
Susan 33342404bc Merge branch 'seedwatch' of github.com:Moth-Tolias/dfhack into seedwatch 2021-01-29 11:27:34 +00:00
Susan a3b0cda069 don't enable if no world is loaded 2021-01-29 11:26:46 +00:00
lethosor 5c14f619c8
Merge remote-tracking branch 'myk002/myk_buildingplan_enable_all' into develop 2021-01-29 00:59:33 -05:00
lethosor 4fbd763c1a
Also cancel 'k' search when hotkeys (F1 - Shift-F8) are pressed 2021-01-29 00:28:32 -05:00
lethosor 865484f678
Merge branch 'develop' into fix-k-search-crash
Conflicts:
	docs/changelog.txt
2021-01-29 00:16:13 -05:00
bseiller b33f06efee refactoring embark-assistant survey, 3.iteration
- survey.cpp: replacing repeated nested vector access with a mid_level_tile reference in survey_mid_level_tile
2021-01-28 23:48:09 +01:00
bseiller e90e84ab87 refactoring embark-assistant survey, 2.iteration
- survey.cpp: replacing pointer and repeated nested vector access with a region_tile_datum reference in survey_mid_level_tile
2021-01-28 23:40:58 +01:00
bseiller 6e012bb032 refactoring embark-assistant survey, 1.iteration
- survey.cpp: replacing repeated double vector access with a reference in survey_mid_level_tile
2021-01-28 23:38:40 +01:00
Su 98f3142c92
change deactivation message to be more accurate
Co-authored-by: Alan <lethosor@users.noreply.github.com>
2021-01-28 18:00:34 +00:00
myk002 42ae0727fe
resolve hotkey help text conflict
between stockflow and stockpiles

I removed stockpiles's dynamic placement code as well. it attempted to
move the hotkey help text down if it covered any stockpile links, but
this will no longer work since other hotkey text already takes up all
the lines below stockpiles' hotkey text.
2021-01-27 08:37:12 -08:00
myk002 ff69665815
keep stockflow from stealing input during rename 2021-01-27 08:25:21 -08:00
bseiller 1f7cae17ef Merge branch 'develop' into ea_incursion_struct 2021-01-26 23:22:59 +01:00
myk002 10634b8ae5
fix merge error 2021-01-24 09:19:01 -08:00
Myk Taylor d0fc448a39
add 'enable all' option for buildingplan
This kind of functionality is much more important now than it used to
be since there are so many supported building types.

Also modified the 'Planning Mode' status on the building placement
screen to reflect whether we're in quickfort mode, enable all mode, or
whether just the building type is enabled.

this setting is not persisted (just like quickfort_mode is not
persisted), but it can be set from onMapLoad.init
2021-01-24 09:08:36 -08:00
bseiller 3c4cb749a3 Merge branch 'develop' of https://github.com/DFHack/dfhack into prevent_repeated_survey_mlt_calls 2021-01-24 13:57:27 +01:00
bseiller c525b80dda Merge branch 'develop' of https://github.com/DFHack/dfhack into ea_incursion_struct 2021-01-24 13:54:25 +01:00
lethosor d01e61c658
Fix some error message formatting and add some cross-links to docs
Followup to #1747
2021-01-22 21:05:20 -05:00
lethosor 5ef7a81fd1
Merge remote-tracking branch 'myk002/myk_buildingplan_set_settings' into develop 2021-01-22 20:57:30 -05:00
myk002 ad39bb3c33
address review comments 2021-01-22 12:48:36 -08:00
bseiller 6a1b70ae76 making lint happy by removing trailing whitespace 2021-01-19 17:43:32 +01:00
bseiller 438811e108 handling special case of the cursor having been positioned in the lower right corner before the search
- matcher.cpp: manually moving the cursor to the neighbouring world tile so it can be moved back and embark_update is being called when all (incursion) data has been collected

Co-Authored-By: PatrikLundell <22739822+PatrikLundell@users.noreply.github.com>
2021-01-19 16:37:59 +01:00
bseiller 9b9373be4f removing commented out assigments 2021-01-19 12:06:36 +01:00
bseiller cb496c3f59 fixing indention/whitespaces
- defs.h: replacing tab with space/blank for indents
2021-01-19 00:07:28 +01:00
bseiller e99c8faa24 switching to mid_level_tile_incursion_base to store incursion data of world tile edges
- defs.h: using mid_level_tile_incursion_base in region_tile_datum to store incursion data of world tile edges
- survey.cpp: commented out "not used" blocks of assignment in survey_mid_level_tile that no longer make sense now
2021-01-19 00:01:54 +01:00
bseiller bdfd50cc65 using mid_level_tile_incursion_base instead of mid_level_tile for incursion processing
- matcher.cpp, survey.cpp: adapting signatures to use new struct that only contains incursion specific attributes
2021-01-18 23:50:14 +01:00
bseiller cc68767336 created struct mid_level_tile_incursion_base that only contains attributes that are relevant for incursion processing
- def.h: make attributes/fields of mid_level_tile_incursion_base available in mid_level_tile by inheriting from mid_level_tile_incursion_base which also allows treating mid_level_tile as a mid_level_tile_incursion_base
2021-01-18 23:23:50 +01:00
bseiller 85fe05b723 early return from embark_update during an active search to improve performance
- embark-assistant.cpp: checking if a search is active, if so return early
2021-01-18 22:08:46 +01:00
bseiller c300cae2f9 removing 2 dead stores to speed up survey::survey_mid_level_tile
- survey.cpp: removing layer_bottom and layer_top, which are never read, but slow down survey_mid_level_tile significantly because entries are added quite often into the tree map structure
- survey.h: removing now obsolete include for map
2021-01-18 19:38:57 +01:00
Susan 84b07005d8 tabs to spaces [whoops] 2021-01-16 23:47:41 +00:00
Susan 7a14bf475f don't turn off seedwatch on map load
fixes #682
2021-01-16 23:23:05 +00:00
Susan b506f0a240 remove misleading comment
per https://github.com/DFHack/dfhack/issues/682#issuecomment-138705257, seedwatch supports linux and has done for over a decade.
2021-01-16 23:01:25 +00:00
abstern 78df890217 factor out functions to get plant names and set individual farms 2021-01-13 08:55:48 +01:00
abstern 80674f7697 [feature] autofarm: fallow farms when no further plants requested 2021-01-12 21:37:51 +01:00
Myk Taylor 339d5ce26b
set buildingplan global settings from prompt
allow buildingplan settings to be set from the DFHack# prompt. For
example, if a player knows they'll always want to build with blocks,
they could add the following two lines to onMapLoad.init:

buildingplan set boulders false
buildingplan set logs false
2021-01-10 17:29:53 -08:00
Timur Kelman f115767713
add missing `\n` in digFlood's example 2020-12-31 13:47:02 +01:00
lethosor b585bca90b
look_menu_search: fix crash due to certain cursor keys not restoring list
Fixes #1737
2020-12-30 15:04:43 -05:00
lethosor a7232499ac
Silence some warnings from GCC 10
Specifically `gcc (Ubuntu 10.2.0-13ubuntu1) 10.2.0`
2020-12-30 00:04:49 -05:00
PatrikLundell 4a2704665d Merge branch 'develop' of https://github.com/DFHack/dfhack into embark-assistant 2020-12-27 11:20:18 +01:00
PatrikLundell dbfd838786 corrected temperature calculation factor order 2020-12-27 11:07:33 +01:00
lethosor 8cace1eb06
probe: print more designation and occupancy-related flags
This was useful for testing #1729
2020-12-23 15:36:39 -05:00
lethosor eff360b49d
Merge remote-tracking branch 'PatrikLundell/embark-assistant' into develop 2020-12-20 01:15:40 -05:00
PatrikLundell 0b7ab90d3d corrected mismatched indices 2020-12-17 11:49:15 +01:00
lethosor de21e0cdb8
Merge remote-tracking branch 'PatrikLundell/embark-assistant' into develop 2020-12-16 13:25:25 -05:00
PatrikLundell 3e3a34af99 corrected index usage 2020-12-16 10:59:27 +01:00
lethosor d437cfe649
Add test for invalid job types in workflow's job_outputs 2020-12-15 21:36:57 -05:00
lethosor 5d3924a8c0
Remove old jobs from plant_products
Identified by Quietust in #1722
2020-12-14 00:04:53 -05:00
lethosor 123c207d9c
Fix error in material_defs lookups
Changed in dfhack/df-structures@7dfea1f1d4
Fixes #1722
2020-12-14 00:03:29 -05:00
lethosor 4e08357aaf
search: reset when screen is dismissed, even if it's still present under gview
Fixes #1725
2020-12-08 23:09:07 -05:00
lethosor a3d8c5a2ec
revflood docs: clarify that constructed walls are ignored
Closes #1719
2020-12-05 19:41:32 -05:00
lethosor db03f943c9
Merge remote-tracking branch 'PatrikLundell/embark-assistant' into develop 2020-12-04 23:54:50 -05:00
PatrikLundell c36fbe4c8b Corrected river size handling 2020-12-03 15:40:22 +01:00
Tachytaenius 2a4e16d6da
Cover artifacts at greasing station
The inconsistent [DOES_NOT_DETERMINE_PRODUCT_AMOUNT] distribution is right, I assume?
2020-11-28 18:08:04 +00:00
lethosor 8548295fe5
Merge remote-tracking branch 'PatrikLundell/embark-assistant' into develop 2020-11-18 11:12:17 -05:00
PatrikLundell afe99b83c2 corrected orientation bug 2020-11-18 10:43:15 +01:00
lethosor 90cf6e8587
Merge remote-tracking branch 'quietust/dwarfvet' into develop 2020-11-17 23:38:06 -05:00
lethosor 53916dbe6b
Use charToKey and clean up logic a bit
Ref #1714
2020-11-17 23:33:18 -05:00
Nilsolm 4ac3e62e60 ignore input if selection is zero 2020-11-18 02:41:20 +01:00
PatrikLundell 1cd9babfb7 2 spaces killed 2020-11-17 21:10:40 +01:00
PatrikLundell 7944026742 fixed help screen misalignment 2020-11-17 20:55:14 +01:00
PatrikLundell 8f5d9fe1e9 Merge branch 'develop' of https://github.com/DFHack/dfhack into embark-assistant 2020-11-17 19:53:09 +01:00
PatrikLundell ab617f67cc corrected world tile level incursion calculations 2020-11-17 19:52:46 +01:00
Quietust 877fd42214 dwarfvet - initialize spot_index (#1711), fix types in Patient 2020-11-17 09:13:03 -06:00
lethosor 0b886399fe
zone: stop enumnick from taking priority over assign/unassign/slaughter
Fixes #1709
Ref #1652
2020-11-15 22:21:46 -05:00
lethosor 4921cb4ac7
Merge remote-tracking branch 'PatrikLundell/embark-assistant' into develop 2020-11-14 15:08:22 -05:00
PatrikLundell 0ef56ba859 another space character met its demise 2020-11-14 14:53:54 +01:00
PatrikLundell 46835c9edd reworked aquifer bit fiddling 2020-11-14 14:43:43 +01:00
myk002 59e76ae407
detect buildingplan buildings in the resume plugin 2020-11-13 12:43:46 -08:00
PatrikLundell d51b56c780 removed a blank 2020-11-13 20:28:22 +01:00
PatrikLundell 6014a45235 Fixed bug missing world tiles lacking incurson supplied resources 2020-11-13 20:11:03 +01:00
lethosor 2e4f23d49f
Merge remote-tracking branch 'myk002/myk_isplannedbuilding' into develop 2020-11-13 14:09:36 -05:00
myk002 efdba8b596
add buildingplan.isPlannedBuilding 2020-11-13 10:18:54 -08:00
myk002 10616a387f
cleaner mask-based implementation 2020-11-12 22:44:38 -08:00
myk002 6b14a92385
allow buildingplan to match metal bars 2020-11-12 19:54:00 -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
myk002 36110902fa
don't use cached iterators across map reloads 2020-11-12 00:11:13 -08:00
lethosor 923b1b14f3
Merge remote-tracking branch 'myk002/buildingplan_persist_global_settings' into develop 2020-11-11 23:59:09 -05:00
lethosor 9c13b497bf
Merge remote-tracking branch 'myk002/myk_automaterial_buildingplan_fix' into develop 2020-11-11 23:36:42 -05:00
myk002 54702085d5
don't eat keys while building is being renamed
allows buildingplan to prevent unsuspension of planned buildings without
also eating the 's' key when the user is trying to use it to give the
building a custom name.
2020-11-11 17:12:56 -08:00
lethosor c87d5260d3
buildingplan: make hotkeys added to existing menus red
For clarity (per Lua API.rst guidelines)
2020-11-11 16:04:40 -05:00
lethosor 58079217d9
Merge remote-tracking branches 'myk002/myk_buildingplan_no_quality' and 'myk002/myk_buildingplan_pause' into develop 2020-11-03 00:09:03 -05:00
Myk Taylor 2c65113bdb detect all conditions that make the game pause 2020-10-31 03:03:05 -07:00
Myk Taylor fbc26336cf don't show quality properties for no-quality items
for items that cannot have a quality or be decorated:

in place mode, don't show quality adjustment hotkeys (or isDecorated
flag hotkey) and don't interpret the associated keycodes if they are
pressed.

in query mode, don't show quality or decorated fields.
2020-10-31 02:25:26 -07:00
Myk Taylor 65114d904c fix typo in comment 2020-10-29 11:53:31 -07:00
Myk Taylor 22ac163d55 improve UX between automaterial and buildingplan
solves the confusing behavior when both automaterial and buildingplan
are enabled for constructions. the two plugins now communicate with each
other over the Lua layer to negotiate consistent behavior.

if neither plugin is enabled, the standard DF UI acts as normal

if automaterial is enabled but buildingplan is not, then automaterial
behavior is unchanged.

if buildingplan is enabled and automaterial is not then behavior is
the same as other buildings with buildingplan (no material selection
screen, screen stays on building placement screen after placement).
this commit fixes a bug, though, where buildingplan would only lay
down a single tile of contruction instead of a solid block when a
block is requested.

if both plugins are enabled but buildingplan is not enabled for the
building type then automaterial is unchanged from previous behavior,
execpt for an additional header showing the separation between
automaterial hotkeys and buildingplan hotkeys.

finally, if both plugins are enabled and buildingplan is enabled for the
building type then buildingplan behavior prevails, but the box select and
hollow designations features of automaterial are still usable and
useful. the 'Auto Mat-select', 'Reselect Type', and "Open Placement"
automaterial hotkeys are hidden in the UI and ignored in the feed. This
is because buildingplan takes over material selection, so 'Auto
Mat-select' doesn't make sense. Buildingplan also already stays on the
placement screen after placement, so 'Reselect Type' is not necessary.
And all buildingplan-placed buildings have relaxed placement
restrictions (e.g. they can be built in mid-air) so 'Open Placement' is
also not necessary. The missing options are replaced with blank lines so
the vertical alignment of all other options stays constant.

we also remove a few extra lua_pop() calls that are made superfluous by
the StackUnwinder.
2020-10-29 11:00:49 -07:00
lethosor 08bb6ca35e
Tweak colors
Ref #1684
2020-10-29 00:03:07 -04:00
lethosor d508ad3c4b
Merge remote-tracking branch 'myk002/buildingplan_building_material_filters' into develop
Conflicts:
	docs/changelog.txt
2020-10-28 23:57:55 -04:00
Myk Taylor c1af3e2817 document what happens if no types are allowed 2020-10-26 21:13:11 -07:00
lethosor 3ab9157a2d
Merge remote-tracking branch 'myk002/buildingplan_refactor5_allbuildings_squashed2' into develop 2020-10-26 21:37:41 -04:00
lethosor b723636fe2
Merge remote-tracking branch 'myk002/buildingplan_refactor4_algorithm_squashed2' into develop 2020-10-26 21:24:05 -04:00
Myk Taylor 1a69a9b483 add more important checks for matching items
stolen (with love) from advfort.lua
2020-10-26 16:54:50 -07:00
Myk Taylor 292d40a6ba change hotkeys for adjusting min and max quality
to avoid 'q' and 'w' conflicts with the standard DF UI hotkeys for
roller speed.

min quality: 'qw' -> 'QW'
max quality: 'QW' - 'AS'
2020-10-26 16:11:34 -07:00
Myk Taylor 72b6ac781b on second thought, let UI-related settings reset
no need to have quickfort_mode stay on forever
2020-10-25 02:45:03 -07:00
Myk Taylor 486bf2719b persist global buildingplan settings
this ensures that a player's preferences are saved across map reloads.
this is particularly important for the building material filters, since
item fulfillment tasks are regenerated on map load, and any changes in
settings when buildingplan is reset will change the item vectors that will
be searched for planned buildings. if the settings were allowed to reset,
then a player who thought all walls would be made out of blocks would be
surprised to find boulders and logs being used after the map is reloaded.
2020-10-25 02:37:22 -07:00
lethosor 58917b03d1
Switch away from CheckDFObject in unprotected calls
See https://github.com/DFHack/dfhack/pull/1674#issuecomment-716028460
2020-10-24 14:27:33 -04:00
Myk Taylor a2f943e7e5 don't shift UI down for track constructions
automat doesn't have UI there to avoid
2020-10-24 09:19:15 -07:00
Myk Taylor e614d16e0e use Lua::CheckDFObject instead of static cast 2020-10-23 15:30:40 -07:00
Myk 55a52554ee
use CheckDFObject instead of static cast
Co-authored-by: Alan <lethosor@users.noreply.github.com>
2020-10-23 13:55:14 -07:00
Myk Taylor 0f517f38f8 don't conflict with automaterial plugin
shift buildingplan text down so we don't overwrite each other
2020-10-22 22:01:45 -07:00
Myk Taylor 7e78d8802e migrate qf's buildings_use_blocks to buildingplan
- remove buildings_use_blocks setting from quickfort config file
- add a new Buildingplan Global Settings dialog to house global settings
- move Quickfort Mode (for legacy Python Quickfort) into that dialog
- add four settings to control how generic building materials are matched:
  - blocks
  - boulders
  - logs
  - bars
- ajust the buildingplan algorithm to register duplicate tasks for
  building material item filters, one for each type. since we track how
  many items we've matched for a filter, the first matched item will
  "win" and the extras will get detected as invalid and popped off the
  queue.
- ensure boulders, logs, and bars are scanned last, and in that order
- more global settings planned for the future! see
  http://www.bay12forums.com/smf/index.php?topic=176889.msg8202679#msg8202679
2020-10-22 21:37:49 -07:00
Myk Taylor 09fbaba726 buildingplan: support all building types
Allow buildingplan to handle all building types, update the docs, and add in little extra fixes to ensure all the new types work correctly.
2020-10-16 14:23:35 -07:00
Myk Taylor 100b374af7 generalize buildingplan for all building types
but restrict to only the currently supported set so we can still assume only one filter is required for each building.

changes:
- update buildingplan plugin version to 2.0
- new serialization format for planned buildings
- old persistent data is automatically migrated to new format on load
- algorithm now respects job_item filters; items must match job_item filter and buildingplan ItemFilter
- more invalid items are now filtered out, like items encased in ice. are there any others we should be checking (see BadFlags struct)
- items are sorted before job is unsuspended so final item ordering is correct regardless of what order the items were matched and attached
- item counts in filters are kept up to date so if buildingplan is disabled before all filters are matched and the building is completed by DF itself, the item counts will come out correct (though the item ordering and building "roughness" may be incorrect)
- fixes two memory leaks in building finalization code
- allows artifacts to be matched (ItemFilter defaults now top out at Masterful -- Artifact is selectable but must be manually specified)
- add gui to switch between items for buildings that require multiple item types
2020-10-16 14:08:52 -07:00
Myk Taylor 1368fb4003 buildingplan: construct buildings from lua
Replace C++ building construction code with lua constructBuilding so we can get the proper job_item filters set. these filters will be used when we replace the core buildingplan algorithm in the next PR.
2020-10-16 14:03:05 -07:00
Myk Taylor 82013c0c5e prep buildingplan for core algorithm changes
Lots of refactoring and reorganizing, with only cosmetic player-visible changes.

- show quickfort mode hotlkey label regardless of whether the current building type has buildingplan enabled. before, it was only shown after the user enabled buildingplan for the current building. this eliminates the extra step when enabling quickfort mode, which force-enables all building types.
- 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-16 13:52:23 -07:00
lethosor 895fa59c79
Merge branch 'buildingplan_refactor' into develop 2020-10-16 00:05:01 -04:00
lethosor 93520b4b00
dwarfmonitor prefs: fix segfault if item_subtype is null for some item types 2020-10-11 20:45:56 -04:00
lethosor 9c8098b4f0
Expose to_search_normalized to Lua, add test, and use in ListColumn (most useful for the `stocks` plugin) 2020-10-10 01:40:00 -04:00
lethosor 1b53c0e748
Merge remote-tracking branch 'GitOnUp/normalize_search' into develop 2020-10-09 22:18:39 -04:00
lethosor e2de358f00
Merge remote-tracking branch 'PassionateAngler/zone-qol-improvements' into develop 2020-10-09 21:43:04 -04:00
lethosor 2382247398
Update some docs links to use HTTPS 2020-10-09 19:17:59 -04:00
lethosor c9609ad590
Make `createitem inspect` consistent for PLANT_GROWTH items 2020-10-09 12:45:49 -04:00
lethosor 691b35bf04
Merge remote-tracking branch 'quietust/createitem' into develop 2020-10-09 12:35:40 -04:00
George Murray a3c565b243 Add to_search_normalized to search for characters with accents 2020-09-24 07:31:10 -07:00
Myk Taylor 1c2761f903 enable all in quickfort mode
and simplify logic since new bool map values are already initialized to
false
2020-09-23 20:00:04 -07:00
Myk Taylor 323d377f63 Merge remote-tracking branch 'upstream/develop' into buildingplan_refactor 2020-09-23 19:21:49 -07:00
lethosor 577bb0a258
Merge remote-tracking branch 'myk002/buildingplan_format' into develop 2020-09-23 20:04:17 -04:00
Quietust d3520a2f5f Fix createitem to properly create plant growths (#898) 2020-09-20 16:11:41 -06:00
lethosor 0e6e00af5e
getplants: fix crash when world_object_data is not present for certain blocks 2020-09-20 01:24:46 -04:00
lethosor 9c37a3a068
Add "createitem inspect" subcommand 2020-09-19 20:33:47 -04:00
lethosor 8df8eb0c5d
Remove obsolete xlsxio_project dependency 2020-09-19 16:23:21 -04:00
lethosor 5952c16d87
Merge branch 'develop' into deps-subdirectory 2020-09-19 16:19:47 -04:00
PassionateAngler 11ee3a223d enumnick: command added to 'zone' plugin and other QoL improvements
zone: enumnick command create nick for creature from given prefix and number
      uinfo displays "Matched creatures" i.e number of creatures matched by filter
      maxage, and minage filters accept float now
      slaughter flag displayed on uinfo cretures list
2020-09-19 14:52:16 +02:00
lethosor a4254a4d2c
xlsxreader: Don't link to zlib directly
It's complicated on Windows, and xlsxio already links to it directly
2020-09-18 15:04:06 -04:00
lethosor b85759620f
Switch libzip and xlsxio to be included with add_subdirectory(), disable xlsxio installation 2020-09-18 00:33:41 -04:00
lethosor 42d4d33571
Only modify xlsxreader target if it was created
Ref #1620
2020-09-17 15:41:29 -04:00
lethosor 1efa09582a
Change libexpat to be included with add_subdirectory()
- Confirmed that libexpat is built statically and linked with xlsxreader
- May need da7cda3a85 for Windows
- Although libexpat's CMake options are all prefixed with LIBEXPAT_, it also adds some cache entries like SIZE_T (from expat/ConfigureChecks.cmake). Unsure if these affect other libs.
- xlsxio may need additional reconfiguration after moving to add_subdirectory() to find libexpat/libzip on non-Linux platforms.
2020-09-17 00:25:50 -04:00
Myk Taylor 8660355838 formally declare used globals in fortplan 2020-09-08 21:30:12 -07:00
Myk Taylor 3b362294b9 move quickfort logic from Planner to buildingplan
where all the other gui-related logic is.
2020-09-08 17:34:11 -07:00
Myk Taylor f3da131db7 reorganize buildingplan code - no logic changes
- no API or logic changes, just moving code around
- split buildingplan-lib into planner and rooms files
- move business logic from .h files to .cpp files
2020-09-08 00:17:56 -07:00
lethosor 09b018bea6
stockpiles: remove sand_bags field
Fixes #1013
2020-08-29 20:04:09 -04:00
lethosor 23dc7727b5
Merge remote-tracking branch 'kristjanmoore/develop' into develop 2020-08-29 17:43:46 -04:00
George Murray a84a1f0ee9 Switch trade screen search to use search_multicolumn_modifiable so that item counts are updated correctly with other information 2020-08-25 14:15:41 -07:00
kristjanmoore 293b0253c4 Set min_waterfall special cases outside loop 2020-08-23 17:35:45 +00:00
kristjanmoore 3ebb812cd5 Allow searches for higher waterfalls 2020-08-23 13:20:45 +00:00
lethosor 45a0b7b3a6
Fix stockpiles crash when building food map
Fixes #1628

Broke due to ecd6bcc9ed
2020-08-18 21:00:10 -04:00
lethosor 19a4d1df5a
Merge remote-tracking branch 'myk002/quickfort_buildingplan' into develop 2020-08-17 23:43:05 -04:00
Myk Taylor 7a7aff7745 closing NULL pointers is ok 2020-08-15 23:37:21 -07:00
Myk Taylor e4a35514ab document buildingplan Lua API 2020-08-15 23:03:49 -07:00
Myk Taylor 4e331ce4ce much better NULL handling/detection for xlsxreader 2020-08-15 22:35:20 -07:00
Myk Taylor 42108a64b9 expose basic buildingplan functionality to Lua 2020-08-12 15:24:32 -07:00
Myk Taylor 0bda289b17 move xlsxreader identity statics to dfhack lib 2020-08-11 14:51:17 -07:00