From b8c33d8ed04e161f55e1df33b1ec13d676acad38 Mon Sep 17 00:00:00 2001 From: Myk Date: Fri, 1 Apr 2022 09:21:16 -0700 Subject: [PATCH] [quickfort] add documentation and test data for config mode (#2070) - documents the new config mode - adds integration test data for [quickfort] implement config mode scripts#361 - adds a note recommending that config mode be used instead of the quickfort query_unsafe setting - converts the dreamfort /setup blueprint to use config mode; also adjust the aliases used in that blueprint to no longer escape from and re-enter query mode - adds some more distinctive anchor names for the quickfort and blueprint guides --- data/blueprints/library/dreamfort.csv | 16 +++--- .../library/test/quickfort/list/all_modes.csv | 5 +- .../list/all_modes_separate_sheets.xlsx | Bin 15384 -> 16713 bytes .../list/all_modes_single_sheet.xlsx | Bin 4789 -> 4821 bytes dfhack-config/quickfort/quickfort.txt | 6 +-- docs/guides/examples-guide.rst | 1 + docs/guides/quickfort-library-guide.rst | 1 + docs/guides/quickfort-user-guide.rst | 49 ++++++++++++++++-- scripts | 2 +- 9 files changed, 61 insertions(+), 19 deletions(-) diff --git a/data/blueprints/library/dreamfort.csv b/data/blueprints/library/dreamfort.csv index e2de895af..801bb32e6 100644 --- a/data/blueprints/library/dreamfort.csv +++ b/data/blueprints/library/dreamfort.csv @@ -55,7 +55,7 @@ Optionally copy the premade profession definitions from hack/examples/profession Optionally copy the premade Dreamfort embark profile from the online spreadsheets to the data/init/embark_profiles.txt file "" -- Set settings and preload initial orders -- -quickfort run library/dreamfort.csv -n /setup,# Place the cursor on the center of your starting wagon. Run before making any manual adjustments to settings! Run the /setup_help blueprint for details on what this blueprint does. +quickfort run library/dreamfort.csv -n /setup,# Run before making any manual adjustments to settings! Run the /setup_help blueprint for details on what this blueprint does. "quickfort orders library/dreamfort.csv -n ""/surface2, /farming2, /surface3, /farming3, /industry2, /surface4""","# Queue up orders required to get the fort minimally functional and secure. You can remove the order for the anvil (you brought one with you, right?)." "" -- Find a good starting spot on the surface -- @@ -134,19 +134,19 @@ The following settings are changed: These are all set for your convenience. Nothing in Dreamfort depends on these settings staying as they are. Feel free to change any setting to your personal preference. "" #aliases -startnobles: ^n{Down 4}{togglesequence 8}{Up}s{Up}&^^q -startorders: ^ohrov^Wl^^q -startburrows: ^wa&nInside&^^q +startnobles: n{Down 4}{togglesequence 8}{Up}s{Up}&^^ +startorders: ohrov^Wl^^ +startburrows: wa&nInside&^^ metalarmorsetup: A{Right 2}{Down 2}&{Down}&{Left}&M{Right}{Down}&{Left}{Down}{Right}{Down}&{Left}{Down 2}L{Right}{Down 2}&{Left}{Down 3}&M{Right}{Down}&{Left 2} -startmilitary: ^mnr{Down}r{metalarmorsetup}{Down}racNSiege&{Right}&^q +startmilitary: mnr{Down}r{metalarmorsetup}{Down}racNSiege&{Right}&^ sethotkey: {fkey}n{name}& -starthotkeys: ^H{sethotkey fkey={F2} name=Farming}{sethotkey fkey={F3} name=Industry}{sethotkey fkey={F4} name=Services}{sethotkey fkey={F5} name=Guildhall}{sethotkey fkey={F6} name=Quarry}{sethotkey fkey={F7} name=Cavern}{sethotkey fkey={F8} name=Magma}^q +starthotkeys: H{sethotkey fkey={F2} name=Farming}{sethotkey fkey={F3} name=Industry}{sethotkey fkey={F4} name=Services}{sethotkey fkey={F5} name=Guildhall}{sethotkey fkey={F6} name=Quarry}{sethotkey fkey={F7} name=Cavern}{sethotkey fkey={F8} name=Magma}^ "" -"#query label(setup) start(center tile of the wagon) message(Please set the zoom targets of the hotkeys (the 'H' menu) according to where you actually end up digging the levels. +"#config label(setup) message(Please set the zoom targets of the hotkeys (the 'H' menu) according to where you actually end up digging the levels. As you build your fort, expand the ""Inside"" burrow to include new civilian-safe areas. Optionally, add a leather cloak to your military uniforms to enhance the protection of the uniforms. Nothing in Dreamfort depends on these settings staying as they are. Feel free to change any setting to your personal preference.) assign nobles, set standing orders, create burrows, make adjustments to military uniforms, and set hotkey names" -{startnobles}{startorders}{startburrows}{startmilitary}{starthotkeys}{F1} +{startnobles}{startorders}{startburrows}{startmilitary}{starthotkeys} "#meta label(dig_all) start(central stairs on industry level) dig industry, services, guildhall, suites, and apartments levels. does not include farming." # Note that this blueprint will only work for the unified dreamfort.csv. It won't work for the individual .xlsx files (since #meta blueprints can't cross file boundaries). "" diff --git a/data/blueprints/library/test/quickfort/list/all_modes.csv b/data/blueprints/library/test/quickfort/list/all_modes.csv index 96594220f..c8a042846 100644 --- a/data/blueprints/library/test/quickfort/list/all_modes.csv +++ b/data/blueprints/library/test/quickfort/list/all_modes.csv @@ -3,7 +3,8 @@ #place hidden() #zone hidden() #query hidden() -#meta hidden() -#notes hidden() +#config hidden() #ignore #aliases +#meta hidden() +#notes hidden() diff --git a/data/blueprints/library/test/quickfort/list/all_modes_separate_sheets.xlsx b/data/blueprints/library/test/quickfort/list/all_modes_separate_sheets.xlsx index 4fcfbf867276b0ce288dcab88212f1b91ab3a1f8..47445283f0b0a6e557a28283be8e5edb71b87467 100644 GIT binary patch delta 7114 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 Of~*gKKwXl!ZvO?r9pG62 delta 6795 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 E0mEkQ&j0`b diff --git a/data/blueprints/library/test/quickfort/list/all_modes_single_sheet.xlsx b/data/blueprints/library/test/quickfort/list/all_modes_single_sheet.xlsx index 052f4e3fb7f41e7b943437c23c97608886f7d047..51331918c164ff954d22ca33d5166234ae5dbcd5 100644 GIT binary patch delta 1650 zcmaKse>Bs37{|Y}$z0pA83_xSSt&|LF8R5sL@QDhDH}1g5NR>2OPZg3qa=wSKC7o{0J?DP@`aI8hf1dMvp7VM?WtttDD2go5o5O5my~M&EItsAaf4b1F0#r3Pz(8KsR>R>EptienAn#1wPNAC$AD zJW;zv;P7kYS#_4;!GVnPj*gQO=fVM#x{^Gi8CE2|Gra#dlN|INiiXj;nl$1hCA^8L zo|sRtW|C|6LwpK*5SD+?>ykc@Y%8WqS6x*1yZHgwug#LqC!9B6;9%0!^8t*_)PPv4 zF)96D0_?RlV zr&%@GvCS@h8uc8D_nXrZp1fA&7}EN#d-!eLlj{`@F2$LHd=k9s!r0!IBdXccw%V@g z-Q9Z(%fAuM2#mhmd!LsXw`T`e?{cOLCe-^hn|K{XR}|7h4tGWDTaR(;O_IPw1Z(Bh9AD_u2PUQO{RA$qdW!dpB^m-LTi(6BpPPC+S&jBc(^c)vVau(!5%HmAR?UhT=4-sEEC zma|gnFzH@;6y_}~s2jI_#^bNvvsrlSaby3Q#tZg(tuZqWtNW>gfx0yOBatO(RxyTI zA2pIQbQH=C8rdt_n0S1K1(ji6u9EQv4SWw^Gt-8;pEWbg{7?K@(O=?n8h)dn96`Hr zN#VoQw+Vflb({!HyN_h!)Y;1e4E9}UVr2)p!Mo+ciyVnnP&6Z`BwHYv*EE@46~G>L z6j_v1V%=-xSjV-y^&igRJ5Oo{inuR(@yA;{Acesqxkq~RaIYfPl{$(Ds{c_-EyM7Q zUI=Uy!-;DXtU&T_i`yeyP|E4vZz@>U%3&h|;Bb3a>NNZD#wnDIcgL$X`CVBYIhmAt zlic^yw{$FRNCC|+i?WSkVuM_d(VE(DejW$dE7@slHfws(ZZ=Y&UAroW1Dxk}hln@# z?XBJtSvgn$@{(B(>7Pw^K1sKlC}Vb6aR+<{4B}jPFUn;#4(-DQ(b*`D+SE)q|_{RLI zjs*mYVE=F_$#g0WtvgY9B(%y>AH`@T36u=jjK(d+?-t^V2rvPm@}ItVC$iM|3w4MKrOdQHI(oULVX5*c?RZ(!9n+Fz8n#!-xsL@$ev}MLIPK0`Yk2}hhB4m|gwEENtre$8wCUM)J z5#&K0*n1)^*Tu1mmYzs@V&Hh7u^H#FnN3~k<0)Og^*UI58ITB>iq+mY;vie2y_R#0 z9VX3er7F>_>317Pnz^P+LH1QGB&ml5s(8N_4jRN*W+aX~Np!`0a1PCFvS10`$?aft zjY+6fmdk}v<(Z-Z7<^%aLeSIqv~vFvylTcMm6HUUSfuc(dcFynux+rfknE-HSRsniBT?cPahh9$eF2X{SRJJr-TP zIDoxELOJ0W>~<3BG%lF^%Xb6L?r#+rNyR12&y621H;?QM6CP++7LLPW-8bP;2m72U z-O0k;pop%a%Go%7FSS*ViA})PQW$y=!kc{w0e}!eU@P9W17C}MRviD1A4*sPH2xiD zd=$np&vzKx)N8{8J0$&M33S)m>_k*6gbdBDD7H4Fp`maggQ~8*%+fmH^Bn~}4E27kcdSP_oV{){N=udUD>;ZMO z@=^~s1XHmZvnPC*&~Ug=WZ%rP=b^kppX3X3f#fSy47-HGU2XSx)fiM%`r1lCgnl?= zTZ7hB8}Bv%0J64p_*R1!`>o{H1K&cSbge*8QACW{>N}{7Si7{rUmIpMK)AGzjeeE6 z_x3x4%w%FFAr5+0vF~bk;kkHy$|@Il&WcA|PFY4C$ANZ7Y?iCCpU(@DG}fxIp-F zECVJ{XvU0wlp5`o=&0R(va@{V_bZgkhn({!eFM5_Yvv!88-~79vNF7INxcZJ~b9@M3pPR8+frpO+o; z9_t#o^(ngTp_sz`Du&PGOsb$}k`YI*2ATyMPnk=seH7vvS-*AG@ zRi=Jdg!6WfX(?!=sV$~<(UyoK!_|xN>%wArmQ_OL;!5Xfkr_XNpKA+=yy?(3jP6Ge$eF;|V;urs?!!*Ba#uxB6p9i6&QatEO zN*8eyzP&ZSP7-(-p}#XNwFnF(2pmG_?Aa#JvZ8(_@B_d@aR89~YO8G!3Thzte&&2@ zMf86-C!OA#BMYwp(lqWrO}G%+CFI6b8ZqIjDU?f{1O-zq%o%l>h($ diff --git a/dfhack-config/quickfort/quickfort.txt b/dfhack-config/quickfort/quickfort.txt index 3a57bfbaf..e3f5aeaec 100644 --- a/dfhack-config/quickfort/quickfort.txt +++ b/dfhack-config/quickfort/quickfort.txt @@ -22,9 +22,9 @@ force_marker_mode=false # Skip query blueprint sanity checks that detect common blueprint errors and # halt or skip keycode playback. Checks include ensuring a configurable building # exists at the designated cursor position and verifying the active UI screen is -# the same before and after sending keys for the cursor position. Temporarily -# enable this if you are running a query blueprint that sends a key sequence -# that is *not* related to stockpile or building configuration. +# the same before and after sending keys for the cursor position. If you find +# you need to enable this for one of your own blueprints, you should probably be +# using a config blueprint, not a query blueprint. query_unsafe=false # Set to the maximum number of resources you want assigned to stockpiles of the diff --git a/docs/guides/examples-guide.rst b/docs/guides/examples-guide.rst index add0ceb28..409ceaa00 100644 --- a/docs/guides/examples-guide.rst +++ b/docs/guides/examples-guide.rst @@ -1,3 +1,4 @@ +.. _config-examples-guide: .. _dfhack-examples-guide: DFHack Example Configuration File Index diff --git a/docs/guides/quickfort-library-guide.rst b/docs/guides/quickfort-library-guide.rst index 1878fdd7a..366272052 100644 --- a/docs/guides/quickfort-library-guide.rst +++ b/docs/guides/quickfort-library-guide.rst @@ -1,3 +1,4 @@ +.. _blueprint-library-guide: .. _quickfort-library-guide: Blueprint Library Index diff --git a/docs/guides/quickfort-user-guide.rst b/docs/guides/quickfort-user-guide.rst index efd19d1c1..fd4156f36 100644 --- a/docs/guides/quickfort-user-guide.rst +++ b/docs/guides/quickfort-user-guide.rst @@ -1,5 +1,5 @@ -.. _quickfort-user-guide: .. _quickfort-blueprint-guide: +.. _quickfort-user-guide: Quickfort Blueprint Editing Guide ================================= @@ -1077,12 +1077,13 @@ Other blueprint modes In addition to the powerful ``#meta`` mode described above, there are a few additional blueprint modes that become useful when you are sharing your blueprints with others or managing complex blueprint sets. Instead of mapping -tile positions to map modifications and keystroke sequences like the basic modes -do, these "blueprints" have specialized, higher-level uses: +tile positions to map modifications like the basic modes do, these "blueprints" +have specialized, higher-level uses: ============== =========== Blueprint mode Description ============== =========== +config Play back key sequences that are not related to map tiles notes Display long messages, such as help text or blueprint walkthroughs aliases Define aliases that can be used by other ``#query`` blueprints @@ -1091,6 +1092,44 @@ ignore Hide a section of your spreadsheet from quickfort, useful for scratch space or personal notes ============== =========== +.. _quickfort-config-blueprints: + +Config blueprints +````````````````` + +A ``#config`` blueprint is used to send unfiltered keystrokes directly to the +DF UI without interacting with specific map tiles. They have access to the same +keystroke aliases as ``#query`` blueprints, but ``#config`` blueprints differ +from ``#query`` blueprints in a few critical ways: + +- Whereas the "home" mode for ``#query`` blueprints is the "query" mode + (:kbd:`q`), ``#config`` blueprints start on the default map screen -- the view + you have when you're looking at the map with no sidebar visible. The keystroke + or alias sequence in each spreadsheet cell in a ``#config`` blueprint must + begin and end on the default map screen. +- The cursor position is not set for ``#config`` blueprints. This means that it + doesn't matter what spreadsheet cell you put your text in. The blueprint cell + location does not correspond to a map tile. + +A ``#config`` blueprint is best used for accessing game menus that are not +associated with map tiles, such as the hotkey menu (:kbd:`H`), the military +menu (:kbd:`m`), or the standing orders menu (:kbd:`o`). In other words, use a +``#config`` blueprint when you want to configure the game itself, not the tiles +on the map. A ``#config`` blueprint is better for these menus than a ``#query`` +blueprint because the cursor can jump around in unpredictable ways when +accessing these non-cursor modes and then re-entering query mode. This will +cause quickfort to detect a ``#query`` blueprint error and stop executing. +Also, ``#query`` blueprints will skip playing back a key sequence entirely if +it doesn't detect a building or zone on the target tile. A ``#config`` +blueprint doesn't need a building or zone to exist in order to run. + +Note that you *can* enter any mode you want during a ``#config`` blueprint +keystroke sequence (as long as you get back to the default map screen by the end +of the sequence), even modes that provide a cursor on the screen. It's just that +the position of that cursor is not guaranteed to be on any specific tile. If you +need access to a cursor, you probably should be using a ``#query`` blueprint +instead. + .. _quickfort-notes: Notes blueprints @@ -1779,10 +1818,10 @@ Links - `Quickfort command reference ` - `quickfort-alias-guide` -- `quickfort-library-guide` +- `blueprint-library-guide` - :forums:`Quickfort forum thread <176889>` - :issue:`DFHack issue tracker <>` -- :source:`Quickfort blueprint library source ` +- :source:`Blueprint library source ` - :source-scripts:`Quickfort source code ` **Related tools:** diff --git a/scripts b/scripts index 946fdffdf..7205e4ec2 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 946fdffdf113e3ef11aa87b817ee8ea136daad55 +Subproject commit 7205e4ec20d3df0f2c12e2f279cb4d9205673e6c