305 Commits

Author SHA1 Message Date
5cb6ae1d0c get fix-rpaths from the new remote url
All checks were successful
CI / linux (push) Successful in 12m20s
2025-09-14 13:12:53 -05:00
2467bea3cb Update README
All checks were successful
CI / linux (push) Successful in 11m54s
2025-09-14 12:11:49 -04:00
419a36ac9c fix clicking 'ok' in edit item dialog
All checks were successful
CI / linux (push) Successful in 12m23s
2025-09-14 10:20:23 -04:00
843349db3a fix crash with up/down key on empty field 2025-09-14 10:20:22 -04:00
7beaa9da1d fix bug undoing draw monster 2025-09-14 10:20:22 -04:00
30f6243328 Town and scenario timers are supposed to repeat 2025-09-14 10:20:22 -04:00
e6aa42bd5d fix 'frill up terrain' prompting town entrance/sign text change 2025-09-14 10:20:22 -04:00
a483377765 fix highlighting everything on strchoice page left/right 2025-09-14 10:20:22 -04:00
5ff8f5c1e0 fix change cursor when hovering field 2025-09-14 10:20:22 -04:00
6a9f5907b9 show better changesite for floodfill/terrain frill/item place 2025-09-14 10:20:22 -04:00
5dde7784de fix crash showing change site at edge of world 2025-09-14 10:20:22 -04:00
43d3acb5f9 remove Spiderweb Software copyright & concact info from docs 2025-09-14 10:20:22 -04:00
b36c2f3a14 fix draw zoomed-out teranim in scenedit 2025-09-14 10:20:22 -04:00
5d8b31ed11 update search highlights when paging left/right. fix #791 2025-09-14 10:20:22 -04:00
75f44a0ad3 cScenario copy constructor copy sdf_names 2025-09-14 10:20:21 -04:00
929102b420 substitutions no longer needed 2025-09-14 10:20:17 -04:00
ffd375e90f make get_sdf_name() const 2025-09-14 10:15:56 -04:00
8ff9853e65 add an is_new check 2025-09-14 10:15:56 -04:00
148c90dd20 Fix another bug in creating special encounters 2025-09-14 10:15:55 -04:00
05117507e2 PC editor also clear creature save 2025-09-14 10:15:55 -04:00
aa44b43dc7 Clear saved monsters when exiting scenario. Fix #786 2025-09-14 10:15:55 -04:00
8534d312b6 try allowing implicit fallthrough in xcode 2025-09-14 10:15:55 -04:00
204e00aa25 Fix rendering UTF-8 text 2025-09-14 10:15:54 -04:00
ab302595ff has_class require_charges allow item w/ 0 max charges 2025-09-14 10:15:53 -04:00
93c9d01df3 add name to funding list 2025-09-14 10:15:53 -04:00
728bf3d107 add donor to credits 2025-09-14 10:15:52 -04:00
44c5e66d10 starting with stairways, show more info in edit special list 2025-09-14 10:15:52 -04:00
a13f17c692 town entry autosave wait for specials to run. fix #781 2025-09-14 10:15:50 -04:00
74bb7d39b8 queue_special() return whether special was queued 2025-09-14 10:15:50 -04:00
cdc50d09eb When shifting to town entrance, show outdoor loc str
Fix #693
2025-09-14 10:15:49 -04:00
00382869a5 fix grammar in special node description 2025-09-14 10:15:49 -04:00
3ee2428044 ignore uninitialized Rectangle 1-8 2025-09-14 10:15:49 -04:00
480a56084d Draw roads with brown dots. Fix #782 2025-09-14 10:15:49 -04:00
a8aaa085bd feature flag keep doors easier in old scenarios 2025-09-14 10:15:48 -04:00
d36eb0dc9f fix monsters rendering backwards. fix #785 2025-09-14 10:15:48 -04:00
6bc2efe349 fix loc_off_act_area for outdoors 2025-09-14 10:15:48 -04:00
fac5f0b5bc fix place/edit special node tool 2025-09-14 10:15:48 -04:00
5fbc4c7321 fix party disappearing in huge town 2025-09-14 10:15:47 -04:00
afed802900 shortcut to get all gold in reach 2025-09-14 10:15:47 -04:00
a387ff0627 better handling for out-of-sight ranged/boom anim 2025-09-14 10:15:47 -04:00
92437c57a7 remove redundant boat/horse initialization 2025-09-14 10:15:47 -04:00
7a74f0852b make boats and horses exist in legacy scenarios 2025-09-14 10:15:47 -04:00
8ba606056e shrink talk text when it doesn't fit 2025-09-14 10:15:47 -04:00
edf33686f1 big monsters check whole footprint for safety. Fix #757 2025-09-14 10:15:47 -04:00
360f381b49 big monsters don't take extra field damage from multiple of same 2025-09-14 10:15:46 -04:00
376ab08b8d fix monster field infliction logic. Fix #765 2025-09-14 10:15:46 -04:00
1b0a7aa76a fix empty monsters in activate_groups() 2025-09-14 10:15:46 -04:00
2fe229f978 Don't draw trims on top of characters in combat 2025-09-14 10:15:46 -04:00
a5a5907847 delete obsolete branch which caused unintended roads to draw 2025-09-14 10:15:46 -04:00
5a46c8aaee Fix walkway trims. Fix #136 2025-09-14 10:15:46 -04:00
d8325822ce reuse RenderTexture 2025-09-14 10:15:46 -04:00
bde8fe9728 Fix replaying scenario list with recursive scenario folder structure 2025-09-14 10:15:46 -04:00
d37236dab1 bounds check when importing legacy journal entry 2025-09-14 10:15:46 -04:00
59ead0c5b3 resize vector2d to have room for legacy load 2025-09-14 10:15:45 -04:00
00d4c9aab4 blank out scen_name on legacy record if not in_scen 2025-09-14 10:15:45 -04:00
55257ab995 ignore quote at start of scen name alphabetical 2025-09-14 10:15:45 -04:00
1ea170900e Scenario picker handle names with first character numeric 2025-09-14 10:15:45 -04:00
b48cccca64 loading scen headers, skip parts of legacy load that may error 2025-09-14 10:15:44 -04:00
cfd6f130fb More .gitattributes stuff
All checks were successful
CI / linux (push) Successful in 11m45s
2025-09-13 18:40:20 -04:00
23934e942a fix .gitattributes
Some checks failed
CI / linux (push) Has been cancelled
2025-09-13 17:38:03 -05:00
26f30ef956 Disable workflows without runners
All checks were successful
CI / linux (push) Successful in 12m23s
2025-09-13 16:53:49 -05:00
d133084867 VoDT typo fix
Some checks failed
CI / linux (push) Successful in 11m21s
CI / macos-xcode (push) Has been cancelled
CI / macos-scons (push) Has been cancelled
CI / win-vs32 (push) Has been cancelled
CI / win-vs64 (push) Has been cancelled
CI / win-scons (push) Has been cancelled
2025-09-13 14:56:56 -05:00
e74a9c3a36 install xvfb for ci
Some checks failed
CI / macos-xcode (push) Has been cancelled
CI / macos-scons (push) Has been cancelled
CI / win-vs32 (push) Has been cancelled
CI / win-vs64 (push) Has been cancelled
CI / win-scons (push) Has been cancelled
CI / linux (push) Has been cancelled
2025-09-13 14:56:08 -05:00
4f8de5d066 install cmake for linux ci
Some checks failed
CI / linux (push) Failing after 4m42s
CI / macos-scons (push) Has been cancelled
CI / win-vs32 (push) Has been cancelled
CI / macos-xcode (push) Has been cancelled
CI / win-vs64 (push) Has been cancelled
CI / win-scons (push) Has been cancelled
2025-09-13 14:48:10 -05:00
7b6fdbb2a9 pass -y to apt-get in linux ci
Some checks failed
CI / linux (push) Failing after 1m32s
CI / macos-xcode (push) Has been cancelled
CI / macos-scons (push) Has been cancelled
CI / win-vs32 (push) Has been cancelled
CI / win-vs64 (push) Has been cancelled
CI / win-scons (push) Has been cancelled
2025-09-13 14:42:22 -05:00
e71403c91a gitattributes for linguist
Some checks failed
CI / linux (push) Failing after 15s
CI / macos-scons (push) Has been cancelled
CI / macos-xcode (push) Has been cancelled
CI / win-vs32 (push) Has been cancelled
CI / win-vs64 (push) Has been cancelled
CI / win-scons (push) Has been cancelled
2025-09-12 18:47:39 -05:00
89307b7aca Fix typo 2025-08-28 18:23:26 -04:00
97e1263287 A couple more fmtlib uses 2025-08-19 19:51:58 -04:00
8c2b3d5375 A few more fmtlib uses 2025-08-19 19:51:58 -04:00
af75e581c7 This should fix a couple warnings seen in the Linux CI 2025-08-19 19:51:58 -04:00
436276e02b Fix some uses of deprecated SFML API 2025-08-19 19:51:58 -04:00
2c28b226bc More fmtlib uses 2025-08-19 19:51:58 -04:00
ecc3f24bf6 More use of fmtlib 2025-08-19 19:51:58 -04:00
c0d6b7a83f Use fmtlib for spell info in shops 2025-08-19 19:51:58 -04:00
b0d1c0dbfb Use fmtlib for Capture Soul message 2025-08-19 19:51:58 -04:00
9780067808 Use fmtlib for some command-line errors 2025-08-19 19:51:58 -04:00
db4a00da7c More uses of fmtlib.
This file has some other things that could probably use fmtlib, but they're a bit tangled up and I don't feel like untangling them right now.
2025-08-19 19:51:58 -04:00
486e435422 Use fmtlib for journal and quest info 2025-08-19 19:51:58 -04:00
3dd9fae202 Use /utf-8 for Windows cl builds 2025-08-19 19:51:58 -04:00
a233eeb853 Use fmtlib for startup screen stats. 2025-08-19 19:51:58 -04:00
fe1b0cfad3 Use fmtlib to construct the teaser1 string 2025-08-19 19:51:58 -04:00
3e2d987902 VSCode likes adding every possible standard C++ header to the file association list. I generally just roll with it, so here's the current list. 2025-08-19 19:51:58 -04:00
32c81f277e Use fmtlib for job bank and scenario picker descriptions. 2025-08-19 19:51:58 -04:00
3c82a4e74d Avoid duplicate messages with the new damaged_msg function 2025-08-19 19:51:58 -04:00
faa1a81306 Avoid message duplication with the new spell_note function. 2025-08-19 19:51:58 -04:00
7451e25739 Rework spell notes and several other common messages.
* Spell notes are now an enum instead of a magic integer.
* The functions are now defined in iLiving instead of cCreature, meaning they can be called on PCs.
* They now use fmtlib to interpolate the name.
* A creature attacking themself now prints "Name attacks themself" instead of "Name attacks Name".
2025-08-19 19:51:58 -04:00
a4b30a9843 Convert more buffer messages to fmtlib 2025-08-19 19:51:58 -04:00
731c2d60d6 Convert some buffer messages to use fmtlib. 2025-08-19 19:51:58 -04:00
6073b3a8f4 Add fmtlib to MSBuild 2025-08-19 19:51:58 -04:00
0fc5eb8dd9 Add fmtlib to scons 2025-08-19 19:51:58 -04:00
f91c52ee5d Pull in fmtlib as a dependency 2025-08-19 19:51:58 -04:00
390fe3ad63 Allow CI to be triggered from command-line 2025-08-12 09:52:44 -04:00
b7b72e2129 Add build tasks to the Visual Studio Code workspace file to enable building with MSBuild in VSCode. 2025-08-03 19:01:50 -04:00
66c29fdd34 Hilite the hovered element in the types palette. 2025-08-02 01:43:15 -04:00
3bb416b1e4 Adjust scenario editor scroll bar size/positioning.
FIxes #772
2025-08-02 01:10:54 -04:00
e9212db929 Rename function for consistency of naming style 2025-08-02 01:03:35 -04:00
bf46b235eb For some reason, the compiler was allowing assignment to these returned locations. That has no effect and is broken, so add const to prevent it. 2025-08-02 00:33:41 -04:00
2c1e52364d It seems that a no-op function was somehow substituted for the correct one, so let's fix that. 2025-08-01 23:31:26 -04:00
dfba555a05 Fix all compiler warnings in the game code. 2025-08-01 23:30:21 -04:00
afb9554eda Fix all scenario editor compiler warnings except the ones in the Boost.Process header. 2025-08-01 23:25:22 -04:00
6b98992920 win-scons CI use windows-2022 2025-07-03 07:29:45 -04:00
e4de1672ab redirect 7-zip check to NUL
Co-authored-by: Celtic Minstrel <CelticMinstrel@users.noreply.github.com>
2025-07-03 07:29:45 -04:00
95e0cfc1c5 Fix call_focus_handlers arg behavior. Fix #768 2025-07-03 07:29:45 -04:00
50793aa79e Do not move/delete files if 7-zip not installed 2025-07-03 07:29:45 -04:00
c95790b8b1 Note that 7-zip is required
Fix #769
2025-07-03 07:29:45 -04:00
6da3074598 fix logic error when Call Global Node is used in edit stack 2025-06-22 17:12:22 -05:00
846202720b flip && operands 2025-06-22 16:59:01 -05:00
1f49703905 Custom graphics: cancel handles ALL 2025-06-22 16:57:10 -05:00
47ae32aaa9 update UI and code to clarify that out wandering locs are shared 2025-06-22 11:19:13 -05:00
8ffd3f2ef6 Update code and UI to clarify that town wandering locs are shared 2025-06-22 10:17:36 -05:00
f846a14548 revert bad change -- never save empty items/creatures 2025-06-21 17:56:52 -05:00
81d95d5801 undo/redo for creating area description rects 2025-06-21 17:39:02 -05:00
5ca8121be9 undo/redo for town bounds and saved item rects 2025-06-21 17:19:58 -05:00
c1b8ab90a0 undo/redo for clearing special nodes 2025-06-21 16:59:06 -05:00
4dbec05b3c undo/redo for create/edit special 2025-06-21 16:51:41 -05:00
96c7d8924c support loops in the edit stack 2025-06-21 15:57:06 -05:00
db153316f1 make edit_stack a vector 2025-06-21 15:00:19 -05:00
bcb1d4a055 undo/redo for deleting special nodes 2025-06-21 14:25:27 -05:00
8ad0044761 undo/redo for creating strings 2025-06-21 13:31:27 -05:00
5b0806467a undo/redo for deleting non-location strings 2025-06-21 12:52:31 -05:00
b2c69554f3 fix undo/redo edit town text and outdoor text 2025-06-21 12:29:39 -05:00
66d6e197b9 undo/redo for clearing non-location strings 2025-06-21 12:20:12 -05:00
a37931121c undo/redo for editing all string types 2025-06-21 12:10:20 -05:00
db62203017 undo/redo for clear location string 2025-06-21 11:34:34 -05:00
69c7e4a293 undo/redo for talk nodes handle edit stack 2025-06-20 17:15:30 -05:00
6c0244b23a fix cancel last new talk node in stack 2025-06-20 17:03:19 -05:00
fa91a6086b undo/redo for deleting strings tied to location/rectangle 2025-06-20 12:18:26 -05:00
cc5549d76a remove unreachable code 2025-06-20 12:00:41 -05:00
93a6deb71a don't allow edit sign text on non-sign 2025-06-20 10:52:54 -05:00
6044232713 undo/redo for edit talk node 2025-06-20 10:17:37 -05:00
9e22ed04ea undo/redo for create/delete talk node 2025-06-20 09:57:47 -05:00
8f83427d3f undo/redo for edit personality 2025-06-20 09:24:20 -05:00
a59dc176bf never delete existing talk nodes on cancel edit 2025-06-20 08:47:31 -05:00
75f9dbcc80 remove duplicate operator== implementation 2025-06-20 08:31:43 -05:00
00a1d8f889 undo/redo for outdoor encounters 2025-06-19 21:22:13 -05:00
855310c516 undo/redo for outdoor details 2025-06-19 20:20:58 -05:00
539b8bb697 undo/redo for town event timers 2025-06-19 19:51:24 -05:00
56e3a6e627 undo/redo for advanced town details 2025-06-19 19:40:03 -05:00
77d7212801 undo/redo for town wandering monsters 2025-06-19 18:33:16 -05:00
de9b383418 undo/redo for town details 2025-06-19 18:06:29 -05:00
8d26268e7d undo/redo for editing item shortcuts 2025-06-19 17:07:53 -05:00
1db78b4a1b add terrain picture to item shortcut editor 2025-06-19 17:05:14 -05:00
b075912197 fix bug and typo in edit item shortcuts dlog 2025-06-19 16:46:28 -05:00
f0590563e1 undo/redo for scenario event timers 2025-06-19 15:51:55 -05:00
d161252514 fix stack widgets calling focus handlers during construction 2025-06-19 15:36:14 -05:00
6b6c25931e undo/redo for town variable entry 2025-06-19 15:16:16 -05:00
4fb6c686ae fix xcode build 2025-06-19 14:53:17 -05:00
ae70d7168d undo/redo for advanced details 2025-06-19 14:51:01 -05:00
109677ce29 undo/redo becomes unsafe after load new scenario, so clear it 2025-06-19 14:16:32 -05:00
37edfd9429 undo/redo for classifying graphics 2025-06-19 10:43:45 -05:00
e04e261afa undo/redo for editing intro text/picture 2025-06-19 10:22:11 -05:00
f7d145db70 undo/redo for scenario details, without changing cScenario 2025-06-19 09:57:36 -05:00
d7b225fa24 Show custom sounds without names in picker. fix #761 2025-06-18 12:49:54 -05:00
89a3e04187 undo/redo for replacing a sound 2025-06-18 12:48:57 -05:00
5d4ff5134d undo/redo create/delete custom sound 2025-06-18 11:50:56 -05:00
7ed3f36351 scenedit always play sounds when working with sounds 2025-06-18 11:37:39 -05:00
ab497f1b1d custom sounds window hide non-import buttons for nonexistent sounds 2025-06-18 11:25:30 -05:00
14014382b3 undo/redo for replacing custom sheet 2025-06-18 10:46:48 -05:00
403a742375 fix import/paste image not updating the view 2025-06-18 08:53:09 -05:00
de3090b737 undo/redo for deleting graphics sheets 2025-06-18 08:35:51 -05:00
0102560b14 Fix bug with removing some deleted sheets from vector 2025-06-18 08:12:49 -05:00
74c9439312 undo/redo create graphics sheet 2025-06-17 16:27:09 -05:00
a80c9e9367 Sort sheet indices read from graphics folder 2025-06-17 15:55:46 -05:00
ac1798ef8e add parens for xcode 2025-06-16 19:57:24 -05:00
3c18822d78 draw the 1 row/column from next outdoor section as transparent 2025-06-16 09:15:15 -05:00
4f49c0f764 undo/redo for setting special number 2025-06-14 20:42:19 -05:00
a3a10ca6e4 undo/redo for placing and pasting specials 2025-06-14 20:04:44 -05:00
eab83c2112 undo/redo for drawing/erasing fields 2025-06-14 19:13:03 -05:00
1f9daccf2d set outdoor wandering encounter locations individually 2025-06-14 13:49:25 -05:00
2d26fa7bb3 town wandering encounter dlog: 4 pick buttons, loc picker
Fix #686
2025-06-14 13:09:42 -05:00
534dc682be undo/redo place scenario start loc 2025-06-14 11:49:52 -05:00
332b360232 fix cTerrainAction::showChangeSite() 2025-06-14 11:49:34 -05:00
472f80896a fix inheritance of undo()/redo() in cTerrainAction 2025-06-14 11:48:40 -05:00
d834af5d4c undo/redo place 4 town entrances 2025-06-14 10:55:17 -05:00
a64a897a25 undo/redo for import outdoor section 2025-06-14 10:08:51 -05:00
5faeab88f0 fix prompt when importing outdoor sector 2025-06-14 10:05:24 -05:00
978af61054 Safely import towns of different size. fix #760 2025-06-14 10:03:34 -05:00
3f8eed39c7 undo/redo import town 2025-06-14 09:17:32 -05:00
6fd25f8f4f Fix range check for import town choice 2025-06-14 08:59:43 -05:00
699eba511e undo/redo for resizing outdoors 2025-06-14 08:47:49 -05:00
9e916a7f35 fix infinite loop in writeTownToXml 2025-06-13 11:26:14 -05:00
9f95ca4fe1 try fix builds for other platforms 2025-06-13 09:41:57 -05:00
f3d54080c8 add escbtn to edit-townperson 2025-06-13 09:14:11 -05:00
0e157cf434 scenario editor disable undo/redo when dialog is open.
fix #758
2025-06-13 09:13:46 -05:00
ac5a8eeb6a Fix copy/paste text in scenario editor for mac (#648) 2025-06-13 08:37:42 -05:00
d56eb7d55f fix lots of bugs in undo edit/create core types 2025-06-12 21:24:47 -05:00
27c3235498 fix bugs in undo for edit/clear quest/spec item 2025-06-12 17:38:08 -05:00
0e6db29636 mark 3 places where a bug can happen 2025-06-12 17:38:07 -05:00
7e9fbe75a2 undo/redo for edit/clear shop 2025-06-12 17:38:07 -05:00
71629e45bd undo/redo for edit/clear quest 2025-06-12 17:38:07 -05:00
9aa348e28d undo/redo for editing/clearing a special item 2025-06-12 17:38:04 -05:00
db74edfc8b fix wrong type on arg 2025-06-12 14:17:58 -05:00
b089770efd undo/redo create/delete quest/shop 2025-06-12 14:07:24 -05:00
46c00579d1 WIP editing/creating/deleting types, show the change site 2025-06-12 13:58:51 -05:00
7083b415cd when undo/redo create/delete special item, show special item list 2025-06-12 12:48:29 -05:00
92dc716c4d Make the rest of editing modes restorable 2025-06-12 12:40:09 -05:00
6b4e7a0ca6 remove another unnecessary hard-coded terrain check 2025-06-12 12:11:12 -05:00
c9e7689877 remove hard-coded outdoor monster movement terrain check 2025-06-12 12:04:29 -05:00
31e53cc963 document a hardcoded pit check 2025-06-12 11:36:32 -05:00
7d8738904a remove unused, hard-coded lava check from scenedit 2025-06-12 11:17:30 -05:00
07b6044d36 undo/redo create/delete special item 2025-06-12 10:47:05 -05:00
6d7711dd22 start remembering/restoring last open editor menu 2025-06-12 09:58:13 -05:00
7b674ffb5c remove unused parameter from restore_editor_state()
I can't remember what it was for.
2025-06-12 09:51:19 -05:00
74dce15e4c Comments help find where related editor state functions are 2025-06-12 09:47:18 -05:00
854f18ff9e make editing special items a mode 2025-06-12 09:07:21 -05:00
47b9ee9e3b remove TODO I decided not to do 2025-06-11 20:37:28 -05:00
e695e69b2b undo/redo edit placed creatures 2025-06-11 20:37:12 -05:00
8eec250cd5 undo/redo edit placed item 2025-06-11 20:19:15 -05:00
161dce6d25 any_items() -> any_preset_items() 2025-06-11 18:52:57 -05:00
4a8d58926a undo/redo setting all items not property 2025-06-11 17:46:38 -05:00
c50f42ffde undo/redo edit horse or boat 2025-06-11 17:25:09 -05:00
b8ef14f186 undo/redo place/delete boat or horse 2025-06-11 17:09:33 -05:00
0dfddae5f2 Fix deleting vehicles re-numbering other vehicles 2025-06-11 16:39:32 -05:00
3810fd0250 fix bug: couldn't place boat at same loc in 2 sections 2025-06-11 16:05:54 -05:00
6948453971 undo/redo edit town entrance 2025-06-11 14:50:53 -05:00
38d4701226 undo/redo editing sign text 2025-06-06 13:20:09 -05:00
1e9b727798 New constant for unused special locations. fix #752 2025-06-06 12:34:05 -05:00
b0e73efd05 Delete unused fade_party() func with used x=100 wrong (#752) 2025-06-06 12:04:17 -05:00
8d7e5ba500 undo/redo for edit/clear item type 2025-06-05 13:41:15 -05:00
30945f7f4a monster editor run focus handlers when left/right pressed 2025-06-05 12:51:39 -05:00
2c3751284d undo/redo for editing/clearing monster types 2025-06-05 11:30:27 -05:00
721cc3ab6c WIP implementation note 2025-06-05 09:06:52 -05:00
efba526fb9 undo/redo for edit/clear terrain type. 2025-06-05 09:04:30 -05:00
654dadc868 fix save items/creatures without trailing empty ones 2025-06-04 10:21:03 -05:00
756f29bd1b MODE_EDIT_TYPES support monsters and items, with create/delete undo/redo 2025-06-04 09:56:03 -05:00
1842d376e6 add escbtn to edit-placed-item 2025-06-04 09:56:03 -05:00
1930eb7cc2 undo/redo for creating/deleting terrain types 2025-06-04 09:56:02 -05:00
b18fe700fc Fix saving items/creatures in town 2025-06-04 09:56:02 -05:00
2cfe42b477 improve 'delete last town' error messages 2025-06-04 09:56:02 -05:00
6240d0a657 undo/redo paste terrain 2025-06-04 09:56:01 -05:00
da988afb28 undo/redo place/erase creatures 2025-06-04 09:56:01 -05:00
a732e8350b undo paste item 2025-06-04 09:56:01 -05:00
cf02da133d allow undo delete item from edit menu 2025-06-04 09:56:00 -05:00
bdf1b8a4a8 undo clear items 2025-06-04 09:56:00 -05:00
c662477c43 Don't save holes in item vector 2025-06-04 09:56:00 -05:00
46b8dbd4de Make adding random items undoable 2025-06-04 09:55:59 -05:00
fb9efa734d Make basic placing/erasing items undoable 2025-06-04 09:55:59 -05:00
ab3a6d8e7f DRY item placement 2025-06-04 09:55:59 -05:00
f4aa9780e0 delete last town is just the inverse of create town 2025-06-04 09:55:58 -05:00
5452057b25 undo/redo change terrain randomly 2025-06-04 09:55:58 -05:00
27ad2e96ea undo/redo terrain frill actions 2025-06-04 09:55:58 -05:00
5bf5d9f6f4 Undo/redo fill bucket 2025-06-04 09:55:57 -05:00
03c53588e8 undo/redo most tools that draw terrain 2025-06-04 09:55:57 -05:00
862fff6c2f remove num_actions 2025-06-04 09:55:57 -05:00
40671daa85 Move town entrance implicit deletion into set_terrain 2025-06-04 09:55:57 -05:00
b6fb93f199 scenedit undo/redo infrastructure 2025-06-04 09:55:56 -05:00
79cd86f7dc Merge pull request #732 from NQNStudios:2.0b1-d
Beta 1 Part 4
2025-06-04 00:53:50 -04:00
f73af7d243 Don't call fix-rpaths.py if app didn't build (#753) 2025-06-02 11:42:14 -05:00
309207b063 Fix menu spells calling repeat_cast_ok(). Fix #754.
This may also be a fix for #557
2025-06-02 11:32:20 -05:00
075cdd2f86 Debug logging for scenedit undo/redo system 2025-06-02 11:32:20 -05:00
fb56cbf607 Editor search field for terrains, monsters, items in palette 2025-06-02 11:32:20 -05:00
73f171b3ec Fix warning 2025-06-02 11:32:20 -05:00
7f16e5a5d7 Allow passing colour when drawing texture 2025-06-02 11:32:20 -05:00
fd9132a0dd Implement key shortcuts to jump alphabetically in scen list.
Fix #336
2025-06-02 11:32:20 -05:00
731edb26e3 edit special node: allow create/edit 2025-06-02 11:32:20 -05:00
655b8246af entrace -> entrance 2025-06-02 11:32:20 -05:00
6a8692e886 actually don't allow placing signs at edge of outdoors 2025-06-02 11:32:20 -05:00
0c12c7af3f fix crash placing large object at edge of map 2025-06-02 11:32:20 -05:00
0467b9e2d7 When placing town entrances outdoors, prompt to link them 2025-06-02 11:32:20 -05:00
75944686b3 Editing town entrance, allow Create/Edit 2025-06-02 11:32:19 -05:00
b99e49da45 don't use x as varname for 1d vector index 2025-06-02 11:32:19 -05:00
81e7e74717 Fix crash editing town entrance 2025-06-02 11:32:19 -05:00
d37302acfb loading legacy scenarios, trim trailing whitespace from strings 2025-06-02 11:32:19 -05:00
9723ab2ca6 cancel button when editing race/traits 2025-06-02 11:32:19 -05:00
d2118854db don't confirm switch pc spells without changes 2025-06-02 11:32:19 -05:00
fe055e8203 Fix switching PCs when editing spells. Fix #66 2025-06-02 11:32:19 -05:00
961a5b3e1c pcedit fix title of edit spells dialogs 2025-06-02 11:32:19 -05:00
8aae115665 fix pics for edit pc spells dialog 2025-06-02 11:32:19 -05:00
910e4d1031 Fix cursor initialization in pcedit. fix #118 2025-06-02 11:32:19 -05:00
6855fed3e7 Fix pcedit bottom-right version info 2025-06-02 11:32:19 -05:00
b76aa0e871 editor allow moving monsters in town 2025-06-02 11:32:19 -05:00
ccd0e96d9a remove 2 resolved TODOs 2025-06-02 11:32:19 -05:00
c353a4bc57 note something confusing 2025-06-02 11:32:19 -05:00
d47a95bf8d creature palette tooltip show default attitude instead of always 'Monster:' 2025-06-02 11:32:19 -05:00
d503dd6bd2 placed item editor pickers shouldn't wipe out special flags 2025-06-02 11:32:19 -05:00
19108095cf allow moving placed items in town 2025-06-02 11:32:19 -05:00
fa6a3f2139 allow moving boat or horse within area 2025-06-02 11:32:19 -05:00
f6410857c2 unusual shap -> unusual shape 2025-06-02 11:32:19 -05:00
fded4895c9 fix monster summon ability detail displaying % chance 2025-06-02 11:32:19 -05:00
429e1ee34e fix %s not being interpolated in summon abil detail dlg 2025-06-02 11:32:19 -05:00
0dcde7dc90 add parent to overwrite confirmation 2025-06-02 11:32:19 -05:00
744471b8c0 scenedit quick-open last scenario 2025-06-02 11:32:19 -05:00
3d231ce76b make non-editable 'num' text, not field 2025-06-02 11:32:19 -05:00
655d911c1a Monster drop item picker go straight to strchoice 2025-06-02 11:32:19 -05:00
49b24f997f int/uint type on all relevant fields (I hope) 2025-06-02 11:32:19 -05:00
9de231c882 Monst ability editor show monster pic and name 2025-06-02 11:32:19 -05:00
711f327138 warn about overwriting monster ability 2025-06-02 11:32:19 -05:00
49b5841d0f add Choose button for monster special loot item (#731) 2025-06-02 11:32:19 -05:00
05989810d4 move ok/cancel to bottom of xml 2025-06-02 11:32:19 -05:00
1c059564b2 note that many more dialog fields need int or uint type 2025-06-02 11:32:19 -05:00
fd05590de2 add uint types to edit-monster-abils 2025-06-02 11:32:19 -05:00
73fd1bcfff reorder edit-monster-abils logically 2025-06-02 11:32:19 -05:00
7407781cac Fix scenario editor crash setting terrain at town edge 2025-06-02 11:32:19 -05:00
9d5a79c97c Improve target selection & fix range check for Drain SP Fix calref#737 2025-06-02 11:32:19 -05:00
abb19bbe15 find .EXS scenarios. fix #748 2025-05-25 15:30:35 -05:00
3aa35cf151 default values for editor_state_t (might fix #744) 2025-05-25 11:52:59 -05:00
dddae03915 Add button to open scenario folder & refresh list 2025-05-24 16:32:06 -05:00
dee6d988a6 Fix out-of-range access check for legacy town entrance
Fix #745
2025-05-24 15:16:24 -05:00
e7bf5847d0 add conveyor belts flag to game. fix #747 2025-05-24 14:30:34 -05:00
e846540ebd remove out-of-range node in VoDT outdoors (fix #741) 2025-05-23 14:28:41 -05:00
4ed73bf72d Update src/dialogxml/dialogs/dialog.cpp
Co-authored-by: Celtic Minstrel <CelticMinstrel@users.noreply.github.com>
2025-05-23 14:02:50 -05:00
1084f26a88 Count preferences dialog when detecting max UI scale to fit (Fix #740) 2025-05-23 09:11:27 -05:00
b7c1089508 Fix save file dialog with first party. (#740) 2025-05-23 08:55:14 -05:00
1734e7b055 Fix Load screen with no parties in save folder (#740) 2025-05-23 08:48:31 -05:00
42cffb6704 fix itch build when itch client apps folder doesn't exist 2025-05-21 15:21:58 -05:00
199 changed files with 8184 additions and 2829 deletions

8
.gitattributes vendored
View File

@@ -1,4 +1,10 @@
**/*.spec -linguist-detectable linguist-language=Text
**/*.spec linguist-language=SpecialNodes
**/*.map linguist-language=Maps
src/fileio/gzstream/** linguist-vendored
src/fileio/xml-parser/** linguist-vendored
src/fileio/xml-parser/tinyprint.* -linguist-vendored
*.exs linguist-language=Scenario
*.boes linguist-language=Scenario
*.SAV linguist-detectable linguist-language=Party
*.exg linguist-detectable linguist-language=Party

View File

@@ -11,158 +11,158 @@
},
jobs: {
macos-xcode: {
runs-on: macos-13,
env: {
DEVELOPER_DIR: /Applications/Xcode_14.2.app/Contents/Developer
},
steps: [
{
name: checkout,
uses: actions/checkout@v4,
with: { submodules: true }
},
{
name: install Boost,
run: brew install Boost@1.85
},
{
name: install SFML,
run: ./.github/workflows/scripts/mac/install-sfml.sh
},
{
name: patch Xcode project,
run: ./.github/workflows/scripts/mac/fix-xcode-proj.sh
},
{
name: build,
run: ./.github/workflows/scripts/mac/xcode-build.sh
},
{
name: unit tests,
run: ./.github/workflows/scripts/mac/run-tests.sh
}
]
},
macos-scons: {
runs-on: macos-13,
steps: [
{
name: checkout,
uses: actions/checkout@v4,
with: { submodules: true }
},
{
name: install dependencies,
run: brew install scons SFML@2 Boost@1.85
},
{
name: build and unit test,
run: ./.github/workflows/scripts/mac/scons-build.sh test=true
}
]
},
win-vs32: {
runs-on: windows-2022,
env: {
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
},
steps: [
{
name: Export GitHub Actions cache environment variables,
uses: actions/github-script@v7,
with: {
script: "core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');"
}
},
{
name: checkout,
uses: actions/checkout@v4,
with: { submodules: true }
},
{
name: install dependencies,
run: '${{ github.workspace }}\.github\workflows\scripts\win\install-deps.bat x86',
working-directory: proj/vs2017
},
{
name: build,
run: '.\.github\workflows\scripts\win\msvc-build.bat x86'
}
]
},
win-vs64: {
runs-on: windows-2022,
env: {
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
},
steps: [
{
name: Export GitHub Actions cache environment variables,
uses: actions/github-script@v7,
with: {
script: "core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');"
}
},
{
name: checkout,
uses: actions/checkout@v4,
with: { submodules: true }
},
{
name: install dependencies,
run: '${{ github.workspace }}\.github\workflows\scripts\win\install-deps.bat x64',
working-directory: proj/vs2017
},
{
name: build,
run: '.\.github\workflows\scripts\win\msvc-build.bat x64'
},
{
name: unit tests,
run: '.\.github\workflows\scripts\win\run-tests.bat'
}
]
},
win-scons: {
runs-on: windows-2019,
env: {
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
},
steps: [
{
name: Export GitHub Actions cache environment variables,
uses: actions/github-script@v7,
with: {
script: "core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');"
}
},
{
name: checkout,
uses: actions/checkout@v4,
with: { submodules: true }
},
{
name: install build dependencies,
run: 'vcpkg install libxml2 && pip install scons'
},
{
name: install dependencies,
run: '${{ github.workspace }}\.github\workflows\scripts\win\install-deps.bat x64',
working-directory: proj/vs2017
},
{
name: build and unit test,
run: '.\.github\workflows\scripts\win\scons-build.bat test=true'
},
{
name: warn about failure to launch tests,
run: 'echo "::warning title=UNIT-TESTS::unit tests failed for win-scons"',
shell: bash,
if: "${{ hashFiles('build/test/passed') == '' }}"
}
]
},
# macos-xcode: {
# runs-on: macos-13,
# env: {
# DEVELOPER_DIR: /Applications/Xcode_14.2.app/Contents/Developer
# },
# steps: [
# {
# name: checkout,
# uses: actions/checkout@v4,
# with: { submodules: true }
# },
# {
# name: install Boost,
# run: brew install Boost@1.85
# },
# {
# name: install SFML,
# run: ./.github/workflows/scripts/mac/install-sfml.sh
# },
# {
# name: patch Xcode project,
# run: ./.github/workflows/scripts/mac/fix-xcode-proj.sh
# },
# {
# name: build,
# run: ./.github/workflows/scripts/mac/xcode-build.sh
# },
# {
# name: unit tests,
# run: ./.github/workflows/scripts/mac/run-tests.sh
# }
# ]
# },
# macos-scons: {
# runs-on: macos-13,
# steps: [
# {
# name: checkout,
# uses: actions/checkout@v4,
# with: { submodules: true }
# },
# {
# name: install dependencies,
# run: brew install scons SFML@2 Boost@1.85
# },
# {
# name: build and unit test,
# run: ./.github/workflows/scripts/mac/scons-build.sh test=true
# }
# ]
# },
# win-vs32: {
# runs-on: windows-2022,
# env: {
# VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
# },
# steps: [
# {
# name: Export GitHub Actions cache environment variables,
# uses: actions/github-script@v7,
# with: {
# script: "core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');"
# }
# },
# {
# name: checkout,
# uses: actions/checkout@v4,
# with: { submodules: true }
# },
# {
# name: install dependencies,
# run: '${{ github.workspace }}\.github\workflows\scripts\win\install-deps.bat x86',
# working-directory: proj/vs2017
# },
# {
# name: build,
# run: '.\.github\workflows\scripts\win\msvc-build.bat x86'
# }
# ]
# },
# win-vs64: {
# runs-on: windows-2022,
# env: {
# VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
# },
# steps: [
# {
# name: Export GitHub Actions cache environment variables,
# uses: actions/github-script@v7,
# with: {
# script: "core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');"
# }
# },
# {
# name: checkout,
# uses: actions/checkout@v4,
# with: { submodules: true }
# },
# {
# name: install dependencies,
# run: '${{ github.workspace }}\.github\workflows\scripts\win\install-deps.bat x64',
# working-directory: proj/vs2017
# },
# {
# name: build,
# run: '.\.github\workflows\scripts\win\msvc-build.bat x64'
# },
# {
# name: unit tests,
# run: '.\.github\workflows\scripts\win\run-tests.bat'
# }
# ]
# },
# win-scons: {
# runs-on: windows-2019,
# env: {
# VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
# },
# steps: [
# {
# name: Export GitHub Actions cache environment variables,
# uses: actions/github-script@v7,
# with: {
# script: "core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');"
# }
# },
# {
# name: checkout,
# uses: actions/checkout@v4,
# with: { submodules: true }
# },
# {
# name: install build dependencies,
# run: 'vcpkg install libxml2 && pip install scons'
# },
# {
# name: install dependencies,
# run: '${{ github.workspace }}\.github\workflows\scripts\win\install-deps.bat x64',
# working-directory: proj/vs2017
# },
# {
# name: build and unit test,
# run: '.\.github\workflows\scripts\win\scons-build.bat test=true'
# },
# {
# name: warn about failure to launch tests,
# run: 'echo "::warning title=UNIT-TESTS::unit tests failed for win-scons"',
# shell: bash,
# if: "${{ hashFiles('build/test/passed') == '' }}"
# }
# ]
# },
# win-mingw: {
# runs-on: windows-2019,
# steps: [
@@ -196,7 +196,7 @@
},
{
name: install dependencies,
run: 'sudo apt-get update && sudo apt-get install scons libxml2-utils zlib1g libsfml-dev libboost-all-dev zenity'
run: 'sudo apt-get update && sudo apt-get install -y scons cmake xvfb libxml2-utils zlib1g libsfml-dev libboost-all-dev zenity'
},
{
name: install TGUI,

View File

@@ -10,6 +10,6 @@ REM @echo "%%i"
REM call "%%i" x86_amd64
REM )
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64
scons bits=64 %*

5
.gitmodules vendored
View File

@@ -10,4 +10,7 @@
url = https://github.com/tplgy/cppcodec
[submodule "deps/fix-rpaths"]
path = deps/fix-rpaths
url = https://gist.github.com/NQNStudios/7145bcf6621891f5176c8caa165d6b93
url = https://k7izh9.gitea.cloud/NQN/fix-rpaths
[submodule "deps/fmtlib"]
path = deps/fmtlib
url = http://github.com/fmtlib/fmt

View File

@@ -1,4 +1,4 @@
[![CI status](https://github.com/calref/cboe/actions/workflows/ci.yml/badge.svg)](https://github.com/calref/cboe/actions/workflows/ci.yml)
[![CI status](https://k7izh9.gitea.cloud/openboe/oboe/actions/workflows/ci.yml/badge.svg)](https://k7izh9.gitea.cloud/openboe/oboe/actions/workflows/ci.yml)
Open Blades of Exile
====================
@@ -85,6 +85,8 @@ For Linux builds, the following additional dependencies are required:
- or, if cmake is available when you call `scons`, TGUI will be built from source automatically
- zenity command-line tools
For Windows builds, [7-zip](https://7-zip.org/download.html) is required.
If you are using the Visual Studio toolset, we recommend installing
[vcpkg](https://github.com/Microsoft/vcpkg) to manage these dependencies.
@@ -145,6 +147,5 @@ Helpful Links
#openboe on irc.libera.chat)
* [Original Game Source](http://www.spiderwebsoftware.com/blades/opensource.html) - Where
it all began. Warning: Terrifying code.
* [Experimental Windows/Mac Builds](http://pentalithia.ca/oboe/?C=M;O=D) - will be put
up whenever Celtic Minstrel feels like it.
* [Official Web Site](https://openboe.com/) - The hub for all things OpenBoE. The documentation is also in viewable format, and there is an archive of all known scenarios that could be located.
* [The itch.io page](https://nqn.itch.io/blades-of-exile) - if you just want to get the game and play it.

View File

@@ -84,7 +84,7 @@ print('C++ compiler:', cxx)
env.VariantDir('#build/obj', 'src')
env.VariantDir('#build/obj/test', 'test')
env.VariantDir('#build/obj/test/deps', 'deps')
env.VariantDir('#build/obj/deps', 'deps')
if not env['release']:
if platform in ['posix', 'darwin']:
@@ -236,7 +236,7 @@ elif platform == "win32":
include_paths=[path.join(vcpkg_installed, 'include')] + vcpkg_other_includes
env.Append(
LINKFLAGS=['/SUBSYSTEM:WINDOWS','/ENTRY:mainCRTStartup',f'/MACHINE:X{arch_short}'],
CXXFLAGS=['/EHsc','/MD','/FIglobal.hpp'],
CXXFLAGS=['/EHsc','/MD','/FIglobal.hpp','/utf-8'],
CPPPATH=include_paths,
LIBPATH=[path.join(vcpkg_installed, 'lib')] + vcpkg_other_libs + vcpkg_other_bins,
LIBS=Split("""
@@ -379,7 +379,7 @@ if not env.GetOption('clean'):
Exit(1)
boost_versions = ['-1_84'] # This is a bit of a hack. :(
suffixes = ['-mt', f'-mt-x{env["bits"]}']
suffixes = ['-mt', f'-mt-x{env["bits"]}', f'-vc143-mt-x{env["bits"]}', f'-vc144-mt-x{env["bits"]}']
zlib = 'zlib' if (platform == "win32" and 'mingw' not in env["TOOLS"]) else 'z'
check_lib(zlib, 'zlib', ['d'], [])
@@ -411,6 +411,12 @@ if not env.GetOption('clean'):
env.Append(CPPPATH=[path.join(os.getcwd(), 'deps/cppcodec')])
# Make sure fmtlib is cloned
if not path.exists('deps/fmtlib/fmt/format.h'):
subprocess.call(["git", "submodule", "update", "--init", "deps/fmtlib"])
env.Append(CPPPATH=[path.join(os.getcwd(), 'deps/fmtlib/include')])
# On Linux, build TGUI from the subtree if necessary
if platform == 'posix':
def check_tgui(conf, second_attempt=False):
@@ -512,8 +518,11 @@ if platform == "darwin":
def fix_target_rpaths():
if not path.exists('deps/fix-rpaths/fix-rpaths.py'):
subprocess.call(["git", "submodule", "update", "--init", "deps/fix-rpaths"])
print(f'build/Blades of Exile/{targ}.app')
subprocess.call(["deps/fix-rpaths/fix-rpaths.py", f'build/Blades of Exile/{targ}.app'])
app = f'build/Blades of Exile/{targ}.app'
# The build for the target may have failed, in which case, don't call fix-rpaths
if path.exists(app):
print(app)
subprocess.call(["deps/fix-rpaths/fix-rpaths.py", f'build/Blades of Exile/{targ}.app'])
if not env.GetOption('clean'):
atexit.register(fix_target_rpaths)
elif platform == "win32":

1
deps/fmtlib vendored Submodule

Submodule deps/fmtlib added at 814f51eab6

View File

@@ -6,7 +6,6 @@
</head>
<body>
<h1><img src="../img/boe.gif"> <u><b>Blades Scenario Editor Instructions</b></u></h1>
<p><i>Copyright 1998, Spiderweb Software, Inc.</i></p>
<p>This document contains all the information you need to play use the Blades of Exile Scenario Editor and make new scenarios for Blades of Exile!</p>
<p>This menu can also take you to the different sections of this document. To find the thing you're looking for, try the table of contents...</p>
<h2>Table of Contents</h2>
@@ -98,15 +97,5 @@
<li><a href="http://spiderwebforums.ipbhost.com/index.php?/forum/12-blades-of-exile/">Blades of Exile Forum at Spiderweb Software</a></li>
<li><a href='irc://irc.freenode.net/openboe'>Blades of Exile IRC channel</a></li>
</ul>
<h3>Spiderweb Software</h3>
<ul>
<li>PO Box 85659</li>
<li>Seattle, WA 98145-1659</li>
<li>(206) 789-4438</li>
<li>E-mail: <a href="mailto:spidweb@spidweb.com">SpidWeb@spidweb.com</a></li>
<li>America Online: SpidWeb</li>
<li>CompuServe: 76463,1521</li>
<li>Internet: <a href="http://www.spiderwebsoftware.com">http://www.spiderwebsoftware.com</a></li>
</ul>
</body>
</html>

View File

@@ -10,6 +10,7 @@ Confirmed:
- Bret Rodabaugh
- Dylan Nugent
- Evan Mulrooney
- Glen Chudley
- Jake Harrelson
- Jared Forcinito
- Jeff Potter
@@ -25,6 +26,7 @@ Confirmed:
- K L
- Laura Nelson
- Mariann Krizsan
- Maryanne Wachter
- Mike Lapinsky
- Nathan Rickey
- Nick Chaimov

View File

@@ -1,5 +1,6 @@
set Zip="C:\Program Files\7-Zip\7z.exe"
%Zip% >NUL || @echo 7-zip must be installed first. && exit /B
@echo Packing scenario %2...
if exist %2 del /F %2

View File

@@ -247,6 +247,7 @@
<ClCompile Include="..\..\..\src\scenario\item.cpp" />
<ClCompile Include="..\..\..\src\scenario\monster.cpp" />
<ClCompile Include="..\..\..\src\scenario\outdoors.cpp" />
<ClCompile Include="..\..\..\src\scenario\quest.cpp" />
<ClCompile Include="..\..\..\src\scenario\scenario.cpp" />
<ClCompile Include="..\..\..\src\scenario\shop.cpp" />
<ClCompile Include="..\..\..\src\scenario\special.cpp" />
@@ -282,6 +283,8 @@
<ClCompile Include="..\..\..\src\universe\universe.cpp" />
<ClCompile Include="..\..\..\src\utility.cpp" />
<ClCompile Include="..\..\..\src\view_dialogs.cpp" />
<ClCompile Include="..\..\..\deps\fmtlib\src\format.cc" />
<ClCompile Include="..\..\..\deps\fmtlib\src\os.cc" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\alchemy.hpp" />
@@ -427,9 +430,9 @@
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>MSBUILD_GITREV;WIN32;_WINDOWS;TIXML_USE_TICPP;%(PreprocessorDefinitions);_DEBUG</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\cppcodec;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\cppcodec;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<DisableLanguageExtensions>false</DisableLanguageExtensions>
<AdditionalOptions>/FS %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions>/FS %(AdditionalOptions) /utf-8</AdditionalOptions>
<DisableSpecificWarnings>4800;4290;4244;4996;4018</DisableSpecificWarnings>
<PrecompiledHeaderFile />
<PrecompiledHeaderOutputFile />
@@ -456,9 +459,10 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>MSBUILD_GITREV;WIN32;_WINDOWS;TIXML_USE_TICPP;%(PreprocessorDefinitions);NDEBUG</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\cppcodec;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\cppcodec;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<PrecompiledHeaderFile />
<PrecompiledHeaderOutputFile />
<AdditionalOptions>/utf-8</AdditionalOptions>
<DisableSpecificWarnings>4800;4290;4244;4996;4018</DisableSpecificWarnings>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
</ClCompile>

View File

@@ -828,6 +828,11 @@
<ClCompile Include="..\..\..\src\tools\profile.cpp">
<Filter>Tools</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\scenario\quest.cpp">
<Filter>Scenario</Filter>
</ClCompile>
<ClCompile Include="..\..\..\deps\fmtlib\src\format.cc" />
<ClCompile Include="..\..\..\deps\fmtlib\src\os.cc" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\view_dialogs.hpp" />

View File

@@ -56,7 +56,8 @@
<PreprocessorDefinitions>MSBUILD_GITREV;WIN32;_WINDOWS;TIXML_USE_TICPP;%(PreprocessorDefinitions);_DEBUG</PreprocessorDefinitions>
<PrecompiledHeaderFile />
<PrecompiledHeaderOutputFile />
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<AdditionalOptions>/utf-8</AdditionalOptions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4800;4290;4244;4996;4018</DisableSpecificWarnings>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
</ClCompile>
@@ -77,8 +78,9 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalOptions>/utf-8</AdditionalOptions>
<PreprocessorDefinitions>MSBUILD_GITREV;WIN32;_WINDOWS;TIXML_USE_TICPP;%(PreprocessorDefinitions);NDEBUG</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<PrecompiledHeaderFile />
<PrecompiledHeaderOutputFile />
<DisableSpecificWarnings>4800;4290;4244;4996;4018</DisableSpecificWarnings>
@@ -167,4 +169,4 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
</Project>

View File

@@ -46,8 +46,9 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalOptions>/utf-8</AdditionalOptions>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include;$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;TIXML_USE_TICPP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DisableSpecificWarnings>4800;4290;4244;4996;4018</DisableSpecificWarnings>
</ClCompile>
@@ -63,7 +64,8 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include;$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<AdditionalOptions>/utf-8</AdditionalOptions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;TIXML_USE_TICPP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DisableSpecificWarnings>4800;4290;4244;4996;4018</DisableSpecificWarnings>
@@ -81,7 +83,7 @@
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;TIXML_USE_TICPP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DisableSpecificWarnings>4800;4290;4244;4996;4018</DisableSpecificWarnings>
</ClCompile>
@@ -97,7 +99,8 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<AdditionalOptions>/utf-8</AdditionalOptions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;TIXML_USE_TICPP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DisableSpecificWarnings>4800;4290;4244;4996;4018</DisableSpecificWarnings>
@@ -107,6 +110,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalOptions>/utf-8</AdditionalOptions>
<AdditionalDependencies>opengl32.lib;sfml-system.lib;sfml-window.lib;sfml-graphics.lib;sfml-audio.lib;libboost_filesystem-vc120-mt-*.lib;libboost_system-vc120-mt-*.lib;libboost_thread-vc120-mt-*.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>

View File

@@ -58,11 +58,12 @@
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;TIXML_USE_TICPP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4800;4290;4244;4996;4018</DisableSpecificWarnings>
<PrecompiledHeaderFile />
<PrecompiledHeaderOutputFile />
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<AdditionalOptions>/utf-8</AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -82,11 +83,12 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;TIXML_USE_TICPP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<PrecompiledHeaderFile />
<PrecompiledHeaderOutputFile />
<DisableSpecificWarnings>4800;4290;4244;4996;4018</DisableSpecificWarnings>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<AdditionalOptions>/utf-8</AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -135,4 +137,4 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
</Project>

View File

@@ -58,11 +58,12 @@
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;TIXML_USE_TICPP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4800;4290;4244;4996;4018</DisableSpecificWarnings>
<PrecompiledHeaderFile />
<PrecompiledHeaderOutputFile />
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<AdditionalOptions>/utf-8</AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -82,11 +83,12 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;TIXML_USE_TICPP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<PrecompiledHeaderFile />
<PrecompiledHeaderOutputFile />
<DisableSpecificWarnings>4800;4290;4244;4996;4018</DisableSpecificWarnings>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<AdditionalOptions>/utf-8</AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -112,6 +114,7 @@
<ClCompile Include="..\..\..\src\scenedit\scen.menus.win.cpp" />
<ClCompile Include="..\..\..\src\scenedit\scen.sdfpicker.cpp" />
<ClCompile Include="..\..\..\src\scenedit\scen.townout.cpp" />
<ClCompile Include="..\..\..\src\scenedit\scen.undo.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\scenedit\scen.actions.hpp" />
@@ -126,6 +129,7 @@
<ClInclude Include="..\..\..\src\scenedit\scen.sdfpicker.hpp" />
<ClInclude Include="..\..\..\src\scenedit\scen.townout.hpp" />
<ClInclude Include="..\..\..\rsrc\menus\scenresource.h" />
<ClInclude Include="..\..\..\src\scenedit\scen.undo.hpp" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Common\Common.vcxproj">
@@ -146,4 +150,4 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
</Project>

View File

@@ -48,6 +48,9 @@
<ClCompile Include="..\..\..\src\scenedit\scen.actions.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\scenedit\scen.undo.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\rsrc\menus\scenresource.h">
@@ -86,6 +89,9 @@
<ClInclude Include="..\..\..\src\scenedit\scen.actions.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\scenedit\scen.undo.hpp">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Image Include="..\..\..\rsrc\icons\win\BOE Editor.ico">

View File

@@ -81,8 +81,9 @@
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<AdditionalOptions>/utf-8</AdditionalOptions>
<PrecompiledHeaderFile />
<PrecompiledHeaderOutputFile />
</ClCompile>
@@ -99,8 +100,9 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<AdditionalOptions>/utf-8</AdditionalOptions>
</ClCompile>
<Link>
<TargetMachine>MachineX86</TargetMachine>
@@ -115,8 +117,9 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<AdditionalOptions>/utf-8</AdditionalOptions>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>MSBUILD_GITREV;WIN32;_WINDOWS;BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE;TIXML_USE_TICPP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<OmitFramePointers>false</OmitFramePointers>
@@ -134,8 +137,9 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<AdditionalOptions>/utf-8</AdditionalOptions>
<OmitFramePointers>false</OmitFramePointers>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>MSBUILD_GITREV;WIN32;_WINDOWS;BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE;TIXML_USE_TICPP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -218,4 +222,4 @@
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>
</Project>

View File

@@ -82,7 +82,8 @@
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<AdditionalOptions>/utf-8</AdditionalOptions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
</ClCompile>
<Link>
@@ -98,7 +99,8 @@
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<AdditionalOptions>/utf-8</AdditionalOptions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
@@ -118,7 +120,8 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<AdditionalOptions>/utf-8</AdditionalOptions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
</ClCompile>
<Link>
@@ -139,7 +142,8 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<AdditionalOptions>/utf-8</AdditionalOptions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
@@ -184,4 +188,4 @@
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>
</Project>

View File

@@ -89,9 +89,10 @@
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<PreprocessorDefinitions>MSBUILD_GITREV;WIN32;_WINDOWS;BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE;TIXML_USE_TICPP;%(PreprocessorDefinitions);NOMINMAX</PreprocessorDefinitions>
<AdditionalOptions>/utf-8</AdditionalOptions>
<AdditionalUsingDirectories>
</AdditionalUsingDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\cppcodec;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\cppcodec;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<TargetMachine>MachineX86</TargetMachine>
@@ -106,7 +107,8 @@
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PreprocessorDefinitions>MSBUILD_GITREV;WIN32;_WINDOWS;BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE;TIXML_USE_TICPP;%(PreprocessorDefinitions);NOMINMAX</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\cppcodec;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<AdditionalOptions>/utf-8</AdditionalOptions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\cppcodec;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
</ClCompile>
<Link>
@@ -127,9 +129,10 @@
<DisableSpecificWarnings>
</DisableSpecificWarnings>
<PreprocessorDefinitions>MSBUILD_GITREV;WIN32;_WINDOWS;BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE;TIXML_USE_TICPP;%(PreprocessorDefinitions);NOMINMAX</PreprocessorDefinitions>
<AdditionalOptions>/utf-8</AdditionalOptions>
<AdditionalUsingDirectories>
</AdditionalUsingDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\cppcodec;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\cppcodec;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<TargetMachine>MachineX86</TargetMachine>
@@ -149,7 +152,8 @@
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PreprocessorDefinitions>MSBUILD_GITREV;WIN32;_WINDOWS;BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE;TIXML_USE_TICPP;%(PreprocessorDefinitions);NOMINMAX</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\cppcodec;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<AdditionalOptions>/utf-8</AdditionalOptions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\cppcodec;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
</ClCompile>
<Link>
@@ -403,6 +407,7 @@
<ClCompile Include="..\..\..\src\scenario\item.cpp" />
<ClCompile Include="..\..\..\src\scenario\monster.cpp" />
<ClCompile Include="..\..\..\src\scenario\outdoors.cpp" />
<ClCompile Include="..\..\..\src\scenario\quest.cpp" />
<ClCompile Include="..\..\..\src\scenario\scenario.cpp" />
<ClCompile Include="..\..\..\src\scenario\shop.cpp" />
<ClCompile Include="..\..\..\src\scenario\special.cpp" />
@@ -438,6 +443,8 @@
<ClCompile Include="..\..\..\src\universe\universe.cpp" />
<ClCompile Include="..\..\..\src\utility.cpp" />
<ClCompile Include="..\..\..\src\view_dialogs.cpp" />
<ClCompile Include="..\..\..\deps\fmtlib\src\format.cc" />
<ClCompile Include="..\..\..\deps\fmtlib\src\os.cc" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\scenario\town_import.tpp" />

View File

@@ -821,6 +821,11 @@
<ClCompile Include="..\..\..\src\tools\profile.cpp">
<Filter>Tools</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\scenario\quest.cpp">
<Filter>Scenario</Filter>
</ClCompile>
<ClCompile Include="..\..\..\deps\fmtlib\src\format.cc" />
<ClCompile Include="..\..\..\deps\fmtlib\src\os.cc" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\scenario\town_import.tpp">

View File

@@ -80,8 +80,9 @@
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<ConformanceMode>true</ConformanceMode>
<AdditionalOptions>/utf-8</AdditionalOptions>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
</ClCompile>
<Link>
@@ -97,8 +98,9 @@
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalOptions>/utf-8</AdditionalOptions>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
@@ -118,8 +120,9 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<ConformanceMode>true</ConformanceMode>
<AdditionalOptions>/utf-8</AdditionalOptions>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
</ClCompile>
<Link>
@@ -140,7 +143,8 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<AdditionalOptions>/utf-8</AdditionalOptions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\include\external;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src;$(SolutionDir)..\..\rsrc\menus</AdditionalIncludeDirectories>
<ForcedIncludeFiles>$(SolutionDir)..\..\src\global.hpp</ForcedIncludeFiles>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
@@ -167,6 +171,7 @@
<ClCompile Include="..\..\..\src\scenedit\scen.sdfpicker.cpp" />
<ClCompile Include="..\..\..\src\scenedit\scen.townout.cpp" />
<ClCompile Include="..\..\..\src\fileio\fileio_party.cpp" />
<ClCompile Include="..\..\..\src\scenedit\scen.undo.cpp" />
<ClCompile Include="..\..\..\src\universe\universe.cpp" />
<ClCompile Include="..\..\..\src\universe\party.cpp" />
</ItemGroup>
@@ -183,6 +188,7 @@
<ClInclude Include="..\..\..\src\scenedit\scen.sdfpicker.hpp" />
<ClInclude Include="..\..\..\src\scenedit\scen.menus.hpp" />
<ClInclude Include="..\..\..\src\scenedit\scen.townout.hpp" />
<ClInclude Include="..\..\..\src\scenedit\scen.undo.hpp" />
</ItemGroup>
<ItemGroup>
<Image Include="..\..\..\rsrc\icons\win\BOE Editor.ico" />
@@ -199,4 +205,4 @@
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>
</Project>

View File

@@ -97,7 +97,8 @@
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\single_include\catch2;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<AdditionalOptions>/utf-8</AdditionalOptions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\single_include\catch2;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<UseFullPaths>true</UseFullPaths>
<PrecompiledHeaderFile>stdafx.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile>$(IntDir)$(TargetName).pch</PrecompiledHeaderOutputFile>
@@ -117,7 +118,8 @@
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\single_include\catch2;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<AdditionalOptions>/utf-8</AdditionalOptions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\single_include\catch2;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<UseFullPaths>true</UseFullPaths>
<PrecompiledHeaderFile />
<PrecompiledHeaderOutputFile />
@@ -139,7 +141,8 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\single_include\catch2;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<AdditionalOptions>/utf-8</AdditionalOptions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\single_include\catch2;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<UseFullPaths>true</UseFullPaths>
<PrecompiledHeaderFile>stdafx.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile>$(IntDir)$(TargetName).pch</PrecompiledHeaderOutputFile>
@@ -164,7 +167,8 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\single_include\catch2;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<AdditionalOptions>/utf-8</AdditionalOptions>
<AdditionalIncludeDirectories>$(SolutionDir)..\..\deps\Catch2\single_include\catch2;$(SolutionDir)..\..\deps\fmtlib\include;$(SolutionDir)..\..\src\fileio\gzstream;$(SolutionDir)..\..\src\fileio\xml-parser;$(SolutionDir)..\..\src\fileio\resmgr;$(SolutionDir)..\..\src\dialogxml\widgets;$(SolutionDir)..\..\src\dialogxml\dialogs;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\tools;$(SolutionDir)..\..\src\scenario;$(SolutionDir)..\..\src\universe;$(SolutionDir)..\..\src\fileio;$(SolutionDir)..\..\src\dialogxml;$(SolutionDir)..\..\src\gfx;$(SolutionDir)..\..\src</AdditionalIncludeDirectories>
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
<UseFullPaths>true</UseFullPaths>
<PrecompiledHeaderFile />
@@ -227,4 +231,4 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
</Project>

View File

@@ -1,3 +1,5 @@
# Folder local settings are ignored.
# Settings that should be checked in should go in the workspace file.
.vscode/settings.json
# This is needed to make the build system machine-independent.
vswhere.exe

View File

@@ -0,0 +1,62 @@
##############################################################################
##
## Invoke-CmdScript
##
## From PowerShell Cookbook (O'Reilly)
## by Lee Holmes (http://www.leeholmes.com/guide)
## <https://powershellcookbook.com/recipe/WqHr/program-retain-changes-to-environment-variables-set-by-a-batch-file>
##
##############################################################################
<#
.SYNOPSIS
Invoke the specified batch file (and parameters), but also propagate any
environment variable changes back to the PowerShell environment that
called it.
.EXAMPLE
PS > type foo-that-sets-the-FOO-env-variable.cmd
@set FOO=%*
echo FOO set to %FOO%.
PS > $env:FOO
PS > Invoke-CmdScript "foo-that-sets-the-FOO-env-variable.cmd" Test
C:\Temp>echo FOO set to Test.
FOO set to Test.
PS > $env:FOO
Test
#>
param(
## The path to the script to run
[Parameter(Mandatory = $true)]
[string] $Path,
## The arguments to the script
[string] $ArgumentList
)
Set-StrictMode -Version 3
$tempFile = [IO.Path]::GetTempFileName()
## Store the output of cmd.exe. We also ask cmd.exe to output
## the environment table after the batch file completes
cmd /c " `"$Path`" $argumentList && set > `"$tempFile`" "
## Go through the environment variables in the temp file.
## For each of them, set the variable in our local environment.
Get-Content $tempFile | Foreach-Object {
if($_ -match "^(.*?)=(.*)$")
{
Set-Content "env:\$($matches[1])" $matches[2]
}
}
Remove-Item $tempFile

25
proj/vscode/build.ps1 Normal file
View File

@@ -0,0 +1,25 @@
Set-Location proj\vscode
$vswhere_path = "vswhere.exe"
if(-not(Test-Path -path $vswhere_path)) {
(New-Object Net.WebClient).DownloadFile('https://github.com/microsoft/vswhere/releases/latest/download/vswhere.exe', $vswhere_path)
if(-not(Test-Path -path $vswhere_path)) {
Write-Output 'Failed to download vswhere.exe'
exit 1
}
}
# $msbuild_path = .\proj\vscode\vswhere -latest -products * -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe | select-object -first 1
$vars_path = .\vswhere -latest -products * -requires Microsoft.Component.MSBuild -find **\VC\Auxiliary\Build\vcvars64.bat
if($vars_path) {
.\Invoke-CmdScript $vars_path
# Write-Output $msbuild_path @args
# & "$msbuild_path\..\..\..\..\VC\Auxiliary\Build\vcvars64.bat"
# Write-Output $env:PATH
MSBuild @args
} else {
Write-Output 'Could not find MSBuild.exe'
exit 1
}

View File

@@ -10,6 +10,62 @@
"ms-vscode.cpptools",
]
},
"tasks": {
"version": "2.0.0",
"tasks": [
{
"label": "Build (Debug)",
"windows": {
"type": "process",
"command": "powershell",
"args": [
"${workspaceFolder}/proj/vscode/build.ps1",
"/property:GenerateFullPaths=true",
"/property:VcpkgConfiguration=Debug",
"/t:build",
"\"${workspaceRoot}\\proj\\vs2017\\Blades of Exile.sln\""
],
"problemMatcher": "$msCompile",
},
"group": "build"
},
{
"label": "Build (Release)",
"windows": {
"type": "process",
"command": "powershell",
"args": [
"${workspaceFolder}/proj/vscode/build.ps1",
"/property:GenerateFullPaths=true",
"/property:VcpkgConfiguration=Release",
"/t:build",
"${workspaceRoot}\\proj\\vs2013\\Blades of Exile.sln"
],
"problemMatcher": "$msCompile",
},
"group": "build"
},
{
"label": "Run tests",
"windows": {
"type": "process",
"command": "${workspaceRoot}\\proj\\vs2013\\Release\\OBoE Tests.exe",
"problemMatcher": {
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^\\.(.*)\\((\\d+)\\): FAILED$",
"file": 1,
"line": 2
}
},
},
"options": {
"cwd": "${workspaceRoot}/test"
},
"group": "test"
}
]
},
"settings": {
"xml.fileAssociations": [
{
@@ -48,6 +104,89 @@
"pattern": "rsrc/scenarios/*/dialogs/*.xml",
"systemId": "${workspaceFolder}/rsrc/schemas/dialog.xsd"
}
]
],
"files.associations": {
"__bit_reference": "cpp",
"__config": "cpp",
"__debug": "cpp",
"__errc": "cpp",
"__functional_base": "cpp",
"__hash_table": "cpp",
"__locale": "cpp",
"__mutex_base": "cpp",
"__node_handle": "cpp",
"__nullptr": "cpp",
"__split_buffer": "cpp",
"__string": "cpp",
"__threading_support": "cpp",
"__tree": "cpp",
"__tuple": "cpp",
"algorithm": "cpp",
"any": "cpp",
"array": "cpp",
"atomic": "cpp",
"bit": "cpp",
"bitset": "cpp",
"cctype": "cpp",
"cfenv": "cpp",
"charconv": "cpp",
"chrono": "cpp",
"cmath": "cpp",
"codecvt": "cpp",
"complex": "cpp",
"condition_variable": "cpp",
"cstdarg": "cpp",
"cstddef": "cpp",
"cstdint": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"cstring": "cpp",
"ctime": "cpp",
"cwchar": "cpp",
"cwctype": "cpp",
"deque": "cpp",
"exception": "cpp",
"fstream": "cpp",
"functional": "cpp",
"future": "cpp",
"initializer_list": "cpp",
"iomanip": "cpp",
"ios": "cpp",
"iosfwd": "cpp",
"iostream": "cpp",
"istream": "cpp",
"iterator": "cpp",
"limits": "cpp",
"list": "cpp",
"locale": "cpp",
"map": "cpp",
"memory": "cpp",
"mutex": "cpp",
"new": "cpp",
"numeric": "cpp",
"optional": "cpp",
"ostream": "cpp",
"queue": "cpp",
"random": "cpp",
"ratio": "cpp",
"regex": "cpp",
"set": "cpp",
"sstream": "cpp",
"stack": "cpp",
"stdexcept": "cpp",
"streambuf": "cpp",
"string_view": "cpp",
"string": "cpp",
"system_error": "cpp",
"tuple": "cpp",
"type_traits": "cpp",
"typeindex": "cpp",
"typeinfo": "cpp",
"unordered_map": "cpp",
"unordered_set": "cpp",
"utility": "cpp",
"variant": "cpp",
"vector": "cpp"
}
}
}

View File

@@ -56,6 +56,7 @@
2BF04B2E0BF51924006C0831 /* boe.town.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2BF04B090BF51924006C0831 /* boe.town.cpp */; };
410CEEE82D84618C00FFF8CD /* profile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 410CEEE62D84618C00FFF8CD /* profile.cpp */; };
410CEEE92D84618C00FFF8CD /* profile.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 410CEEE72D84618C00FFF8CD /* profile.hpp */; };
41342CEA2DFB872400E66BEB /* quest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41342CE92DFB872400E66BEB /* quest.cpp */; };
413AAF612D389F94002E9BF1 /* fileio_party.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 91E30F2A1A74819B0057C54A /* fileio_party.cpp */; };
413AAF622D38A076002E9BF1 /* universe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 91AC61C50FA2729900EEAE67 /* universe.cpp */; };
413AAF632D38A1B8002E9BF1 /* party.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 913D05B50FA1E9E300184C18 /* party.cpp */; };
@@ -65,6 +66,7 @@
413AAF672D38A4A5002E9BF1 /* living.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 914698FB1A7362D900F20F5E /* living.cpp */; };
413FE08F2CECFAFF000D97DC /* winutil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 413FE08E2CECFAFF000D97DC /* winutil.cpp */; };
415EEEB02D5534A500B47408 /* prefs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 415EEEAF2D5534A500B47408 /* prefs.cpp */; };
41E550542DEB8C2A00A7DF52 /* scen.undo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41E550532DEB8C2A00A7DF52 /* scen.undo.cpp */; };
91034D211B225E4A008F01C1 /* scen.appleevents.mm in Sources */ = {isa = PBXBuildFile; fileRef = 91034D201B225E49008F01C1 /* scen.appleevents.mm */; };
911A14031B8FAFC600900FD9 /* town_read.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 91C2A6EC1B8FA91400346948 /* town_read.cpp */; };
911A14041B8FB00300900FD9 /* talk_read.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 91C2A6EE1B8FAA8E00346948 /* talk_read.cpp */; };
@@ -159,6 +161,8 @@
917823821B2F33F5007F3444 /* FLAC.framework in Copy Libraries and Frameworks */ = {isa = PBXBuildFile; fileRef = 9178237C1B2F33E9007F3444 /* FLAC.framework */; };
91870F84190C90980081C150 /* scenedit.xib in Resources */ = {isa = PBXBuildFile; fileRef = 914CA49F190C4E9200B6ADD1 /* scenedit.xib */; };
919145FC18E3AB1B005CF3A4 /* boe.appleevents.mm in Sources */ = {isa = PBXBuildFile; fileRef = 919145FB18E3A32F005CF3A4 /* boe.appleevents.mm */; };
9191E3B12D8AFD5800AF6D01 /* os.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9191E3AE2D8AFD5800AF6D01 /* os.cc */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
9191E3B32D8AFD5800AF6D01 /* format.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9191E3B02D8AFD5800AF6D01 /* format.cc */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; };
9192C12018F2745C0088A580 /* game.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9192C11E18F271920088A580 /* game.xib */; };
919B13A21BBCDF14009905A4 /* monst_legacy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 919B13A11BBCDE18009905A4 /* monst_legacy.cpp */; };
919B13A41BBD8854009905A4 /* item_legacy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 919B13A31BBD8849009905A4 /* item_legacy.cpp */; };
@@ -633,8 +637,11 @@
2BF04B0A0BF51924006C0831 /* boe.town.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = boe.town.hpp; sourceTree = "<group>"; };
410CEEE62D84618C00FFF8CD /* profile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = profile.cpp; sourceTree = "<group>"; };
410CEEE72D84618C00FFF8CD /* profile.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = profile.hpp; sourceTree = "<group>"; };
41342CE92DFB872400E66BEB /* quest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = quest.cpp; sourceTree = "<group>"; };
413FE08E2CECFAFF000D97DC /* winutil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = winutil.cpp; sourceTree = "<group>"; };
415EEEAF2D5534A500B47408 /* prefs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = prefs.cpp; sourceTree = "<group>"; };
41E550522DEB8C1400A7DF52 /* scen.undo.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = scen.undo.hpp; sourceTree = "<group>"; };
41E550532DEB8C2A00A7DF52 /* scen.undo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scen.undo.cpp; sourceTree = "<group>"; };
91034D201B225E49008F01C1 /* scen.appleevents.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = scen.appleevents.mm; sourceTree = "<group>"; };
9103DC652C6A406600849E60 /* cli.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = cli.hpp; sourceTree = "<group>"; };
910BBA170FB8BECA001E34EA /* dialog.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = dialog.hpp; sourceTree = "<group>"; };
@@ -786,6 +793,8 @@
919145FF18E63B70005CF3A4 /* winutil.mac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = winutil.mac.mm; sourceTree = "<group>"; };
9191460018E63D8E005CF3A4 /* scrollbar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scrollbar.cpp; sourceTree = "<group>"; };
9191460118E6591F005CF3A4 /* boe.menus.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = boe.menus.hpp; sourceTree = "<group>"; };
9191E3AE2D8AFD5800AF6D01 /* os.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = os.cc; sourceTree = "<group>"; };
9191E3B02D8AFD5800AF6D01 /* format.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = format.cc; sourceTree = "<group>"; };
9192C11E18F271920088A580 /* game.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = game.xib; path = ../rsrc/menus/game.xib; sourceTree = "<group>"; };
919B13A11BBCDE18009905A4 /* monst_legacy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = monst_legacy.cpp; sourceTree = "<group>"; };
919B13A31BBD8849009905A4 /* item_legacy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = item_legacy.cpp; sourceTree = "<group>"; };
@@ -1283,6 +1292,7 @@
9185BD941EA01BCC0027C346 /* scenario */ = {
isa = PBXGroup;
children = (
41342CE92DFB872400E66BEB /* quest.cpp */,
91279D3D0F9D1D6A007B0D52 /* item.cpp */,
91279CC10F9D19DA007B0D52 /* monster.cpp */,
91E5C79D0F9F60FA00C21460 /* outdoors.cpp */,
@@ -1394,6 +1404,7 @@
91F06E8F1A2EBEE70038E902 /* special_parse.hpp */,
919F2E72287E4E0500F47750 /* tagfile.hpp */,
91BFA3D91902ADD5001686E4 /* tarball.hpp */,
9191E3A82D8AFCF000AF6D01 /* fmtlib */,
91BFA3DC19033E00001686E4 /* gzstream */,
912DFE8718E24B0B00B00D75 /* resmgr */,
910BBA190FB8C43E001E34EA /* xml-parser */,
@@ -1438,6 +1449,16 @@
path = ../../src;
sourceTree = "<group>";
};
9191E3A82D8AFCF000AF6D01 /* fmtlib */ = {
isa = PBXGroup;
children = (
9191E3B02D8AFD5800AF6D01 /* format.cc */,
9191E3AE2D8AFD5800AF6D01 /* os.cc */,
);
name = fmtlib;
path = ../../deps/fmtlib/src;
sourceTree = "<group>";
};
91B3EECD0F969B7000BF5B67 /* ScenEd */ = {
isa = PBXGroup;
children = (
@@ -1468,6 +1489,7 @@
91B3EEE70F969BA700BF5B67 /* scen.btnmg.hpp */,
91B3EEE10F969BA700BF5B67 /* scen.core.hpp */,
91B3EEE40F969BA700BF5B67 /* scen.fileio.hpp */,
41E550522DEB8C1400A7DF52 /* scen.undo.hpp */,
91B3EEDE0F969BA700BF5B67 /* scen.global.hpp */,
91B3EEE50F969BA700BF5B67 /* scen.graphics.hpp */,
91B3EEE00F969BA700BF5B67 /* scen.keydlgs.hpp */,
@@ -1482,6 +1504,7 @@
91B3EEEA0F969BA700BF5B67 /* src */ = {
isa = PBXGroup;
children = (
41E550532DEB8C2A00A7DF52 /* scen.undo.cpp */,
91B3EEF10F969BA700BF5B67 /* scen.actions.cpp */,
91034D201B225E49008F01C1 /* scen.appleevents.mm */,
91B3EEF50F969BA700BF5B67 /* scen.btnmg.cpp */,
@@ -2189,6 +2212,7 @@
9143044A2970EDC1003A3967 /* keymods.cpp in Sources */,
919BE8B32D6776A8000C64C6 /* special-outdoor.cpp in Sources */,
91E128EF1BC2076B00C8BE1D /* pictchoice.cpp in Sources */,
41342CEA2DFB872400E66BEB /* quest.cpp in Sources */,
91E128F01BC2076B00C8BE1D /* strchoice.cpp in Sources */,
91E128F11BC2076B00C8BE1D /* strdlog.cpp in Sources */,
91CE248A1EA12866005BDCE4 /* utility.cpp in Sources */,
@@ -2202,6 +2226,8 @@
91EC1F0523DDFF9D00271891 /* res_font.cpp in Sources */,
91EC1F0623DDFF9D00271891 /* res_image.cpp in Sources */,
91EC1F0723DDFF9D00271891 /* res_sound.cpp in Sources */,
9191E3B32D8AFD5800AF6D01 /* format.cc in Sources */,
9191E3B12D8AFD5800AF6D01 /* os.cc in Sources */,
91EC1F0823DDFF9D00271891 /* res_strings.cpp in Sources */,
91F3205023E65EA3009650AF /* framerate_limiter.cpp in Sources */,
91FE0E3823F084B70084CA6B /* drawable_manager.cpp in Sources */,
@@ -2250,6 +2276,7 @@
914CA45819074E0100B6ADD1 /* scen.menus.mac.mm in Sources */,
91034D211B225E4A008F01C1 /* scen.appleevents.mm in Sources */,
91B0D5D21E344300002BE4DA /* view_dialogs.cpp in Sources */,
41E550542DEB8C2A00A7DF52 /* scen.undo.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -2451,6 +2478,7 @@
"$(PROJECT_DIR)/../../src/fileio/xml-parser",
"$(PROJECT_DIR)/../../src/tools",
"$(PROJECT_DIR)/../../deps/Catch2/include/external",
"$(PROJECT_DIR)/../../deps/fmtlib/include",
);
LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
LIBRARY_SEARCH_PATHS = (
@@ -2488,7 +2516,7 @@
"-Wno-quoted-include-in-framework-header",
"-Wno-shorten-64-to-32",
"-Wno-comma",
"-Werror=implicit-fallthrough",
"-Wimplicit-fallthrough",
);
};
name = Debug;
@@ -2567,6 +2595,7 @@
"$(PROJECT_DIR)/../../src/tools",
"$(PROJECT_DIR)/../../deps/Catch2/include/external",
"/usr/local/opt/boost@1.85/include",
"$(PROJECT_DIR)/../../deps/fmtlib/include",
);
LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
LIBRARY_SEARCH_PATHS = (
@@ -2602,7 +2631,7 @@
"-Wno-quoted-include-in-framework-header",
"-Wno-shorten-64-to-32",
"-Wno-comma",
"-Werror=implicit-fallthrough",
"-Wimplicit-fallthrough",
);
};
name = Release;

View File

@@ -18,11 +18,11 @@
<!-- The height of this text needs to be 10 times the number of lines. -->
<text top='52' left='50' width='400' height='240'>
ORIGINAL GAME: <br/><br/><br/><br/><br/><br/>
OPEN SOURCE CREDITS: <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
OPEN SOURCE CREDITS: <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
SCENARIO FIXES AND UPDATES: <br/><br/>
</text>
<!-- This text is right-aligned and fills out the above text with sub-headings -->
<text top='52' left='40' width='190' height='840' align='right'>
<text top='52' left='40' width='190' height='860' align='right'>
<br/>
Concept, Design, Programming: <br/>
Graphics: <br/>
@@ -34,11 +34,11 @@
Graphics: <br/><br/><br/><br/><br/><br/><br/>
Consulting: <br/><br/><br/><br/>
Testing and Troubleshooting: <br/><br/>
Funding: <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
Funding: <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<br/><br/>
Bandit Busywork: <br/>
</text>
<text top='52' left='250' width='230' height='840'>
<text top='52' left='250' width='230' height='860'>
<!-- ORIGINAL GAME --><br/>
<!-- Concept, Design, Programming -->Jeff Vogel <br/>
<!-- Graphics -->Andrew Hunter <br/>
@@ -84,6 +84,7 @@
Bret Rodabaugh <br/>
Dylan Nugent <br/>
Evan Mulrooney <br/>
Glen Chudley <br/>
Jake Harrelson <br/>
Jared Forcinito <br/>
Jeff Potter <br/>
@@ -99,6 +100,7 @@
K L <br/>
Laura Nelson <br/>
Mariann Krizsan <br/>
Maryanne Wachter <br/>
Mike Lapinsky <br/>
Nathan Rickey <br/>
Nick Chaimov <br/>

View File

@@ -0,0 +1,12 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='keep' escbtn='cancel'>
<pict type='dlog' num='7' top='6' left='6'/>
<text name='keep-msg' top='6' left='49' width='256' height='32'>
Keep changes to {{item}} before editing another item?
</text>
<button name='cancel' type='regular' top='43' left='109'>Cancel</button>
<button name='revert' type='regular' top='43' left='175'>Discard</button>
<button name='keep' type='regular' top='43' left='240'>Keep</button>
</dialog>

View File

@@ -0,0 +1,12 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='keep' escbtn='cancel'>
<pict type='dlog' num='7' top='6' left='6'/>
<text name='keep-msg' top='6' left='49' width='256' height='32'>
Keep changes to {{monst}} before editing another monster?
</text>
<button name='cancel' type='regular' top='43' left='109'>Cancel</button>
<button name='revert' type='regular' top='43' left='175'>Discard</button>
<button name='keep' type='regular' top='43' left='240'>Keep</button>
</dialog>

View File

@@ -0,0 +1,12 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='keep' escbtn='cancel'>
<pict type='dlog' num='7' top='6' left='6'/>
<text name='keep-msg' top='6' left='49' width='256' height='32'>
Keep changes to {{enc-type}} {{num}} before editing another encounter?
</text>
<button name='cancel' type='regular' top='43' left='109'>Cancel</button>
<button name='revert' type='regular' top='43' left='175'>Discard</button>
<button name='keep' type='regular' top='43' left='240'>Keep</button>
</dialog>

View File

@@ -0,0 +1,12 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='keep' escbtn='cancel'>
<pict type='dlog' num='7' top='6' left='6'/>
<text name='keep-msg' top='6' left='49' width='256' height='32'>
Keep changes to {{name}} before editing another personality?
</text>
<button name='cancel' type='regular' top='43' left='109'>Cancel</button>
<button name='revert' type='regular' top='43' left='175'>Discard</button>
<button name='keep' type='regular' top='43' left='240'>Keep</button>
</dialog>

View File

@@ -0,0 +1,12 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='keep' escbtn='cancel'>
<pict type='dlog' num='7' top='6' left='6'/>
<text name='keep-msg' top='6' left='49' width='256' height='32'>
Keep changes to {{quest}} before editing another quest?
</text>
<button name='cancel' type='regular' top='43' left='109'>Cancel</button>
<button name='revert' type='regular' top='43' left='175'>Discard</button>
<button name='keep' type='regular' top='43' left='240'>Keep</button>
</dialog>

View File

@@ -0,0 +1,12 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='keep' escbtn='cancel'>
<pict type='dlog' num='7' top='6' left='6'/>
<text name='keep-msg' top='6' left='49' width='256' height='32'>
Keep changes to {{shop}} before editing another shop?
</text>
<button name='cancel' type='regular' top='43' left='109'>Cancel</button>
<button name='revert' type='regular' top='43' left='175'>Discard</button>
<button name='keep' type='regular' top='43' left='240'>Keep</button>
</dialog>

View File

@@ -0,0 +1,12 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='keep' escbtn='cancel'>
<pict type='dlog' num='7' top='6' left='6'/>
<text name='keep-msg' top='6' left='49' width='256' height='32'>
Keep changes to {{spec-item}} before editing another special item?
</text>
<button name='cancel' type='regular' top='43' left='109'>Cancel</button>
<button name='revert' type='regular' top='43' left='175'>Discard</button>
<button name='keep' type='regular' top='43' left='240'>Keep</button>
</dialog>

View File

@@ -0,0 +1,12 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='keep' escbtn='cancel'>
<pict type='dlog' num='7' top='6' left='6'/>
<text name='keep-msg' top='6' left='49' width='256' height='32'>
Keep changes to {{PC}}'s spells before editing someone else?
</text>
<button name='cancel' type='regular' top='43' left='109'>Cancel</button>
<button name='revert' type='regular' top='43' left='175'>Discard</button>
<button name='keep' type='regular' top='43' left='240'>Keep</button>
</dialog>

View File

@@ -0,0 +1,12 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='keep' escbtn='cancel'>
<pict type='dlog' num='7' top='6' left='6'/>
<text name='keep-msg' top='6' left='49' width='256' height='32'>
Keep changes to {{ter}} before editing another terrain?
</text>
<button name='cancel' type='regular' top='43' left='109'>Cancel</button>
<button name='revert' type='regular' top='43' left='175'>Discard</button>
<button name='keep' type='regular' top='43' left='240'>Keep</button>
</dialog>

View File

@@ -8,12 +8,11 @@
<text top='6' left='49' width='271' height='66'>
You are about to delete the last town in your scenario's town list
(so if you have 10 towns in your scenario, the tenth will disappear).
This change will immediately be saved, and can't be undone.
</text>
<text top='127' left='49' width='268' height='14'>Are you sure you want to do this?</text>
<text top='73' left='49' width='276' height='53'>
Make sure to remove all outdoor entrances to the deleted town,
as well as all references to it in special encounters.
Failure to do so will result in scenario run-time errors.
</text>
<text top='127' left='49' width='268' height='14'>Are you sure you want to do this?</text>
</dialog>

View File

@@ -13,11 +13,12 @@
<text rel-anchor='prev' relative='abs pos' size='large' top='8' left='8' width='142' height='13'>Item special ability:</text>
<text name='abilname' rel-anchor='prev' relative='pos pos-in' framed='true' top='0' left='11' width='250' height='13'/>
<!-- These fields are called str1 and str2 but I think they can only be for numbers? -->
<text name='str1-title' rel-anchor='prev' relative='abs pos' framed='true' top='8' left='8' width='185' height='16'/>
<field name='str1' rel-anchor='prev' relative='pos pos-in' top='0' left='7' width='77' height='16'/>
<field name='str1' type='int' rel-anchor='prev' relative='pos pos-in' top='0' left='7' width='77' height='16'/>
<button name='str1-choose' rel-anchor='prev' relative='pos pos-in' type='large' top='-4' left='13'>Create/Edit</button>
<text name='str2-title' rel-anchor='prev' relative='abs pos' framed='true' top='3' left='8' width='185' height='16'/>
<field name='str2' rel-anchor='prev' relative='pos pos-in' top='0' left='7' width='77' height='16'/>
<field name='str2' type='int' rel-anchor='prev' relative='pos pos-in' top='0' left='7' width='77' height='16'/>
<button name='str2-choose1' rel-anchor='prev' relative='pos pos-in' type='regular' top='-4' left='13'>Choose</button>
<button name='str2-choose2' rel-anchor='prev' relative='pos pos-in' type='regular' top='0' left='5'>Priest</button>

View File

@@ -29,6 +29,7 @@
<button name='left' type='left' top='334' left='10' def-key='left'/>
<text name='num' top='115' left='211' width=' 46' height='14'/>
<pict type='dlog' num='16' top='8' left='8'/>
<pict name='ter-pic' type='ter' num='0' top='70' left='458'/>
<text size='large' top='6' left='50' width='256' height='20'>Item Placement Shortcuts</text>
<text top='25' left='50' width='439' height='40'>
You can design shortcuts for automatic placement of items in towns.
@@ -38,7 +39,7 @@
<text top='66' left='50' width='439' height='41'>
Enter the terrain type to get the items,
the numbers of the items to place,
and the percentage chance (0-100) that the item is places there.
and the percentage chance (0-100) that the item is placed there.
For more details, see the documentation.
</text>
<text top='115' left='50' width='155' height='14'>Item shortcut number:</text>

View File

@@ -2,21 +2,18 @@
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='okay' escbtn='cancel'>
<!--
TODO: Assign numeric types (type = 'int' or 'uint') to fields as appropriate
-->
<field name='full' top='30' left='163' width='226' height='16'/>
<field name="short" top='54' left='163' width='125' height='16'/>
<field name='picnum' top='82' left='140' width='52' height='16'/>
<field name='level' top='219' left='161' width='52' height='16'/>
<field name='awkward' top='243' left='161' width='52' height='16'/>
<field name='bonus' top='267' left='161' width='52' height='16'/>
<field name='prot' top='291' left='161' width='52' height='16'/>
<field name='charges' top='315' left='161' width='52' height='16'/>
<field name='flag' top='219' left='366' width='52' height='16'/>
<field name='value' top='243' left='366' width='52' height='16'/>
<field name='weight' top='267' left='366' width='52' height='16'/>
<field name='class' top='291' left='366' width='52' height='16'/>
<field name='picnum' type='uint' top='82' left='140' width='52' height='16'/>
<field name='level' type='uint' top='219' left='161' width='52' height='16'/>
<field name='awkward' type='uint' top='243' left='161' width='52' height='16'/>
<field name='bonus' type='uint' top='267' left='161' width='52' height='16'/>
<field name='prot' type='int' top='291' left='161' width='52' height='16'/>
<field name='charges' type='uint' top='315' left='161' width='52' height='16'/>
<field name='flag' type='uint' top='219' left='366' width='52' height='16'/>
<field name='value' type='uint' top='243' left='366' width='52' height='16'/>
<field name='weight' type='uint' top='267' left='366' width='52' height='16'/>
<field name='class' type='uint' top='291' left='366' width='52' height='16'/>
<button name='okay' type='regular' top='357' left='509'>OK</button>
<button name='cancel' type='regular' top='357' left='434'>Cancel</button>
<button name='prev' type='left' top='357' left='13'/>
@@ -82,7 +79,7 @@
<pict name='missile-pic' type='missile' num='3' top='243' left='440'/>
<button name='choosemiss' type='regular' top='240' left='521'>Choose</button>
<text name='skill-title' top='270' left='440' width='140' height='16'>Weapon key skill:</text>
<field name='weap-type' top='291' left='440' width='73' height='16'/>
<field name='weap-type' type='uint' top='291' left='440' width='73' height='16'/>
<button name='choosetp' type='regular' top='288' left='521'>Choose</button>
<text top='313' left='221' width='363' height='40'>
Enter properties for this item type.

View File

@@ -18,23 +18,23 @@
<button name='pick-subtype' type='regular' top='161' left='330'>Choose</button>
<text top='192' left='10' width='100' height='16'>Missile:</text>
<field name='missile' top='190' left='120' width='50' height='16'/>
<field name='missile' type='uint' top='190' left='120' width='50' height='16'/>
<text name='missile-touch' framed='true' top='192' left='120' width='50' height='16'>None</text>
<button name='pick-missile' type='regular' top='187' left='180'>Choose</button>
<pict name='missile-pic' type='missile' num='0' top='192' left='253'/>
<text top='220' left='10' width='100' height='16'>Ability Range:</text>
<field name='range' top='218' left='120' width='50' height='16'/>
<field name='range' type='uint' top='218' left='120' width='50' height='16'/>
<text name='range-touch' framed='true' top='220' left='120' width='50' height='16'>Touch</text>
<text top='220' left='180' width='100' height='16'>Chance of Using:</text>
<field name='odds' top='218' left='290' width='50' height='16'/>
<field name='odds' type='uint' top='218' left='290' width='50' height='16'/>
<text top='248' left='10' width='100' height='16'>Ability Strength:</text>
<field name='strength' top='246' left='120' width='70' height='16'/>
<field name='strength' type='uint' top='246' left='120' width='70' height='16'/>
<button name='pick-strength' type='regular' top='245' left='200'>Choose</button>
<text name='extra-title' top='276' left='10' width='100' height='16'>Extra:</text>
<field name='extra' top='274' left='120' width='70' height='16'/>
<field name='extra' type='int' top='274' left='120' width='70' height='16'/>
<button name='pick-extra' type='regular' top='271' left='200'>Choose</button>
<button name='okay' type='regular' top='300' left='330'>OK</button>

View File

@@ -18,14 +18,14 @@
<button name='pick-subtype' type='regular' top='161' left='330'>Choose</button>
<text top='192' left='10' width='100' height='16'>Missile:</text>
<field name='missile' top='190' left='120' width='50' height='16'/>
<field name='missile' type='uint' top='190' left='120' width='50' height='16'/>
<button name='pick-missile' type='regular' top='187' left='180'>Choose</button>
<pict name='missile-pic' type='missile' num='0' top='192' left='253'/>
<text top='220' left='10' width='100' height='16'>Number of Dice:</text>
<field name='dice' top='218' left='120' width='50' height='16'/>
<field name='dice' type='uint' top='218' left='120' width='50' height='16'/>
<text top='220' left='180' width='100' height='16'>Sides per Die:</text>
<field name='sides' top='218' left='290' width='50' height='16'/>
<field name='sides' type='uint' top='218' left='290' width='50' height='16'/>
<text top='248' left='10' width='100' height='16'>Ability Range:</text>
<field name='range' top='246' left='120' width='50' height='16'/>
@@ -33,7 +33,7 @@
<field name='odds' top='246' left='290' width='50' height='16'/>
<text top='276' left='10' width='100' height='16'>Skill Level:</text>
<field name='skill' top='274' left='120' width='70' height='16'/>
<field name='skill' type='uint' top='274' left='120' width='70' height='16'/>
<button name='okay' type='regular' top='300' left='330'>OK</button>
<button name='cancel' type='regular' top='300' left='265'>Cancel</button>

View File

@@ -0,0 +1,13 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='okay' escbtn='cancel'>
<pict type='dlog' num='7' top='8' left='8'/>
<text name='warning' top='2' left='48' width='248' height='33'>
This ability will be overwritten: <br/>
<br/>
{{abil}}
</text>
<button name='cancel' type='regular' top='42' left='169'>Cancel</button>
<button name='okay' type='regular' top='42' left='238'>OK</button>
</dialog>

View File

@@ -12,14 +12,14 @@
<text name='type' framed='true' top='108' left='120' width='200' height='16'/>
<text top='136' left='10' width='100' height='16'>Field Type:</text>
<field name='field' top='134' left='120' width='70' height='16'/>
<field name='field' type='uint' top='134' left='120' width='70' height='16'/>
<button name='pick-field' type='regular' top='133' left='200'>Choose</button>
<text top='164' left='10' width='120' height='16'>Radiate Chance:</text>
<field name='odds' top='162' left='120' width='50' height='16'/>
<field name='odds' type='uint' top='162' left='120' width='50' height='16'/>
<text top='192' left='10' width='100' height='16'>Area Affected:</text>
<field name='pat' top='190' left='120' width='50' height='16'/>
<field name='pat' type='uint' top='190' left='120' width='50' height='16'/>
<button name='pick-pat' type='regular' top='187' left='180'>Choose</button>
<button name='okay' type='regular' top='216' left='330'>OK</button>

View File

@@ -14,14 +14,14 @@
<text name='ap' framed='true' top='136' left='120' width='200' height='16'/>
<text name='extra1-title' framed='true' top='164' left='10' width='200' height='16'>Extra 1</text>
<field name='extra1' top='162' left='220' width='70' height='16'/>
<field name='extra1' type='uint' top='162' left='220' width='70' height='16'/>
<button name='pick-extra1' type='large' top='161' left='300'>Create/Edit</button>
<text name='extra2-title' framed='true' top='192' left='10' width='200' height='16'>Extra 2</text>
<field name='extra2' top='190' left='220' width='70' height='16'/>
<field name='extra2' type='uint' top='190' left='220' width='70' height='16'/>
<text name='extra3-title' framed='true' top='220' left='10' width='200' height='16'>Extra 3</text>
<field name='extra3' top='218' left='220' width='70' height='16'/>
<field name='extra3' type='uint' top='218' left='220' width='70' height='16'/>
<button name='okay' type='regular' top='244' left='339'>OK</button>
<button name='cancel' type='regular' top='244' left='274'>Cancel</button>

View File

@@ -20,14 +20,14 @@
<button name='pick-summon' type='regular' top='161' left='330'>Choose</button>
<text top='192' left='10' width='100' height='16'>Minimum number:</text>
<field name='min' top='190' left='120' width='50' height='16'/>
<field name='min' type='uint' top='190' left='120' width='50' height='16'/>
<text top='192' left='180' width='100' height='16'>Maximum number:</text>
<field name='max' top='190' left='290' width='50' height='16'/>
<field name='max' type='uint' top='190' left='290' width='50' height='16'/>
<text top='220' left='10' width='100' height='16'>Summon duration:</text>
<field name='len' top='218' left='120' width='50' height='16'/>
<field name='len' type='uint' top='218' left='120' width='50' height='16'/>
<text top='220' left='180' width='100' height='16'>Chance of Using:</text>
<field name='odds' top='218' left='290' width='50' height='16'/>
<field name='odds' type='uint' top='218' left='290' width='50' height='16'/>
<button name='okay' type='regular' top='244' left='330'>OK</button>
<button name='cancel' type='regular' top='244' left='265'>Cancel</button>

View File

@@ -2,30 +2,14 @@
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='okay' escbtn='cancel'>
<!--
TODO: Assign numeric types (type = 'int' or 'uint') to fields as appropriate
-->
<field name='loot-item' top='178' left='194' width='64' height='16'/>
<field name='loot-chance' top='178' left='464' width='64' height='16'/>
<text top='216' left='120' width='40' height='16'>Magic:</text>
<field name='magic-res' top='215' left='167' width='80' height='16'/>
<text top='246' left='120' width='40' height='16'>Fire:</text>
<field name='fire-res' top='245' left='167' width='80' height='16'/>
<text top='216' left='273' width='40' height='16'>Cold:</text>
<field name='cold-res' top='215' left='320' width='80' height='16'/>
<text top='246' left='273' width='40' height='16'>Poison:</text>
<field name='poison-res' top='245' left='320' width='80' height='16'/>
<led name='mindless' top='215' left='415'>Mindless</led>
<led name='amorph' top='230' left='415'>Amorphous</led>
<led name='invuln' top='245' left='415'>Invulnerable</led>
<pict type='dlog' num='16' top='8' left='8'/>
<pict name='icon' type='monst' num='0' top='8' left='8'/>
<text size='large' top='6' left='50' width='158' height='16'>Edit Monster Abilities</text>
<text framed='true' top='6' left='222' width='111' height='14'>Monster number:</text>
<text name='num' framed='true' top='8' left='340' width='37' height='14'/>
<text name='info' framed='true' top='6' left='222' width='170' height='14'>Monster {{num}}: {{name}}</text>
<text top='2' left='408' width='184' height='54'>
Enter properties for this monster type. For a detailed
description of the fields, see the documentation.
</text>
<text size='large' top='54' left='7' width='110' height='14'>Special abilities:</text>
<stack name='abils'>
<text name='abil-name1' framed='true' top='54' left='124' width='183' height='14'/>
@@ -39,13 +23,7 @@
</stack>
<button name='abil-up' type='up' top='82' left='30'/>
<button name='abil-down' type='down' top='107' left='30'/>
<text size='large' top='160' left='7' width='158' height='16'>Special treasure:</text>
<text top='179' left='23' width='162' height='14'>Item to drop when killed:</text>
<text top='179' left='270' width='186' height='14'>Chance of dropping: (0-100)</text>
<text top='211' left='9' width='108' height='112'>Monster resistances:<br/><br/>
This is the % of full damage the monster takes when of this type.<br/>
e.g. 0 - no damage, 100 - normal, 200 - double
</text>
<text top='81' left='420' width='94' height='14'>Summon type:</text>
<group name='summon'>
<led name='s0' state='off' top='85' left='505'>Weak (no summon)</led>
@@ -54,18 +32,47 @@
<led name='s3' state='off' top='130' left='505'>Type 3</led>
<led name='s4' state='off' top='145' left='505'>Unique (no summon)</led>
</group>
<text size='large' top='160' left='7' width='158' height='16'>Special treasure:</text>
<text top='179' left='23' width='162' height='14'>Item to drop when killed:</text>
<field name='loot-item' top='178' left='164' width='64' height='16' type='uint'/>
<button name='pick-item' type='regular' top='175' left='238'>Choose</button>
<text top='179' left='320' width='186' height='14'>Chance of dropping: (0-100)</text>
<field name='loot-chance' top='178' left='484' width='64' height='16' type='uint'/>
<text top='211' left='9' width='108' height='112'>Monster resistances:<br/><br/>
This is the % of full damage the monster takes when of this type.<br/>
e.g. 0 - no damage, 100 - normal, 200 - double
</text>
<text top='216' left='120' width='40' height='16'>Magic:</text>
<field name='magic-res' top='215' left='167' width='80' height='16' type='uint' />
<text top='246' left='120' width='40' height='16'>Fire:</text>
<field name='fire-res' top='245' left='167' width='80' height='16' type='uint' />
<text top='216' left='273' width='40' height='16'>Cold:</text>
<field name='cold-res' top='215' left='320' width='80' height='16' type='uint' />
<text top='246' left='273' width='40' height='16'>Poison:</text>
<field name='poison-res' top='245' left='320' width='80' height='16' type='uint' />
<led name='mindless' top='215' left='415'>Mindless</led>
<led name='amorph' top='230' left='415'>Amorphous</led>
<led name='invuln' top='245' left='415'>Invulnerable</led>
<led name='invis' size='small' top='280' left='120'>
This monster is naturally and permanently invisible.
</led>
<led name='guard' size='small' top='296' left='120'>
This monster is a guard - when the town goes hostile, it will hunt the party down.
</led>
<text top='331' left='10' width='250' height='16'>Special node to call when monster first seen</text>
<field name='onsee' top='330' left='270' width='50' height='16'/>
<field name='onsee' top='330' left='270' width='50' height='16' type='uint' />
<button name='edit-see' type='large' top='327' left='330'>Create/Edit</button>
<text top='361' left='10' width='250' height='16'>Monster vocalization sound</text>
<field name='snd' top='360' left='270' width='50' height='16'/>
<field name='snd' top='360' left='270' width='50' height='16' type='uint' />
<button name='pick-snd' type='regular' top='357' left='330'>Choose</button>
<button name='okay' type='regular' top='385' left='572'>OK</button>
<button name='cancel' type='regular' top='385' left='506'>Cancel</button>
</dialog>

View File

@@ -2,9 +2,6 @@
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='okay' escbtn='cancel'>
<!--
TODO: Assign numeric types (type = 'int' or 'uint') to fields as appropriate
-->
<pict name='icon' type='monst' num='0' top='8' left='8'/>
<text size='large' top='6' left='44' width='158' height='16'>Edit Monster Statistics</text>
@@ -15,31 +12,31 @@
<field name='name' top='30' left='180' width='186' height='16'/>
<text top='58' left='8' width='120' height='14'>Monster picture:</text>
<field name='pic' top='57' left='140' width='52' height='16'/>
<field name='pic' type='uint' top='57' left='140' width='52' height='16'/>
<button name='pickicon' type='large' top='53' left='201'>Select Icon</button>
<text name='w' top='59' left='334' width='86' height='14'>Width = </text>
<text name='h' top='59' left='426' width='86' height='14'>Height = </text>
<text top='83' left='8' width='179' height='14'>Monster level: (0 - 40)</text>
<field name='level' top='82' left='206' width='52' height='16'/>
<field name='level' type='uint' top='82' left='206' width='52' height='16'/>
<text top='107' left='8' width='179' height='14'>Monster health: (0 - 2500)</text>
<field name='health' top='106' left='206' width='52' height='16'/>
<field name='health' type='uint' top='106' left='206' width='52' height='16'/>
<text top='131' left='8' width='179' height='14'>Monster armor: (0 - 50)</text>
<field name='armor' top='130' left='206' width='52' height='16'/>
<field name='armor' type='uint' top='130' left='206' width='52' height='16'/>
<text top='155' left='8' width='179' height='14'>Monster skill: (0 - 40)</text>
<field name='skill' top='154' left='206' width='52' height='16'/>
<field name='skill' type='uint' top='154' left='206' width='52' height='16'/>
<text top='179' left='8' width='179' height='14'>Monster speed: (1-12)</text>
<field name='speed' top='178' left='206' width='52' height='16'/>
<field name='speed' type='uint' top='178' left='206' width='52' height='16'/>
<text top='203' left='8' width='179' height='14'>Monster magic spells: (0 - 7)</text>
<field name='mage' top='202' left='206' width='51' height='16'/>
<field name='mage' type='uint' top='202' left='206' width='51' height='16'/>
<text top='227' left='8' width='179' height='14'>Monster priest spells: (0 - 7)</text>
<field name='priest' top='226' left='206' width='51' height='16'/>
<field name='priest' type='uint' top='226' left='206' width='51' height='16'/>
<text size='large' top='82' left='273' width='158' height='16'>Hand to hand combat:</text>
<text top='102' left='343' width='72' height='40'>Number of dice:<br/>(0 - 20)</text>
@@ -47,20 +44,20 @@
<text top='128' left='470' width='56' height='14'>Type</text>
<text top='150' left='283' width='50' height='14'>Attack 1:</text>
<field name='dice1' top='149' left='350' width='52' height='16'/>
<field name='sides1' top='149' left='410' width='52' height='16'/>
<field name='dice1' type='uint' top='149' left='350' width='52' height='16'/>
<field name='sides1' type='uint' top='149' left='410' width='52' height='16'/>
<text name='type1' top='150' left='470' width='120' height='14'/>
<button name='picktype1' type='regular' top='146' left='525'>Choose</button>
<text top='174' left='283' width='50' height='14'>Attack 2:</text>
<field name='dice2' top='173' left='350' width='52' height='16'/>
<field name='sides2' top='173' left='410' width='52' height='16'/>
<field name='dice2' type='uint' top='173' left='350' width='52' height='16'/>
<field name='sides2' type='uint' top='173' left='410' width='52' height='16'/>
<text name='type2' top='174' left='470' width='120' height='14'/>
<button name='picktype2' type='regular' top='170' left='525'>Choose</button>
<text top='198' left='283' width='50' height='14'>Attack 3:</text>
<field name='dice3' top='197' left='350' width='52' height='16'/>
<field name='sides3' top='197' left='410' width='52' height='16'/>
<field name='dice3' type='uint' top='197' left='350' width='52' height='16'/>
<field name='sides3' type='uint' top='197' left='410' width='52' height='16'/>
<text name='type3' top='198' left='470' width='120' height='14'/>
<button name='picktype3' type='regular' top='194' left='525'>Choose</button>
@@ -69,12 +66,12 @@
<button name='picktype' type='regular' top='250' left='264'>Choose</button>
<text top='278' left='8' width='120' height='14'>Default talking picture:</text>
<field name='talk' top='276' left='138' width='77' height='16'/>
<field name='talk' type='uint' top='276' left='138' width='77' height='16'/>
<pict name='talkpic' type='talk' num='0' top='276' left='226'/>
<button name='picktalk' type='regular' top='275' left='264'>Choose</button>
<text top='250' left='343' width='162' height='14'>Monster treasure: (0-4)</text>
<field name='treas' top='248' left='513' width='55' height='16'/>
<field name='treas' type='uint' top='248' left='513' width='55' height='16'/>
<text top='275' left='343' width='302' height='14'>Default attitude:<br/>
(attitude creature has when you place it)

View File

@@ -18,16 +18,16 @@
<led name='snd4' top='85' left='350'>Custom</led>
</group>
<text top='106' left='50' width='190' height='16'>Background: (-1 = scenario default)</text>
<field name='bg-out' top='104' left='250' width='80' height='16'/>
<field name='bg-out' type='int' top='104' left='250' width='80' height='16'/>
<button name='pick-out' type='regular' top='101' left='340'>Choose</button>
<text top='130' left='50' width='190' height='16'>Combat Background:</text>
<field name='bg-fight' top='128' left='250' width='80' height='16'/>
<field name='bg-fight' type='int' top='128' left='250' width='80' height='16'/>
<button name='pick-fight' type='regular' top='125' left='340'>Choose</button>
<text top='154' left='50' width='190' height='16'>Default Town Background:</text>
<field name='bg-town' top='152' left='250' width='80' height='16'/>
<field name='bg-town' type='int' top='152' left='250' width='80' height='16'/>
<button name='pick-town' type='regular' top='149' left='340'>Choose</button>
<text top='178' left='50' width='190' height='16'>Default Dungeon Background:</text>
<field name='bg-dungeon' top='176' left='250' width='80' height='16'/>
<field name='bg-dungeon' type='int' top='176' left='250' width='80' height='16'/>
<button name='pick-dungeon' type='regular' top='173' left='340'>Choose</button>
<text top='204' left='50' width='101' height='90'>Comment:<br/><br/>
You can put useful notes for yourself here. It's not used by the game for anything.

View File

@@ -2,12 +2,11 @@
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='okay' escbtn='cancel'>
<!-- OK button -->
<field name='onmeet' top='189' left='361' width='46' height='16'/>
<field name='onmeet' type='int' top='189' left='361' width='46' height='16'/>
<field name='onwin' top='231' left='361' width='46' height='16'/>
<field name='onflee' top='275' left='361' width='46' height='16'/>
<field name='endy' top='309' left='460' width='39' height='16'/>
<field name='endx' top='309' left='508' width='39' height='16'/>
<field name='onflee' type='int' top='275' left='361' width='46' height='16'/>
<field name='endy' type='int' top='309' left='460' width='39' height='16'/>
<field name='endx' type='int' top='309' left='508' width='39' height='16'/>
<text name='foe1' framed='true' top='135' left='129' width='145' height='14'/>
<text name='foe2' framed='true' top='159' left='129' width='145' height='14'/>
<text name='foe3' framed='true' top='183' left='129' width='145' height='14'/>
@@ -18,10 +17,6 @@
<text name='ally1' framed='true' top='303' left='129' width='145' height='14'/>
<text name='ally2' framed='true' top='327' left='129' width='145' height='14'/>
<text name='ally3' framed='true' top='351' left='129' width='145' height='14'/>
<button name='okay' type='regular' top='370' left='489'>OK</button>
<button name='cancel' type='regular' top='370' left='423'>Cancel</button>
<button name='left' type='left' def-key='left' top='370' left='11'/>
<button name='right' type='right' def-key='right' top='370' left='74'/>
<button name='choose-foe1' type='regular' top='130' left='280'>Choose</button>
<button name='choose-foe2' type='regular' top='154' left='280'>Choose</button>
<button name='choose-foe3' type='regular' top='178' left='280'>Choose</button>
@@ -69,4 +64,23 @@
<text top='213' left='352' width='194' height='14'>Special called when party wins</text>
<text top='256' left='352' width='194' height='14'>Special called if party flees</text>
<text top='299' left='352' width='103' height='33'>Stuff done flag to eliminate encounter</text>
<text name='loc-label' size='large' top='380' left='11' width='113' height='14'>Locations</text>
<text name='loc-label2' top='394' left='11' width='113' height='14'>(Any group can appear at any location.)</text>
<text name='loc1' framed='true' top='380' left='129' width='55' height='14'/>
<button name='choose-loc1' type='tiny' relative='pos abs' rel-anchor='prev' top='381' left='7'/>
<text name='loc2' framed='true' relative='pos abs' rel-anchor='prev' top='380' left='10' width='55' height='14'/>
<button name='choose-loc2' type='tiny' relative='pos abs' rel-anchor='prev' top='381' left='7'/>
<text name='loc3' framed='true' relative='pos abs' rel-anchor='prev' top='380' left='10' width='55' height='14'/>
<button name='choose-loc3' type='tiny' relative='pos abs' rel-anchor='prev' top='381' left='7'/>
<text name='loc4' framed='true' top='380' relative='pos abs' rel-anchor='prev' left='10' width='55' height='14'/>
<button name='choose-loc4' type='tiny' relative='pos abs' rel-anchor='prev' top='381' left='7'/>
<button name='left' type='left' def-key='left' top='412' left='11'/>
<button name='right' type='right' def-key='right' top='412' left='74'/>
<!-- OK button -->
<button name='okay' type='regular' top='412' left='489'>OK</button>
<button name='cancel' type='regular' top='412' left='423'>Cancel</button>
</dialog>

View File

@@ -2,14 +2,11 @@
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='okay' escbtn='cancel'>
<!-- OK button -->
<field name='title' top='42' left='174' width='189' height='16'/>
<field name='dunno' top='66' left='254' width='246' height='43'/>
<field name='look' top='123' left='73' width='427' height='68'/>
<field name='name' top='215' left='73' width='427' height='67'/>
<field name='job' top='308' left='73' width='427' height='67'/>
<button name='okay' type='regular' top='381' left='441'>OK</button>
<button name='cancel' type='regular' top='381' left='375'>Cancel</button>
<button name='left' type='left' top='381' left='47'/>
<button name='right' type='right' top='381' left='110'/>
<pict type='dlog' num='16' top='8' left='8'/>
@@ -21,4 +18,8 @@
<text top='103' left='50' width='160' height='14'>Response to 'look'</text>
<text top='196' left='50' width='165' height='14'>Response to 'name'</text>
<text top='288' left='52' width='170' height='14'>Response to 'job'</text>
<!-- OK button -->
<button name='okay' type='regular' top='381' left='441'>OK</button>
<button name='cancel' type='regular' top='381' left='375'>Cancel</button>
</dialog>

View File

@@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='okay'>
<dialog defbtn='okay' escbtn='cancel'>
<!-- OK button -->
<button name='okay' type='regular' top='195' left='316'>OK</button>
<pict name='pic' type='dlog' num='16' top='8' left='12'/>
@@ -11,9 +11,9 @@
Charges:<br/>
(-1 = default)
</text>
<field name='charges' top='73' left='135' width='52' height='16'/>
<field name='charges' type='int' top='73' left='135' width='52' height='16'/>
<text name='abil-lbl' top='101' left='50' width='80' height='16'>Ability:</text>
<field name='abil' top='101' left='135' width='52' height='16'/>
<field name='abil' type='int' top='101' left='135' width='52' height='16'/>
<button name='abil-choose' type='regular' top='98' left='200'>Choose</button>
<text top='120' left='50' width='80' height='14'>Special Flags:</text>
<led name='always' font='bold' top='138' left='84' height='14'>Always here</led>
@@ -26,5 +26,6 @@
<button name='del' type='regular' top='195' left='8'>Delete</button>
<button name='cancel' type='regular' top='195' left='248'>Cancel</button>
<text top='28' left='196' width='70' height='14'>Location:</text>
<text name='loc' top='28' left='272' width='116' height='14'/>
<text name='loc' top='28' left='257' width='90' height='14'/>
<button name='pick-loc' type='regular' relative='pos neg' rel-anchor='prev' top='4' left='5'>Move</button>
</dialog>

View File

@@ -11,21 +11,21 @@
<field name='name' top='57' left='205' width='252' height='16'/>
<field name='descr' top='84' left='205' width='252' height='104'/>
<text top='209' left='50' width='170' height='28'>Must be completed by day:<br/>(-1 for no deadline)</text>
<field name='chop' top='208' left='205' width='110' height='16'/>
<field name='chop' type='int' top='208' left='205' width='110' height='16'/>
<text top='247' left='50' width='170' height='28'>Event to waive deadline:<br/>(-1 for none)</text>
<field name='evt' top='246' left='205' width='60' height='16'/>
<field name='evt' type='int' top='246' left='205' width='60' height='16'/>
<button name='choose-evt' type='regular' anchor='evt' relative='pos pos-in' top='-4' left='8'>Choose</button>
<text size='large' top='280' left='50' width='220' height='17'>Reward for completing:</text>
<text top='307' left='50' width='150' height='16'>Experience Points:</text>
<field name='xp' top='306' left='205' width='110' height='16'/>
<field name='xp' type='uint' top='306' left='205' width='110' height='16'/>
<text top='333' left='50' width='150' height='16'>Gold:</text>
<field name='gold' top='332' left='205' width='110' height='16'/>
<field name='gold' type='uint' top='332' left='205' width='110' height='16'/>
<led name='rel' wrap='true' top='208' left='345'>Deadline is relative to start day</led>
<led name='start' wrap='true' top='246' left='345'>Player is given quest when scenario starts</led>
<led name='inbank' top='285' left='345'>Include in a job bank:</led>
<field name='bank1' top='306' left='359' width='110' height='16'/>
<field name='bank1' type='int' top='306' left='359' width='110' height='16'/>
<button name='choose-bank1' type='regular' anchor='bank1' relative='pos pos-in' top='-4' left='8'>Choose</button>
<field name='bank2' top='332' left='359' width='110' height='16'/>
<field name='bank2' type='int' top='332' left='359' width='110' height='16'/>
<button name='choose-bank2' type='regular' anchor='bank2' relative='pos pos-in' top='-4' left='8'>Choose</button>
<button name='left' type='left' def-key='left' top='358' left='50'/>
<button name='right' type='right' def-key='right' top='358' left='115'/>

View File

@@ -12,7 +12,7 @@
<led name='adjust' top='56' left='50' size='small'>Adjust difficulty if played by a party stronger than recommended</led>
<text top='79' left='50' width='120' height='14'>Special on Start:</text>
<field name='oninit' top='78' left='181' width='100' height='16'/>
<field name='oninit' type='int' top='78' left='181' width='100' height='16'/>
<button name='pickinit' type='large' top='74' left='290'>Create/Edit</button>
<text top='107' left='50' width='120' height='14'>Campaign ID:</text>

View File

@@ -3,26 +3,26 @@
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='okay' escbtn='cancel'>
<stack name='list' pages='2'>
<field name='time1' top='133' left='130' width='67' height='16'/>
<field name='time2' top='161' left='130' width='67' height='16'/>
<field name='time3' top='189' left='130' width='67' height='16'/>
<field name='time4' top='217' left='130' width='67' height='16'/>
<field name='time5' top='245' left='130' width='67' height='16'/>
<field name='time6' top='273' left='130' width='67' height='16'/>
<field name='time7' top='301' left='130' width='67' height='16'/>
<field name='time8' top='329' left='130' width='67' height='16'/>
<field name='time9' top='357' left='130' width='67' height='16'/>
<field name='time10' top='385' left='130' width='67' height='16'/>
<field name='node1' top='133' left='270' width='39' height='16'/>
<field name='node2' top='161' left='270' width='39' height='16'/>
<field name='node3' top='189' left='270' width='39' height='16'/>
<field name='node4' top='217' left='270' width='39' height='16'/>
<field name='node5' top='245' left='270' width='39' height='16'/>
<field name='node6' top='273' left='270' width='39' height='16'/>
<field name='node7' top='301' left='270' width='39' height='16'/>
<field name='node8' top='329' left='270' width='39' height='16'/>
<field name='node9' top='357' left='270' width='39' height='16'/>
<field name='node10' top='385' left='270' width='39' height='16'/>
<field name='time1' type='uint' top='133' left='130' width='67' height='16'/>
<field name='time2' type='uint' top='161' left='130' width='67' height='16'/>
<field name='time3' type='uint' top='189' left='130' width='67' height='16'/>
<field name='time4' type='uint' top='217' left='130' width='67' height='16'/>
<field name='time5' type='uint' top='245' left='130' width='67' height='16'/>
<field name='time6' type='uint' top='273' left='130' width='67' height='16'/>
<field name='time7' type='uint' top='301' left='130' width='67' height='16'/>
<field name='time8' type='uint' top='329' left='130' width='67' height='16'/>
<field name='time9' type='uint' top='357' left='130' width='67' height='16'/>
<field name='time10' type='uint' top='385' left='130' width='67' height='16'/>
<field name='node1' type='int' top='133' left='270' width='39' height='16'/>
<field name='node2' type='int' top='161' left='270' width='39' height='16'/>
<field name='node3' type='int' top='189' left='270' width='39' height='16'/>
<field name='node4' type='int' top='217' left='270' width='39' height='16'/>
<field name='node5' type='int' top='245' left='270' width='39' height='16'/>
<field name='node6' type='int' top='273' left='270' width='39' height='16'/>
<field name='node7' type='int' top='301' left='270' width='39' height='16'/>
<field name='node8' type='int' top='329' left='270' width='39' height='16'/>
<field name='node9' type='int' top='357' left='270' width='39' height='16'/>
<field name='node10' type='int' top='385' left='270' width='39' height='16'/>
</stack>
<button name='edit1' type='large' top='131' left='324'>Create/Edit</button>
<button name='edit2' type='large' top='159' left='324'>Create/Edit</button>

View File

@@ -7,7 +7,7 @@
<text top='50' left='10' width='100' height='16'>Name:</text>
<field name='name' top='48' left='110' width='200' height='16'/>
<text top='75' left='10' width='100' height='16'>Special Node:</text>
<field name='node' top='74' left='110' width='80' height='16'/>
<field name='node' type='int' top='74' left='110' width='80' height='16'/>
<button name='edit' type='large' top='71' left='200'>Create/Edit</button>
<text top='100' left='10' width='100' height='16'>Quantity:</text>
<field name='amount' type='uint' top='98' left='110' width='80' height='16'/>

View File

@@ -2,13 +2,16 @@
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='okay' escbtn='cancel'>
<field name='num' type='uint' top='64' left='209' width='75' height='16'/>
<pict type='dlog' num='16' top='8' left='8'/>
<button name='okay' type='regular' top='87' left='311'>OK</button>
<text size='large' top='6' left='50' width='256' height='17'>Set Special Number:</text>
<text top='25' left='50' width='323' height='27'>
Which special node should be called when this space is entered/examined?
<text name='prompt' top='25' left='50' width='323' height='27'>
Which special node should be called when this space is entered/examined? (0-{{max-num}} for existing, {{next-num}} for new.)
</text>
<text top='64' left='120' width='84' height='16'>Special node:</text>
<button name='cancel' type='regular' top='87' left='246'>Cancel</button>
<field name='num' type='uint' top='64' left='209' width='75' height='16'/>
<!--TODO add a picker-->
<button name='cancel' type='regular' top='87' left='5'>Cancel</button>
<button name='edit' type='large' top='87' left='180'>Create/Edit</button>
<button name='okay' type='regular' top='87' left='286'>OK</button>
</dialog>

View File

@@ -2,9 +2,6 @@
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='okay' escbtn='cancel'>
<!--
TODO: Assign numeric types (type = 'int' or 'uint') to fields as appropriate
-->
<pict type='dlog' num='16' top='8' left='8'/>
<text name='title' size='large' top='6' left='50' width='158' height='16'>Edit Special Node</text>
<text top='8' left='222' width='90' height='14'>Node number:</text>
@@ -30,80 +27,80 @@
<text size='large' top='102' left='8' width='158' height='16'>Stuff Done Flags:</text>
<text name='sdf1-lbl' framed='true' top='121' left='22' width='220' height='15'/>
<field name='sdf1' top='120' left='254' width='51' height='16'/>
<field name='sdf1' type='int' top='120' left='254' width='51' height='16'/>
<button name='sdf1-edit' type='tiny' top='106' left='272'/>
<led name='sdf1-toggle' top='106' left='272'/>
<text name='sdf2-lbl' framed='true' top='121' left='317' width='176' height='16'/>
<field name='sdf2' top='120' left='510' width='51' height='16'/>
<field name='sdf2' type='int' top='120' left='510' width='51' height='16'/>
<button name='sdf2-edit' type='tiny' top='106' left='528'/>
<led name='sdf2-toggle' top='106' left='528'/>
<text size='large' top='141' left='8' width='176' height='16'>Message, Pict:</text>
<text name='msg1-lbl' framed='true' top='164' left='22' width='238' height='15'/>
<field name='msg1' top='163' left='270' width='51' height='16'/>
<field name='msg1' type='int' top='163' left='270' width='51' height='16'/>
<button name='msg1-edit' type='large' top='161' left='329'>Create/Edit</button>
<led name='msg1-toggle' top='167' left='329'/>
<text name='msg2-lbl' framed='true' top='188' left='22' width='238' height='15'/>
<field name='msg2' top='187' left='270' width='51' height='16'/>
<field name='msg2' type='int' top='187' left='270' width='51' height='16'/>
<button name='msg2-edit' type='large' top='185' left='329'>Create/Edit</button>
<led name='msg2-toggle' top='191' left='329'/>
<text name='msg3-lbl' framed='true' top='212' left='22' width='238' height='15'/>
<field name='msg3' top='211' left='270' width='51' height='16'/>
<field name='msg3' type='int' top='211' left='270' width='51' height='16'/>
<button name='msg3-edit' type='large' top='209' left='329'>Create/Edit</button>
<led name='msg3-toggle' top='215' left='329'/>
<text name='pict-lbl' framed='true' top='236' left='22' width='238' height='15'/>
<field name='pict' top='235' left='270' width='51' height='16'/>
<field name='pict' type='int' top='235' left='270' width='51' height='16'/>
<button name='pict-edit' type='large' top='233' left='329'>Choose</button>
<led name='pict-toggle' top='239' left='329'/>
<text name='pictype-lbl' framed='true' top='260' left='22' width='238' height='15'/>
<field name='pictype' top='259' left='270' width='51' height='16'/>
<field name='pictype' type='int' top='259' left='270' width='51' height='16'/>
<button name='pictype-edit' type='large' top='257' left='329'>Choose</button>
<led name='pictype-toggle' top='263' left='329'/>
<text size='large' top='281' left='8' width='158' height='16'>Extra 1:</text>
<text name='x1a-lbl' framed='true' top='302' left='22' width='238' height='15'/>
<field name='x1a' top='301' left='270' width='51' height='16'/>
<field name='x1a' type='int' top='301' left='270' width='51' height='16'/>
<button name='x1a-edit' type='large' top='298' left='330'>Choose</button>
<led name='x1a-toggle' top='304' left='330'/>
<text name='x1b-lbl' framed='true' top='326' left='22' width='238' height='15'/>
<field name='x1b' top='325' left='270' width='51' height='16'/>
<field name='x1b' type='int' top='325' left='270' width='51' height='16'/>
<button name='x1b-edit' type='large' top='322' left='330'>Create/Edit</button>
<led name='x1b-toggle' top='328' left='330'/>
<text name='x1c-lbl' framed='true' top='350' left='22' width='238' height='15'/>
<field name='x1c' top='349' left='270' width='51' height='16'/>
<field name='x1c' type='int' top='349' left='270' width='51' height='16'/>
<button name='x1c-edit' type='large' top='346' left='330'>Create/Edit</button>
<led name='x1c-toggle' top='352' left='330'/>
<text size='large' top='372' left='8' width='158' height='16'>Extra 2:</text>
<text name='x2a-lbl' framed='true' top='394' left='22' width='238' height='15'/>
<field name='x2a' top='394' left='270' width='51' height='16'/>
<field name='x2a' type='int' top='394' left='270' width='51' height='16'/>
<button name='x2a-edit' type='large' top='391' left='330'>Choose</button>
<led name='x2a-toggle' top='397' left='330'/>
<text name='x2b-lbl' framed='true' top='419' left='22' width='238' height='15'/>
<field name='x2b' top='418' left='270' width='51' height='16'/>
<field name='x2b' type='int' top='418' left='270' width='51' height='16'/>
<button name='x2b-edit' type='large' top='416' left='330'>Create/Edit</button>
<led name='x2b-toggle' top='422' left='330'/>
<text name='x2c-lbl' framed='true' top='443' left='22' width='238' height='15'/>
<field name='x2c' top='442' left='270' width='51' height='16'/>
<field name='x2c' type='int' top='442' left='270' width='51' height='16'/>
<button name='x2c-edit' type='large' top='440' left='330'>Create/Edit</button>
<led name='x2c-toggle' top='446' left='330'/>
<text size='large' top='471' left='8' width='87' height='16'>Jump To:</text>
<text name='jump-lbl' framed='true' top='472' left='99' width='182' height='14'/>
<field name='jump' top='471' left='291' width='52' height='15'/>
<field name='jump' type='int' top='471' left='291' width='52' height='15'/>
<button name='jump-edit' type='large' top='468' left='349'>Create/Edit</button>
<led name='jump-toggle' top='474' left='349'/>

View File

@@ -2,20 +2,18 @@
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='okay' escbtn='cancel'>
<!-- OK button -->
<field name='who' top='26' left='186' width='64' height='16'/>
<field name='who' type='int' top='26' left='186' width='64' height='16'/>
<field name='key1' top='54' left='165' width='52' height='16' max-chars='4'/>
<field name='key2' top='54' left='285' width='52' height='16' max-chars='4'/>
<text top='6' left='350' width='160' height='48'>The in-game "Buy" button checks for these response keys, in order: purc, sale, heal, iden, trai, ench</text>
<text relative='pos-in pos' rel-anchor='prev' top='0' left='0' width='160' height='50'>The "Sell" button checks for sell.</text>
<field name='extra1' top='114' left='344' width='64' height='16'/>
<field name='extra2' top='137' left='344' width='64' height='16'/>
<field name='extra3' top='160' left='344' width='64' height='16'/>
<field name='extra4' top='183' left='344' width='64' height='16'/>
<field name='extra1' type='int' top='114' left='344' width='64' height='16'/>
<field name='extra2' type='int' top='137' left='344' width='64' height='16'/>
<field name='extra3' type='int' top='160' left='344' width='64' height='16'/>
<field name='extra4' type='int' top='183' left='344' width='64' height='16'/>
<field name='str1' top='223' left='72' width='430' height='80'/>
<field name='str2' top='328' left='72' width='434' height='80'/>
<button name='okay' type='regular' top='415' left='445'>OK</button>
<button name='cancel' type='regular' top='415' left='380'>Cancel</button>
<button name='back' type='large' top='415' left='49'>Go Back</button>
<button name='new' type='large' top='415' left='155'>Create New</button>
<text name='type' framed='true' top='79' left='135' width='160' height='14'/>
@@ -44,4 +42,8 @@
<button name='chooseC' type='regular' top='158' left='414'>Choose</button>
<button name='chooseB' type='regular' top='135' left='414'>Choose</button>
<button name='chooseA' type='regular' top='112' left='414'>Choose</button>
<!-- OK button -->
<button name='okay' type='regular' top='415' left='445'>OK</button>
<button name='cancel' type='regular' top='415' left='380'>Cancel</button>
</dialog>

View File

@@ -2,9 +2,6 @@
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='done' escbtn='cancel'>
<!--
TODO: Assign numeric types (type = 'int' or 'uint') to fields as appropriate
-->
<pict name='graphic' type='ter' num='0' top='8' left='8'/>
<text size='large' top='6' left='50' height='17' width='138'>Edit Terrain Type</text>
@@ -20,12 +17,12 @@
<field name='name' top='30' left='186' height='16' width='186'/>
<text top='63' left='9' height='14' width='120'>Terrain picture:</text>
<field name='pict' top='62' left='141' height='16' width='52' />
<field name='pict' type='uint' top='62' left='141' height='16' width='52' />
<button name='pickpict' type='large' top='59' left='205'>Pick Picture</button>
<button name='pickanim' type='large' top='59' left='319'>Animated</button>
<text top='63' left='430' width='60' height='14'>Map icon:</text>
<field name='map' top='62' left='495' width='80' height='16'/>
<field name='map' type='uint' top='62' left='495' width='80' height='16'/>
<pict name='seemap' top='86' left='465' type='map' num='0'/>
<button name='pickmap' type='regular' top='86' left='495'>Choose</button>
<text top='115' left='431' height='32' width='157'>(Enter -1 to scale down the large picture)</text>
@@ -55,19 +52,19 @@
</group>
<text top='194' left='8' height='14' width='91'>Shortcut key:</text>
<field name='key' top='193' left='109' height='16' width='52' />
<field name='key' top='193' left='109' height='16' width='52' max-chars='1' />
<text top='194' left='171' height='14' width='91'>Light radius:</text>
<field name='light' top='193' left='271' height='16' width='52' />
<field name='light' type='uint' top='193' left='271' height='16' width='52' />
<text top='193' left='333' height='14' width='128'>Transform to what?</text>
<field name='trans' top='193' left='467' height='16' width='52' />
<field name='trans' type='uint' top='193' left='467' height='16' width='52' />
<button name='picktrans' top='190' left='530' type='regular'>Choose</button>
<text top='217' left='8' height='14' width='91'>Ground type:</text>
<field name='ground' top='216' left='109' height='16' width='52' />
<field name='ground' type='uint' top='216' left='109' height='16' width='52' />
<text top='217' left='171' height='14' width='91'>Trim terrain:</text>
<field name='trimter' top='216' left='271' height='16' width='52' />
<field name='trimter' type='int' top='216' left='271' height='16' width='52' />
<text top='217' left='333' height='14' width='128'>Trim type:</text>
<field name='trim' top='216' left='467' height='16' width='52' />
<field name='trim' type='uint' top='216' left='467' height='16' width='52' />
<button name='picktrim' top='213' left='530' type='regular'>Choose</button>
<text size='large' top='238' left='8' height='14' width='175'>Special properties:</text>
@@ -99,21 +96,21 @@
</group>
<text top='254' left='467' height='14' width='100'>Combat Arena:</text>
<field name='arena' top='275' left='467' height='16' width='64'/>
<field name='arena' type='uint' top='275' left='467' height='16' width='64'/>
<button name='pickarena' type='regular' top='299' left='467'>Choose</button>
<button name='picktown' type='regular' top='299' left='532'>Custom</button>
<button name='object' top='344' left='467' type='large'>Object Detail</button>
<text top='385' left='9' height='14' width='91'>Extra values:</text>
<text name='flag1text' framed='true' top='385' left='109' height='14' width='209'>*flag1</text>
<field name='flag1' top='384' left='329' height='16' width='64' />
<field name='flag1' type='int' top='384' left='329' height='16' width='64' />
<button name='pickflag1' top='381' left='404' type='regular'>Choose</button>
<button name='editspec' top='381' left='404' type='large'>Create/Edit</button>
<text name='flag2text' framed='true' top='410' left='109' height='14' width='209'>*flag2</text>
<field name='flag2' top='409' left='329' height='16' width='64' />
<field name='flag2' type='int' top='409' left='329' height='16' width='64' />
<button name='pickflag2' top='406' left='404' type='regular'>Choose</button>
<text name='flag3text' framed='true' top='435' left='109' height='14' width='209'>*flag3</text>
<field name='flag3' top='434' left='329' height='16' width='64' />
<field name='flag3' type='int' top='434' left='329' height='16' width='64' />
<button name='pickflag3' top='431' left='404' type='regular'>Choose</button>
<button name='done' type='regular' top='455' left='517'>OK</button>

View File

@@ -12,23 +12,23 @@
<text name='exit-specials' relative='pos-in pos' rel-anchor='prev' top='0' left='-2' width='302' height='64' framed='true'/>
<text relative='pos-in' anchor='exit-specials' top='3' left='3' width='197' height='15'>Exit town specials:</text>
<button name='edit-onexit1' relative='pos-in pos' rel-anchor='prev' type='tiny' top='6' left='0' height='15' text-size='10'>Top</button>
<field name='onexit1' relative='pos-in' rel-anchor='prev' top='-4' left='75' width='67' height='16'/>
<field name='onexit1' type='int' relative='pos-in' rel-anchor='prev' top='-4' left='75' width='67' height='16'/>
<button relative='pos-in pos' anchor='edit-onexit1' name='edit-onexit2' type='tiny' top='8' left='0' height='15' text-size='10'>Left</button>
<field name='onexit2' relative='pos-in' rel-anchor='prev' top='-4' left='75' width='67' height='16'/>
<field name='onexit2' type='int' relative='pos-in' rel-anchor='prev' top='-4' left='75' width='67' height='16'/>
<button name='edit-onexit3' relative='pos pos-in' anchor='onexit1' type='tiny' top='4' left='8' height='15' text-size='10'>Bottom</button>
<field name='onexit3' relative='pos-in' rel-anchor='prev' top='-4' left='75' width='67' height='16'/>
<field name='onexit3' type='int' relative='pos-in' rel-anchor='prev' top='-4' left='75' width='67' height='16'/>
<button name='edit-onexit4' relative='pos-in pos' anchor='edit-onexit3' type='tiny' top='8' left='0' height='15' text-size='10'>Right</button>
<field name='onexit4' relative='pos-in' rel-anchor='prev' top='-4' left='75' width='67' height='16'/>
<field name='onexit4' type='int' relative='pos-in' rel-anchor='prev' top='-4' left='75' width='67' height='16'/>
<button name='exit-special-help' type='help' relative='neg-in pos-in' anchor='exit-specials' top='2' left='18'/>
<text name='specials' relative='pos-in pos' anchor='exit-specials' top='10' left='0' width='302' height='90' framed='true'/>
<text relative='pos-in' anchor='specials' top='3' left='3' width='202' height='15'>Town entry special node:</text>
<button name='edit-onenter' relative='pos-in pos' rel-anchor='prev' type='tiny' top='8' left='0' height='15' text-size='10'>Still alive</button>
<field name='onenter' relative='pos-in' rel-anchor='prev' top='-4' left='146' width='67' height='16'/>
<field name='onenter' type='int' relative='pos-in' rel-anchor='prev' top='-4' left='146' width='67' height='16'/>
<button name='edit-onenterdead' relative='pos-in pos' anchor='edit-onenter' type='tiny' top='8' left='0' height='15' text-size='10'>Been abandoned</button>
<field name='onenterdead' relative='pos-in' rel-anchor='prev' top='-4' left='146' width='67' height='16'/>
<field name='onenterdead' type='int' relative='pos-in' rel-anchor='prev' top='-4' left='146' width='67' height='16'/>
<button name='edit-onhostile' relative='pos-in pos' anchor='edit-onenterdead' type='tiny' top='8' left='0' height='15' text-size='10'>When Goes Hostile</button>
<field name='onhostile' relative='pos-in' rel-anchor='prev' top='-4' left='146' width='67' height='16'/>
<field name='onhostile' type='int' relative='pos-in' rel-anchor='prev' top='-4' left='146' width='67' height='16'/>
<button name='special-help' type='help' relative='neg-in pos-in' anchor='specials' top='2' left='18'/>
<text name='exits' relative='pos pos-in' anchor='exit-specials' top='0' left='10' width='185' height='164' framed='true'/>
@@ -36,25 +36,25 @@
<text name='exit-x' relative='pos-in pos' rel-anchor='prev' top='4' left='100' width='35' height='15'>X</text>
<text name='exit-y' relative='pos pos-in' rel-anchor='prev' top='0' left='12' width='35' height='15'>Y</text>
<button name='exit1' relative='pos-in pos' anchor='exit-x' type='tiny' top='4' left='-100' width='96' height='15' text-size='10'>Top</button>
<field name='exit1-x' relative='pos-in pos' anchor='exit-x' top='4' left='-8' width='39' height='16'/>
<field name='exit1-y' relative='pos-in pos' anchor='exit-y' top='4' left='-8' width='39' height='16'/>
<field name='exit1-x' type='int' relative='pos-in pos' anchor='exit-x' top='4' left='-8' width='39' height='16'/>
<field name='exit1-y' type='int' relative='pos-in pos' anchor='exit-y' top='4' left='-8' width='39' height='16'/>
<button name='exit2' relative='pos-in pos' anchor='exit1' type='tiny' top='9' left='0' width='96' height='15' text-size='10'>Left</button>
<field name='exit2-x' relative='pos-in pos' anchor='exit1-x' top='8' left='0' width='39' height='16'/>
<field name='exit2-y' relative='pos-in pos' anchor='exit1-y' top='8' left='0' width='39' height='16'/>
<field name='exit2-x' type='int' relative='pos-in pos' anchor='exit1-x' top='8' left='0' width='39' height='16'/>
<field name='exit2-y' type='int' relative='pos-in pos' anchor='exit1-y' top='8' left='0' width='39' height='16'/>
<button name='exit3' relative='pos-in pos' anchor='exit2' type='tiny' top='9' left='0' width='96' height='15' text-size='10'>Bottom</button>
<field name='exit3-x' relative='pos-in pos' anchor='exit2-x' top='8' left='0' width='39' height='16'/>
<field name='exit3-y' relative='pos-in pos' anchor='exit2-y' top='8' left='0' width='39' height='16'/>
<field name='exit3-x' type='int' relative='pos-in pos' anchor='exit2-x' top='8' left='0' width='39' height='16'/>
<field name='exit3-y' type='int' relative='pos-in pos' anchor='exit2-y' top='8' left='0' width='39' height='16'/>
<button name='exit4' relative='pos-in pos' anchor='exit3' type='tiny' top='9' left='0' width='96' height='15' text-size='10'>Right</button>
<field name='exit4-x' relative='pos-in pos' anchor='exit3-x' top='8' left='0' width='39' height='16'/>
<field name='exit4-y' relative='pos-in pos' anchor='exit3-y' top='8' left='0' width='39' height='16'/>
<field name='exit4-x' type='int' relative='pos-in pos' anchor='exit3-x' top='8' left='0' width='39' height='16'/>
<field name='exit4-y' type='int' relative='pos-in pos' anchor='exit3-y' top='8' left='0' width='39' height='16'/>
<button name='exit-help' type='help' relative='neg-in pos-in' anchor='exits' top='2' left='18'/>
<text name='bg' relative='pos pos-in' anchor='props' top='0' left='10' width='166' height='100' framed='true'/>
<text relative='pos-in' anchor='bg' top='3' left='3' width='100' height='15'>Backgrounds:</text>
<button name='pick-town' relative='pos-in pos' rel-anchor='prev' type='tiny' top='8' left='0' text-size='10'>Town:</button>
<field name='bg-town' relative='pos-in' rel-anchor='prev' top='-4' left='80' width='80' height='16'/>
<field name='bg-town' type='int' relative='pos-in' rel-anchor='prev' top='-4' left='80' width='80' height='16'/>
<button name='pick-fight' relative='pos-in pos' anchor='pick-town' type='tiny' top='15' left='0' text-size='10'>Combat:</button>
<field name='bg-fight' relative='pos-in' rel-anchor='prev' top='-4' left='80' width='80' height='16'/>
<field name='bg-fight' type='int' relative='pos-in' rel-anchor='prev' top='-4' left='80' width='80' height='16'/>
<button name='bg-help' type='help' relative='neg-in pos-in' anchor='bg' top='2' left='18'/>
<text name='props' relative='pos-in pos' anchor='specials' top='10' left='0' width='126' height='100' framed='true'/>

View File

@@ -11,17 +11,17 @@
<text top='58' left='50' width='130' height='14'>Town timing:</text>
<text top='78' left='59' width='242' height='14'>Day when town dies: (if -1, it doesn't)</text>
<field name='chop' top='77' left='327' width='43' height='16'/>
<field name='chop' type='int' top='77' left='327' width='43' height='16'/>
<text top='98' left='59' width='261' height='41'>Number of event which prevents town death (if -1 or 0, none) - see chapter in documentation on time for more details.</text>
<field name='key' top='101' left='327' width='43' height='16'/>
<field name='key' type='int' top='101' left='327' width='43' height='16'/>
<button name='choose-key' type='regular' relative='pos neg' rel-anchor='prev' top='4' left='4'>Choose</button>
<text top='216' left='50' width='234' height='42'>
Maximum number of monsters:
(When this many monsters are killed, the dungeon will be abandoned)
</text>
<field name='population' top='219' left='294' width='54' height='16'/>
<field name='population' type='uint' top='219' left='294' width='54' height='16'/>
<text name='population-hint' relative='pos neg' rel-anchor='prev' top='4' left='4' width='90'>
This town has {{num}} hostile creatures.
</text>
@@ -30,7 +30,7 @@
Town difficulty (0-10):
(Determines how fast wandering monsters appear, how nasty traps are, and how hard it is to unlock doors.)
</text>
<field name='difficulty' top='265' left='294' width='54' height='16'/>
<field name='difficulty' type='uint' top='265' left='294' width='54' height='16'/>
<text top='143' left='50' width='63' height='14'>Lighting:</text>
<group name='lighting'>

View File

@@ -2,22 +2,23 @@
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='okay' escbtn='cancel'>
<field name='time1' top='122' left='146' width='67' height='16'/>
<field name='time2' top='150' left='146' width='67' height='16'/>
<field name='time3' top='178' left='146' width='67' height='16'/>
<field name='time4' top='206' left='146' width='67' height='16'/>
<field name='time5' top='234' left='146' width='67' height='16'/>
<field name='time6' top='262' left='146' width='67' height='16'/>
<field name='time7' top='290' left='146' width='67' height='16'/>
<field name='time8' top='318' left='146' width='67' height='16'/>
<field name='spec1' top='122' left='270' width='39' height='16'/>
<field name='spec2' top='150' left='270' width='39' height='16'/>
<field name='spec3' top='178' left='270' width='39' height='16'/>
<field name='spec4' top='206' left='270' width='39' height='16'/>
<field name='spec5' top='234' left='270' width='39' height='16'/>
<field name='spec6' top='262' left='270' width='39' height='16'/>
<field name='spec7' top='290' left='270' width='39' height='16'/>
<field name='spec8' top='318' left='270' width='39' height='16'/>
<field name='time1' type='uint' top='122' left='146' width='67' height='16'/>
<field name='time2' type='uint' top='150' left='146' width='67' height='16'/>
<field name='time3' type='uint' top='178' left='146' width='67' height='16'/>
<field name='time4' type='uint' top='206' left='146' width='67' height='16'/>
<field name='time5' type='uint' top='234' left='146' width='67' height='16'/>
<field name='time6' type='uint' top='262' left='146' width='67' height='16'/>
<field name='time7' type='uint' top='290' left='146' width='67' height='16'/>
<field name='time8' type='uint' top='318' left='146' width='67' height='16'/>
<!-- Unsigned because you don't use -1 for none, you just set the interval to 0: -->
<field name='spec1' type='uint' top='122' left='270' width='39' height='16'/>
<field name='spec2' type='uint' top='150' left='270' width='39' height='16'/>
<field name='spec3' type='uint' top='178' left='270' width='39' height='16'/>
<field name='spec4' type='uint' top='206' left='270' width='39' height='16'/>
<field name='spec5' type='uint' top='234' left='270' width='39' height='16'/>
<field name='spec6' type='uint' top='262' left='270' width='39' height='16'/>
<field name='spec7' type='uint' top='290' left='270' width='39' height='16'/>
<field name='spec8' type='uint' top='318' left='270' width='39' height='16'/>
<button name='okay' type='regular' top='343' left='411'>OK</button>
<button name='cancel' type='regular' relative='neg pos-in' rel-anchor='prev' top='0' left='71'>Cancel</button>
<pict type='dlog' num='16' top='8' left='8'/>

View File

@@ -2,29 +2,30 @@
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='okay' escbtn='cancel'>
<field name='group1-monst1' top='137' left='174' width='39' height='16'/>
<field name='group1-monst2' top='165' left='174' width='39' height='16'/>
<field name='group1-monst3' top='193' left='174' width='39' height='16'/>
<field name='group1-monst4' top='221' left='174' width='39' height='16'/>
<field name='group2-monst1' top='137' left='239' width='39' height='16'/>
<field name='group2-monst2' top='165' left='239' width='39' height='16'/>
<field name='group2-monst3' top='193' left='239' width='39' height='16'/>
<field name='group2-monst4' top='221' left='239' width='39' height='16'/>
<field name='group3-monst1' top='137' left='304' width='39' height='16'/>
<field name='group3-monst2' top='165' left='304' width='39' height='16'/>
<field name='group3-monst3' top='193' left='304' width='39' height='16'/>
<field name='group3-monst4' top='221' left='304' width='39' height='16'/>
<field name='group4-monst1' top='137' left='369' width='39' height='16'/>
<field name='group4-monst2' top='165' left='369' width='39' height='16'/>
<field name='group4-monst3' top='193' left='369' width='39' height='16'/>
<field name='group4-monst4' top='221' left='369' width='39' height='16'/>
<button name='okay' type='regular' top='273' left='436'>OK</button>
<field name='group1-monst1' type='uint' top='137' left='174' width='39' height='16'/><button name='pick1-monst1' type='tiny' relative='neg pos-in' rel-anchor='prev' top='2' left='20'></button>
<field name='group1-monst2' type='uint' top='165' left='174' width='39' height='16'/><button name='pick1-monst2' type='tiny' relative='neg pos-in' rel-anchor='prev' top='2' left='20'></button>
<field name='group1-monst3' type='uint' top='193' left='174' width='39' height='16'/><button name='pick1-monst3' type='tiny' relative='neg pos-in' rel-anchor='prev' top='2' left='20'></button>
<field name='group1-monst4' type='uint' top='221' left='174' width='39' height='16'/><button name='pick1-monst4' type='tiny' relative='neg pos-in' rel-anchor='prev' top='2' left='20'></button>
<field name='group2-monst1' type='uint' top='137' left='239' width='39' height='16'/><button name='pick2-monst1' type='tiny' relative='neg pos-in' rel-anchor='prev' top='2' left='20'></button>
<field name='group2-monst2' type='uint' top='165' left='239' width='39' height='16'/><button name='pick2-monst2' type='tiny' relative='neg pos-in' rel-anchor='prev' top='2' left='20'></button>
<field name='group2-monst3' type='uint' top='193' left='239' width='39' height='16'/><button name='pick2-monst3' type='tiny' relative='neg pos-in' rel-anchor='prev' top='2' left='20'></button>
<field name='group2-monst4' type='uint' top='221' left='239' width='39' height='16'/><button name='pick2-monst4' type='tiny' relative='neg pos-in' rel-anchor='prev' top='2' left='20'></button>
<field name='group3-monst1' type='uint' top='137' left='304' width='39' height='16'/><button name='pick3-monst1' type='tiny' relative='neg pos-in' rel-anchor='prev' top='2' left='20'></button>
<field name='group3-monst2' type='uint' top='165' left='304' width='39' height='16'/><button name='pick3-monst2' type='tiny' relative='neg pos-in' rel-anchor='prev' top='2' left='20'></button>
<field name='group3-monst3' type='uint' top='193' left='304' width='39' height='16'/><button name='pick3-monst3' type='tiny' relative='neg pos-in' rel-anchor='prev' top='2' left='20'></button>
<field name='group3-monst4' type='uint' top='221' left='304' width='39' height='16'/><button name='pick3-monst4' type='tiny' relative='neg pos-in' rel-anchor='prev' top='2' left='20'></button>
<field name='group4-monst1' type='uint' top='137' left='369' width='39' height='16'/><button name='pick4-monst1' type='tiny' relative='neg pos-in' rel-anchor='prev' top='2' left='20'></button>
<field name='group4-monst2' type='uint' top='165' left='369' width='39' height='16'/><button name='pick4-monst2' type='tiny' relative='neg pos-in' rel-anchor='prev' top='2' left='20'></button>
<field name='group4-monst3' type='uint' top='193' left='369' width='39' height='16'/><button name='pick4-monst3' type='tiny' relative='neg pos-in' rel-anchor='prev' top='2' left='20'></button>
<field name='group4-monst4' type='uint' top='221' left='369' width='39' height='16'/><button name='pick4-monst4' type='tiny' relative='neg pos-in' rel-anchor='prev' top='2' left='20'></button>
<button name='okay' type='regular' top='283' left='436'>OK</button>
<button name='cancel' type='regular' relative='neg pos-in' rel-anchor='prev' top='0' left='71'>Cancel</button>
<text top='6' left='50' width='256' height='17'>Town wandering monsters</text>
<text top='25' left='50' width='439' height='40'>
Wandering monsters in towns appear in groups of up to 5.
Enter the numbers of the wandering monsters in each group type,
or press the Choose button to select the appearing monsters from a list.
or press the small button next to each field to choose the appearing
monsters from a list.
</text>
<text top='68' left='50' width='437' height='40'>
A group of wandering monsters contains one each of the first three monsters, and 1 or 2 of the fourth.
@@ -35,12 +36,14 @@
<text top='115' left='231' width='58' height='14'>Group 2</text>
<text top='115' left='294' width='58' height='14'>Group 3</text>
<text top='115' left='357' width='58' height='14'>Group 4</text>
<button name='choose1' type='regular' top='243' left='162'>Choose</button>
<button name='choose2' type='regular' top='243' left='227'>Choose</button>
<button name='choose3' type='regular' top='243' left='292'>Choose</button>
<button name='choose4' type='regular' top='243' left='357'>Choose</button>
<text top='138' left='8' width='150' height='14'>Monster 1 (1 appears)</text>
<text top='166' left='8' width='150' height='14'>Monster 2 (1 appears)</text>
<text top='194' left='8' width='150' height='14'>Monster 3 (1 appears)</text>
<text top='222' left='8' width='150' height='14'>Monster 4 (1-2 appears)</text>
<text top='250' left='8' width='150' height='30'>Locations<br/>(Any group can appear at any location)</text>
<text name='loc1' top='258' left='174' width='39' height='16'/><button name='pick-loc1' type='tiny' relative='neg pos-in' rel-anchor='prev' top='2' left='20'></button>
<text name='loc2' top='258' left='239' width='39' height='16'/><button name='pick-loc2' type='tiny' relative='neg pos-in' rel-anchor='prev' top='2' left='20'></button>
<text name='loc3' top='258' left='304' width='39' height='16'/><button name='pick-loc3' type='tiny' relative='neg pos-in' rel-anchor='prev' top='2' left='20'></button>
<text name='loc4' top='258' left='369' width='39' height='16'/><button name='pick-loc4' type='tiny' relative='neg pos-in' rel-anchor='prev' top='2' left='20'></button>
</dialog>

View File

@@ -2,14 +2,11 @@
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='okay' escbtn='cancel'>
<!--
TODO: Assign numeric types (type = 'int' or 'uint') to fields as appropriate
-->
<field name='extra1' top='126' left='221' width='67' height='16'/>
<field name='extra2' top='153' left='221' width='67' height='16'/>
<field name='death' top='298' left='285' width='67' height='16'/>
<field name='sdfy' top='362' left='262' width='39' height='16'/>
<field name='sdfx' top='362' left='310' width='39' height='16'/>
<field name='extra1' type='int' top='126' left='221' width='67' height='16'/>
<field name='extra2' type='int' top='153' left='221' width='67' height='16'/>
<field name='death' type='int' top='298' left='285' width='67' height='16'/>
<field name='sdfy' type='int' top='362' left='262' width='39' height='16'/>
<field name='sdfx' type='int' top='362' left='310' width='39' height='16'/>
<text size='large' top='6' left='50' width='256' height='17'>Townsperson/monster advanced</text>
<text top='28' left='62' width='97' height='15'>Creature type:</text>
<text name='type' top='28' left='162' width='195' height='15'/>
@@ -25,7 +22,7 @@
Number of town special node to call before talking to creature:
(-1 for none)
</text>
<field name='hail' top='326' left='285' width='67' height='16'/>
<field name='hail' type='int' top='326' left='285' width='67' height='16'/>
<button name='edithail' type='large' top='322' left='360'>Create/Edit</button>
<text top='350' left='25' width='230' height='40'>
Stuff done flag creature's life is linked to:

View File

@@ -1,8 +1,8 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='okay'>
<field name='talk' top='189' left='149' width='67' height='16'/>
<dialog defbtn='okay' escbtn='cancel'>
<field name='talk' type='int' top='189' left='149' width='67' height='16'/>
<button name='talk-edit' type='regular' top='186' left='228'>Choose</button>
<text name='picnum' top='189' left='375' width='40' height='16'/>
<text size='large' top='71' left='51' width='115' height='15'>Creature type:</text>
@@ -25,13 +25,9 @@
<led name='mob1' top='133' left='224'>No</led>
<led name='mob2' top='133' left='282'>Yes</led>
</group>
<button name='okay' type='regular' top='224' left='471'>OK</button>
<button name='cancel' type='regular' top='224' left='405'>Cancel</button>
<pict type='dlog' num='16' top='8' left='8'/>
<text top='7' left='313' width='126' height='15'>Creature number:</text>
<text name='num' top='7' left='450' width='50' height='15'/>
<button name='more' type='large' top='224' left='51'>Advanced</button>
<button name='del' type='regular' top='224' left='155'>Delete</button>
<text top='24' left='50' width='476' height='40'>
Enter the information for this monster/townsperson.
You only need to worry about the talking section if this is not a hostile monster.
@@ -39,4 +35,13 @@
</text>
<text size='large' top='160' left='51' width='256' height='17'>Talking to this creature:</text>
<text top='205' left='295' width='101' height='26'>Leave at -1 for no pic.</text>
<text top='224' left='51' width='70' height='14'>Location:</text>
<text name='loc' top='224' left='122' width='90' height='14'/>
<button name='pick-loc' type='regular' relative='pos neg' rel-anchor='prev' top='4' left='5'>Move</button>
<button name='more' type='large' top='249' left='51'>Advanced</button>
<button name='del' type='regular' top='249' left='155'>Delete</button>
<button name='cancel' type='regular' top='249' left='405'>Cancel</button>
<button name='okay' type='regular' top='249' left='471'>OK</button>
</dialog>

View File

@@ -5,13 +5,14 @@
<text name='title' size='large' rel-anchor='prev' relative='pos pos-in' top='-2' left='6' width='256' height='17'>Edit Vehicle</text>
<text name='num-lbl' rel-anchor='prev' relative='pos-in pos' top='2' left='0' width='97' height='14'>Number</text>
<field name='num' rel-anchor='prev' relative='pos pos-in' top='0' left='5' width='46' height='14'/>
<text name='num' rel-anchor='prev' relative='pos pos-in' top='0' left='5' width='46' height='16' framed='true'/>
<text name='area-lbl' anchor='num-lbl' relative='pos-in pos' top='11' left='0' width='97' height='14'>Starting Area</text>
<text name='area' rel-anchor='prev' relative='pos pos-in' top='0' left='5' width='100' height='16' framed='true'/>
<text name='loc-lbl' anchor='area-lbl' relative='pos-in pos' top='11' left='0' width='97' height='14'>Location</text>
<text name='loc' rel-anchor='prev' relative='pos pos-in' top='0' left='5' width='40' height='16'/>
<button name='pick-loc' rel-anchor='prev' relative='pos neg' type='regular' top='4' left='5'>Move</button>
<text name='name-lbl' anchor='loc-lbl' relative='pos-in pos' top='11' left='0' width='97' height='14'>Name</text>
<field name='name' rel-anchor='prev' relative='pos pos-in' top='0' left='5' width='100' height='14'/>

View File

@@ -4,6 +4,8 @@
<dialog defbtn='done' escbtn='done'>
<button name='done' type='done' top='408' left='337'/>
<pict type='dlog' num='2' top='10' left='10'/>
<button name='gold' type='small' def-key='shift 4' relative='pos-in pos' rel-anchor='prev' top='4' left='0'><key/></button>
<text name='gold-label' relative='pos pos-in' rel-anchor='prev' top='0' left='2' width='38'>Get all gold</text>
<button name='pc1' type='small' def-key='1' top='354' left='89'><key/></button>
<button name='pc2' type='small' def-key='2' top='354' left='174'><key/></button>
<button name='pc3' type='small' def-key='3' top='354' left='259'><key/></button>

View File

@@ -0,0 +1,8 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='okay' escbtn='okay'>
<button name='okay' type='regular' top='37' left='256'>OK</button>
<pict type='dlog' num='16' top='6' left='6'/>
<text top='6' left='49' width='272' height='28'>No random items were added. Double-check your Item Placement Shortcuts in the Scenario menu.</text>
</dialog>

View File

@@ -0,0 +1,8 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='okay' escbtn='okay'>
<button name='okay' type='regular' top='37' left='256'>OK</button>
<pict type='dlog' num='16' top='6' left='6'/>
<text top='6' left='49' width='272' height='28'>Nothing changed. No items in this town were marked as property.</text>
</dialog>

View File

@@ -0,0 +1,8 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='okay' escbtn='okay'>
<button name='okay' type='regular' top='37' left='256'>OK</button>
<pict type='dlog' num='16' top='6' left='6'/>
<text top='6' left='49' width='272' height='28'>There are no items in this town.</text>
</dialog>

View File

@@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='done' escbtn='done'>
<dialog defbtn='done' escbtn='cancel'>
<!--
TODO: Add width attributes to the LEDs
-->
@@ -68,9 +68,10 @@
<led name='spell60' state='off' top='248' left='268'/>
<led name='spell61' state='off' top='260' left='268'/>
<led name='spell62' state='off' top='272' left='268'/>
<button name='cancel' type='regular' top='310' left='358'>Cancel</button>
<button name='done' type='done' top='310' left='422'/>
<button name='left' type='left' def-key='left' top='310' left='12'/>
<button name='right' type='right' def-key='right' top='309' left='79'/>
<text name='who' size='large' top='15' left='53' width='83' height='16'>Spells For:</text>
<text framed='true' top='15' left='146' width='186' height='16'/>
<button name='right' type='right' def-key='right' top='310' left='79'/>
<text name='title' size='large' top='15' left='53' width='83' height='16'>{{type}} Spells For:</text>
<text name='who' framed='true' top='15' left='166' width='186' height='16'/>
</dialog>

View File

@@ -1,10 +1,10 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<!--TODO Need a cancel button. In other contexts (like preferences), Escape would discard changes in a submenu.-->
<dialog defbtn='done'>
<dialog defbtn='done' escbtn='cancel'>
<text size='large' top='9' left='55' width='181' height='16'>Special Characteristics:</text>
<pict type='dlog' num='7' top='6' left='6'/>
<button name='cancel' type='regular' top='349' left='350'>Cancel</button>
<button name='done' type='done' top='349' left='423'/>
<text size='large' top='30' left='55' width='65' height='18'>Species:</text>
<text name='xp' framed='true' top='352' left='254' width='50' height='16'/>

View File

@@ -46,7 +46,40 @@
<text outline='double' name='start3' top='205' left='59' width='342' height='84'/>
</page>
</stack>
<button name='prev' type='left' def-key='left' top='294' left='62'/>
<button name='next' type='right' def-key='right' top='294' left='125'/>
<button name='cancel' type='regular' top='294' left='337'>Cancel</button>
<button name='core' def-key='0' type='tiny' top='294' left='5'>Core</button>
<text name='custom' relative='pos neg' size='large' rel-anchor='prev' left='5' top='2'>Custom:</text>
<button name='a' def-key='a' type='tiny' relative='pos pos-in' rel-anchor='prev' top='2' left='3'>A</button>
<button name='b' def-key='b' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>B</button>
<button name='c' def-key='c' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>C</button>
<button name='d' def-key='d' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>D</button>
<button name='e' def-key='e' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>E</button>
<button name='f' def-key='f' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>F</button>
<button name='g' def-key='g' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>G</button>
<button name='h' def-key='h' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>H</button>
<button name='i' def-key='i' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>I</button>
<button name='j' def-key='j' type='tiny' relative='pos-in pos' anchor='a' top='2' left='0'>J</button>
<button name='k' def-key='k' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>K</button>
<button name='l' def-key='l' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>L</button>
<button name='m' def-key='m' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>M</button>
<button name='n' def-key='n' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>N</button>
<button name='o' def-key='o' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>O</button>
<button name='p' def-key='p' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>P</button>
<button name='q' def-key='q' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>Q</button>
<button name='r' def-key='r' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>R</button>
<button name='s' def-key='s' type='tiny' relative='pos-in pos' anchor='j' top='2' left='0'>S</button>
<button name='t' def-key='t' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>T</button>
<button name='u' def-key='u' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>U</button>
<button name='v' def-key='v' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>V</button>
<button name='w' def-key='w' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>W</button>
<button name='x' def-key='x' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>X</button>
<button name='y' def-key='y' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>Y</button>
<button name='z' def-key='z' type='tiny' relative='pos pos-in' rel-anchor='prev' top='0' left='4'>Z</button>
<button name='#' def-key='shift 3' type='tiny' relative='neg pos-in' anchor='j' top='0' left='32'>#</button>
<button name='cancel' type='regular' top='330' left='5'>Cancel</button>
<button name='prev' type='left' def-key='left' relative='pos pos-in' rel-anchor='prev' top='0' left='14'/>
<button name='next' type='right' def-key='right' relative='pos pos-in' rel-anchor='prev' top='0' left='0'/>
<button name='folder' type='large' relative='pos pos-in' rel-anchor='prev' top='0' left='14'>Show Folder</button>
<button name='refresh' type='regular' relative='pos pos-in' rel-anchor='prev' top='0' left='7'>Refresh</button>
</dialog>

View File

@@ -5,7 +5,7 @@
<text size='large' relative='pos pos-in' rel-anchor='prev' top='0' left='4' width='218' height='16'>
BoE Scenario Editor Preferences
</text>
<led name='nosound' relative='pos-in pos' rel-anchor='prev' top='10' left='0'>No Sounds</led>
<led name='nosound' relative='pos-in pos' rel-anchor='prev' top='10' left='0'>No UI Sounds</led>
<text name='scale-head' size='large' relative='neg pos' rel-anchor='prev' top='17' left='10' width='260' height='17'>Scale UI:</text>
<group name='scaleui'>
<led name='1' relative='pos-in pos' anchor='scale-head' top='4' left='15'>1</led>

View File

@@ -7,15 +7,13 @@
<button name='okay' type='regular' top='181' left='278'>OK</button>
<pict type='dlog' num='16' top='8' left='8'/>
<text size='large' top='6' left='50' width='175' height='17'>Importing a town</text>
<text name='prompt' top='143' left='50' width='162' height='27'>What town do you wish to import?</text>
<text name='prompt' top='143' left='50' width='162' height='27'>What town do you wish to import? (0 - {{max-num}})</text>
<text top='27' left='50' width='301' height='54'>
Enter a town number and hit OK, and you will be asked to select a scenario file.
The town with that number in the selected scenario will then be loaded in over the current town.
The town with this number in the selected scenario be imported.
</text>
<button name='cancel' type='regular' top='181' left='212'>Cancel</button>
<text top='83' left='50' width='301' height='54'>
Warning: This will write over the town currently in memory.
Also, the town you select must be the same size (large/medium/small) as the town currently in memory.
Warning: This will overwrite over the town currently in memory.
</text>
<button name='choose' type='regular' top='146' left='281'>Choose</button>
</dialog>

View File

@@ -6,7 +6,7 @@
<button name='okay' type='regular' top='136' left='229'>OK</button>
<button name='cancel' type='regular' top='136' left='164'>Cancel</button>
<pict type='dlog' num='16' top='8' left='8'/>
<text size='large' top='6' left='50' width='188' height='16'>Edit Which Outdoor Section?</text>
<text name='prompt' size='large' top='6' left='50' width='188' height='16'>{{Action}} Which Outdoor Section?</text>
<text top='25' left='68' width='111' height='14'>World width:</text>
<text name='width' top='25' left='186' width='37'/>
<text name='x' framed='true' top='63' left='142' width='75' height='16'/>

View File

@@ -9,7 +9,7 @@
<pict type='dlog' num='16' top='8' left='8'/>
<text size='large' top='6' left='50' width='167' height='17'>Pick Town to Edit:</text>
<text name='prompt' top='25' left='50' width='185' height='28'>
Enter the number of the town you want to edit next:
Enter the number of the town you want to edit next: (0 - {{max-num}})
</text>
<button name='choose' type='regular' top='56' left='169'>Choose</button>
</dialog>

View File

@@ -2,14 +2,16 @@
<!-- NOTE: This file should be updated to use relative positioning the next time it changes. -->
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
<dialog defbtn='okay' escbtn='cancel'>
<!-- OK button -->
<field type='uint' name='town' top='71' left='119' width='62' height='16'/>
<button name='okay' type='regular' top='95' left='206'>OK</button>
<button name='cancel' type='regular' top='95' left='140'>Cancel</button>
<pict type='dlog' num='16' top='8' left='8'/>
<text size='large' top='6' left='50' width='207' height='17'>Entrance to what town?</text>
<text name='prompt' top='25' left='50' width='213' height='42'>
What town do you want the party to end up in when they walk into this space?
What town do you want the party to end up in when they walk into this space? (0 - {{max-num}} for existing, {{next-num}} for new.)
</text>
<field type='uint' name='town' top='71' left='119' width='62' height='16'/>
<button name='choose' type='regular' top='69' left='186'>Choose</button>
<button name='cancel' type='regular' top='95' left='5'>Cancel</button>
<button name='edit' type='large' top='95' left='100'>Create/Edit</button>
<button name='okay' type='regular' top='95' left='206'>OK</button>
</dialog>

View File

@@ -9,11 +9,11 @@
You can very easily mess up your game by doing this, so be sure you know what you're doing first.
</text>
<text top='105' left='8' width='100' height='16'>SDF Part A:</text>
<field name='x' top='103' left='110' width='80' height='16'/>
<field name='x' type='uint' top='103' left='110' width='80' height='16'/>
<text top='125' left='8' width='100' height='16'>SDF Part B:</text>
<field name='y' top='123' left='110' width='80' height='16'/>
<field name='y' type='uint' top='123' left='110' width='80' height='16'/>
<text top='145' left='8' width='100' height='16'>Value:</text>
<field name='val' top='143' left='110' width='80' height='16'/>
<field name='val' type='int' top='143' left='110' width='80' height='16'/>
<text name='feedback' top='165' left='8' width='230' height='16'/>
<button name='exit' type='regular' top='185' left='122'>Exit</button>
<button name='set' type='regular' top='185' left='187'>Set</button>

View File

@@ -5,8 +5,7 @@
<button name='no' type='regular' def-key='n' top='39' left='178'>No</button>
<button name='yes' type='regular' def-key='y' top='39' left='244'>Yes</button>
<pict type='dlog' num='11' top='9' left='9'/>
<text top='4' left='51' width='251' height='32'>
Shift to this town's entrance in this outdoor section?
<text name='prompt' top='4' left='51' width='251' height='32'>
Shift to this town's entrance in outdoor section {sec} at {loc} ({loc_str})?
</text>
<text name='out-sec' relative='pos-in pos' rel-anchor='prev' top='4' left='0'></text>
</dialog>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -39,7 +39,7 @@
2,111,2,2,2,3,2,58,51,59,61,54,31,32,22,22,22,35,25,49,39,4,3,3,43,42,42,47,36,49,38,38,39,2,87,2,44,30,26,36,36,30,23,23,22,22,22,22
4,2,3,111,3,111,3,2,2,57,50,61,54,30,35,240@5,32,26,49,39,3,2,2,2,44,36,37,37,37,40,2,3,2,3,2,4,44,30,34,27,36,31,32,23,23,22,22,22
4,3,2,3,2,3,111,3,2,58,59,50,53,31,25,36,31,25,40,3,4,2,3,2,45,46,36,36,37,48,41,2,2,2,2,2,44,30,22,26,36,36,30,23,23,22,22,22
2,2,4,111,2,2,111,3,2:22,2,57,50,53,45,38,38,38,38,39,2,3,4,3,2,2,45*1,38,38,46,36,40,3,2,2,2,2,44,31,32,34,27,36,30,23,23,23,22,22
2,2,4,111,2,2,111,3,2,2,57,50,53,45,38,38,38,38,39,2,3,4,3,2,2,45*1,38,38,46,36,40,3,2,2,2,2,44,31,32,34,27,36,30,23,23,23,22,22
2,2,3,2,2,2,2,111,111,2,57,50,53,3,111,2,4,113,2,2,4,2,4,2,87,2,2,3,45,46,48,41,2,2,3,2,45,46,31,32,26,36,30,23,23,23,22,22
111,3,3,2,111,111,2,111,2,2,57,50,53,2&9:1,111,112,4,2,2,2,3,2,3,43,41,2,2,2,87,44,37,40,2,2,2,4,3,45,46,30:17,26:17,36,30,22,23,23,22,22
3,2,110,110:20,110,4,111,111,111,3,57,50,53,3,112,3,3,2,111,112,2,2,2,44,40,2,2,2,2,45,38,39,2,2,2,2,3,2,44,30,34,28,33,22,23,22,22,22

View File

@@ -135,7 +135,7 @@
<personality id="19">
<title>Lillian</title>
<look>
<![CDATA[You meet a soldier of the Empire army. She is in the middle of some exercises. You watch her smooth, sharp movements with admiration. After a while, she turns too you.]]>
<![CDATA[You meet a soldier of the Empire army. She is in the middle of some exercises. You watch her smooth, sharp movements with admiration. After a while, she turns to you.]]>
</look>
<name>
<![CDATA["I am Captain Lillian, head of the Sweetgrove guard."]]>

View File

@@ -353,7 +353,7 @@ Number of town to place party in
Skip dialog and always change level?
Trigger Limitations
Special to Call in New Town
A dialog comes up text you supply (saying, perhaps, they've found a stairway). The dialog buttons are Climb and Leave. If the Leave button is pressed, the Jump To special is used, and the party is not allowed to enter the space. If the Climb button is pushed, the party is moved to another town.
A dialog comes up with text you supply (saying, perhaps, they've found a stairway). The dialog buttons are Climb and Leave. If the Leave button is pressed, the Jump To special is used, and the party is not allowed to enter the space. If the Climb button is pushed, the party is moved to another town.
--------------------
Relocate Outdoors
Unused

View File

@@ -43,8 +43,11 @@ const short cDialog::BG_DARK = 5, cDialog::BG_LIGHT = 16;
short cDialog::defaultBackground = cDialog::BG_DARK;
cDialog* cDialog::topWindow = nullptr;
void (*cDialog::redraw_everything)() = nullptr;
std::function<void(const cDialog&)> cDialog::onOpen;
std::function<void(const cDialog&)> cDialog::onClose;
std::function<void(sf::RenderWindow& win)> cDialog::onLostFocus;
std::function<void(sf::RenderWindow& win)> cDialog::onGainedFocus;
std::function<void(sf::RenderWindow& win)> cDialog::onHandleEvents;
extern std::map<std::string,sf::Color> colour_map;
@@ -445,6 +448,12 @@ void cDialog::recalcRect(){
winRect.right *= get_ui_scale();
winRect.bottom *= get_ui_scale();
// Uncomment if you need to measure any dialogs.
/*
LOG_VALUE(fname);
LOG_VALUE(winRect.right);
LOG_VALUE(winRect.bottom);
//*/
}
bool cDialog::initCalled = false;
@@ -495,7 +504,7 @@ bool cDialog::sendInput(cKey key) {
void cDialog::run(std::function<void(cDialog&)> onopen){
cPict::resetAnim();
cDialog* formerTop = topWindow;
// TODO: The introduction of the static topWindow means I may be able to use this instead of parent->win; do I still need parent?
sf::RenderWindow* parentWin = &(parent ? parent->win : mainPtr());
auto parentPos = parentWin->getPosition();
auto parentSz = parentWin->getSize();
@@ -535,10 +544,16 @@ void cDialog::run(std::function<void(cDialog&)> onopen){
// but it does prevent editing other dialogs, and it also keeps this window on top
// even when it loses focus.
ModalSession dlog(win, *parentWin);
if(onopen) onopen(*this);
animTimer.restart();
has_focus = true;
topWindow = this;
// Run the static onOpen event first
if(cDialog::onOpen) cDialog::onOpen(*this);
// Run this dialog's onOpen event
if(onopen) onopen(*this);
handle_events();
win.setVisible(false);
@@ -547,6 +562,7 @@ void cDialog::run(std::function<void(cDialog&)> onopen){
set_cursor(former_curs);
topWindow = formerTop;
stackWindowsCorrectly();
if(cDialog::onClose) cDialog::onClose(*this);
}
void cDialog::runWithHelp(short help1, short help2, bool help_forced) {
@@ -600,6 +616,7 @@ void cDialog::handle_events() {
std::string line = std::to_string(next_action_line());
throw std::string { "Replaying a dialog, have the wrong replay action: " + type + " on line " + line};
}else{
if(has_focus && onHandleEvents) onHandleEvents(win);
while(pollEvent(win, currentEvent)){
handle_one_event(currentEvent, fps_limiter);
}
@@ -640,89 +657,99 @@ void cDialog::stackWindowsCorrectly() {
}
}
// This method handles one event received by the dialog.
void cDialog::handle_one_event(const sf::Event& currentEvent, cFramerateLimiter& fps_limiter) {
cKey translate_sfml_key(sf::Event::KeyEvent key_event) {
using Key = sf::Keyboard::Key;
cKey key;
switch(key_event.code){
case Key::Up:
key.spec = true;
key.k = key_up;
break;
case Key::Right:
key.spec = true;
key.k = key_right;
break;
case Key::Left:
key.spec = true;
key.k = key_left;
break;
case Key::Down:
key.spec = true;
key.k = key_down;
break;
case Key::Escape:
key.spec = true;
key.k = key_esc;
break;
case Key::Return: // TODO: Also enter (keypad)
key.spec = true;
key.k = key_enter;
break;
case Key::BackSpace:
key.spec = true;
key.k = key_bsp;
break;
case Key::Delete:
key.spec = true;
key.k = key_del;
break;
case Key::Tab:
key.spec = true;
key.k = key_tab;
break;
case Key::Insert:
key.spec = true;
key.k = key_insert;
break;
case Key::F1:
key.spec = true;
key.k = key_help;
break;
case Key::Home:
key.spec = true;
key.k = key_home;
break;
case Key::End:
key.spec = true;
key.k = key_end;
break;
case Key::PageUp:
key.spec = true;
key.k = key_pgup;
break;
case Key::PageDown:
key.spec = true;
key.k = key_pgdn;
break;
default:
key.spec = false;
key.c = keyToChar(key_event.code, false);
break;
}
key.mod = mod_none;
if(key_event.*systemKey)
key.mod += mod_ctrl;
if(key_event.shift) key.mod += mod_shift;
if(key_event.alt) key.mod += mod_alt;
return key;
}
// This method handles one event received by the dialog.
void cDialog::handle_one_event(const sf::Event& currentEvent, cFramerateLimiter& fps_limiter) {
// HACK: This needs to be stored between consecutive invocations of this function
static cKey pendingKey = {true};
std::string itemHit = "";
location where;
cKey key;
switch(currentEvent.type) {
case sf::Event::KeyPressed:
switch(currentEvent.key.code){
case Key::Up:
key.spec = true;
key.k = key_up;
break;
case Key::Right:
key.spec = true;
key.k = key_right;
break;
case Key::Left:
key.spec = true;
key.k = key_left;
break;
case Key::Down:
key.spec = true;
key.k = key_down;
break;
case Key::Escape:
key.spec = true;
key.k = key_esc;
break;
case Key::Return: // TODO: Also enter (keypad)
key.spec = true;
key.k = key_enter;
break;
case Key::BackSpace:
key.spec = true;
key.k = key_bsp;
break;
case Key::Delete:
key.spec = true;
key.k = key_del;
break;
case Key::Tab:
key.spec = true;
key.k = key_tab;
break;
case Key::Insert:
key.spec = true;
key.k = key_insert;
break;
case Key::F1:
key.spec = true;
key.k = key_help;
break;
case Key::Home:
key.spec = true;
key.k = key_home;
break;
case Key::End:
key.spec = true;
key.k = key_end;
break;
case Key::PageUp:
key.spec = true;
key.k = key_pgup;
break;
case Key::PageDown:
key.spec = true;
key.k = key_pgdn;
break;
default:
key.spec = false;
key.c = keyToChar(currentEvent.key.code, false);
break;
}
key.mod = mod_none;
if(currentEvent.key.*systemKey)
key.mod += mod_ctrl;
if(currentEvent.key.shift) key.mod += mod_shift;
if(currentEvent.key.alt) key.mod += mod_alt;
key = translate_sfml_key(currentEvent.key);
// Handles button hotkeys. Note that the event still falls through to text fields.
// It probably shouldn't, because right now we have to be careful not to put a button
// on the same dialog as a field if its hotkey is a typable character.
process_keystroke(key);
// Now check for focused fields.
if(currentFocus.empty()) break;
@@ -768,6 +795,8 @@ void cDialog::handle_one_event(const sf::Event& currentEvent, cFramerateLimiter&
}
BOOST_FALLTHROUGH;
case sf::Event::MouseMoved:{
int x = currentEvent.mouseMove.x / get_ui_scale();
int y = currentEvent.mouseMove.y / get_ui_scale();
// Did the window move, potentially dirtying the canvas below it?
if(check_window_moved(win, winLastX, winLastY))
if (redraw_everything != NULL)
@@ -775,7 +804,7 @@ void cDialog::handle_one_event(const sf::Event& currentEvent, cFramerateLimiter&
bool inField = false;
for(auto& ctrl : controls) {
if(ctrl.second->getType() == CTRL_FIELD && ctrl.second->getBounds().contains(currentEvent.mouseMove.x, currentEvent.mouseMove.y)) {
if(ctrl.second->getType() == CTRL_FIELD && ctrl.second->getBounds().contains(x, y)) {
set_cursor(text_curs);
inField = true;
break;

View File

@@ -13,6 +13,7 @@
/// Dialog-related classes and types.
#include <SFML/Graphics.hpp>
#include <SFML/Window/Event.hpp>
#include <string>
#include <map>
@@ -55,6 +56,8 @@ protected:
void increment();
};
cKey translate_sfml_key(sf::Event::KeyEvent);
/// Defines a fancy dialog box with various controls.
class cDialog : public iComponent, public iNameGiver {
friend class cDialogIterator;
@@ -79,9 +82,15 @@ class cDialog : public iComponent, public iNameGiver {
bool doAnimations;
bool has_focus = false;
public:
static bool anyOpen() { return topWindow != nullptr; }
static void (*redraw_everything)();
// Global onOpen and onClose events are for tracking things, not for modifying the dialogs.
static std::function<void(const cDialog&)> onOpen;
static std::function<void(const cDialog&)> onClose;
static std::function<void(sf::RenderWindow& win)> onLostFocus;
static std::function<void(sf::RenderWindow& win)> onGainedFocus;
// Attach a handler here for any update/input logic that uses target-specific code
static std::function<void(sf::RenderWindow& win)> onHandleEvents;
void stackWindowsCorrectly();
/// Performs essential startup initialization. Generally should not be called directly.
static void init();

View File

@@ -15,9 +15,11 @@
#include <boost/algorithm/string/case_conv.hpp>
#include "dialogxml/widgets/field.hpp"
#include "dialogxml/dialogs/strdlog.hpp"
#include "fileio/resmgr/res_dialog.hpp"
#include "sounds.hpp"
#include "gfx/render_shapes.hpp"
#include "tools/cursors.hpp"
const sf::Color HILITE_COLOUR = Colours::LIGHT_GREEN;
@@ -141,6 +143,8 @@ bool cStringChoice::onLeft(){
if(page == 0) page = lastPage();
else page--;
fillPage();
clearHighlights();
highlightSearch();
return true;
}
@@ -152,6 +156,8 @@ bool cStringChoice::onRight(){
if(page == lastPage()) page = 0;
else page++;
fillPage();
clearHighlights();
highlightSearch();
return true;
}
@@ -242,6 +248,7 @@ void cStringChoice::clearHighlights() {
bool cStringChoice::highlightSearch() {
bool match_on_page = false;
if(search_str.empty()) return false;
for(int offset = 0; offset < per_page; ++offset){
std::string led_id = "led" + std::to_string(offset + 1);
@@ -310,3 +317,71 @@ void cStringChoice::savePage() {
strings[string_idx] = dlg[text_id].getText();
}
}
static bool get_num_response_event_filter(cDialog& me, std::string, eKeyMod) {
if(me.toast(true)){
me.setResult<int>(me["number"].getTextAsNum());
}
return true;
}
short get_num_response(short min, short max, std::string prompt, std::vector<std::string> choice_names, boost::optional<short> cancel_value, short initial_value, std::string extra_led, bool* led_output) {
std::ostringstream sout;
sout << prompt;
set_cursor(sword_curs);
cDialog numPanel(*ResMgr::dialogs.get("get-num"));
numPanel.attachClickHandlers(get_num_response_event_filter, {"okay"});
if(extra_led.empty()){
numPanel["extra-led"].hide();
}else{
numPanel["extra-led"].setText(extra_led);
numPanel["extra-led"].recalcRect();
if(led_output != nullptr)
dynamic_cast<cLed&>(numPanel["extra-led"]).setState(*led_output ? led_red : led_off);
}
sout << " (" << min << '-' << max << ')';
numPanel["prompt"].setText(sout.str());
numPanel["number"].setTextToNum(initial_value);
if(!choice_names.empty()){
numPanel["choose"].attachClickHandler([&choice_names, &prompt](cDialog& me,std::string,eKeyMod) -> bool {
cStringChoice choose_dlg(choice_names, prompt, &me);
me["number"].setTextToNum(choose_dlg.show(me["number"].getTextAsNum()));
return true;
});
}else{
numPanel["choose"].hide();
}
if(min < max)
numPanel["number"].attachFocusHandler([min,max](cDialog& me,std::string,bool losing) -> bool {
if(!losing) return true;
int val = me["number"].getTextAsNum();
if(val < min || val > max) {
showError("Number out of range!");
return false;
}
return true;
});
bool cancel_clicked = false;
if(cancel_value){
numPanel["cancel"].attachClickHandler([cancel_value, &cancel_clicked](cDialog& me,std::string,eKeyMod) -> bool {
cancel_clicked = true;
me.setResult<int>(*cancel_value);
me.toast(false);
return true;
});
}else{
numPanel["cancel"].hide();
}
numPanel.run();
if(!cancel_clicked && led_output != nullptr){
*led_output = dynamic_cast<cLed&>(numPanel["extra-led"]).getState() == led_red;
}
return numPanel.getResult<int>();
}

View File

@@ -12,6 +12,7 @@
#include <string>
#include <vector>
#include <functional>
#include <boost/optional.hpp>
#include "dialog.hpp"
#include "dialogxml/widgets/ledgroup.hpp"
@@ -78,4 +79,9 @@ public:
std::vector<std::string> getStrings() const { return strings; }
};
// Prompt the player/designer for a number, which might be an index in a given list of strings.
// Specify cancel_value to show a cancel button, which will return the given value (for example, -1)
// Specify extra_led and led_output to show a labeled LED which will assign led_output with its status unless the dialog is canceled
short get_num_response(short min, short max, std::string prompt, std::vector<std::string> choice_names = {}, boost::optional<short> cancel_value = boost::none, short initial_value = 0, std::string extra_led = "", bool* led_output = nullptr);
#endif

View File

@@ -355,6 +355,7 @@ std::string cControl::getAttachedKeyDescription() const {
case key_word_del: keyName = "delete"; mod += mod_ctrl; break;
#endif
case key_find: keyName = "f"; mod += mod_ctrl; break;
case key_none: keyName = "unknown"; break;
}
if(mod_contains(mod, mod_ctrl)) s += '^';
if(mod_contains(mod, mod_alt)) s += '#';
@@ -715,3 +716,8 @@ void cControl::restore(storage_t to) {
if(to.find("visible") != to.end())
boost::any_cast<bool>(to["visible"]) ? show() : hide();
}
// Translate raw x/y position using the view of the current rendering target
location cControl::translated_location(const sf::Vector2i point) const {
return location { const_cast<cControl*>(this)->getWindow().mapPixelToCoords(point) };
}

View File

@@ -493,6 +493,7 @@ protected:
/// Plays the proper sound for this control being clicked on
void playClickSound();
static std::string generateRandomString();
location translated_location(const sf::Vector2i) const;
private:
friend class cDialog; // This is so it can access parseColour and anchor
friend class cContainer; // This is so it can access anchor

View File

@@ -139,6 +139,66 @@ void cTextField::replay_selection(ticpp::Element& next_action) {
redraw();
}
// Parentless text field handle input
bool cTextField::handle_event(const sf::Event& event) {
// Not visible -> not interested
if(!this->isVisible())
return false;
static cKey pendingKey;
switch(event.type) {
case sf::Event::MouseButtonPressed:
return this->handle_mouse_pressed(event);
case sf::Event::KeyPressed:
return this->handle_key_pressed(event, pendingKey);
case sf::Event::TextEntered:
if(!pendingKey.spec && haveFocus) {
pendingKey.c = event.text.unicode;
if(pendingKey.c != '\t')
handleInput(pendingKey, true);
}
break;
default: break;
}
return false;
}
bool cTextField::handle_key_pressed(const sf::Event& event, cKey& pendingKey) {
if(haveFocus){
cKey key = translate_sfml_key(event.key);
// TODO if multiple parentless fields ever exist, tab order will need to be handled
// If it's a character key, and the system key (control/command) is not pressed,
// we have an upcoming TextEntered event which contains more information.
// Otherwise, handle it right away. But never handle enter or escape.
if((key.spec && key.k != key_enter && key.k != key_esc) || mod_contains(key.mod, mod_ctrl))
handleInput(key, true);
pendingKey = key;
return true;
}
return false;
}
// Parentless text field toggle focus on click
bool cTextField::handle_mouse_pressed(const sf::Event& event) {
location event_location = this->translated_location({
event.mouseButton.x,
event.mouseButton.y
});
bool in_bounds = event_location.in(this->getBounds());
// TODO if multiple parentless fields ever exist, focus must be taken from the other one here
haveFocus = in_bounds;
insertionPoint = 0;
if(haveFocus){
static cFramerateLimiter fps_limiter;
handleClick(event_location, fps_limiter);
}
return in_bounds;
}
bool cTextField::handleClick(location clickLoc, cFramerateLimiter& fps_limiter) {
if(!haveFocus && getDialog() && !getDialog()->setFocus(this)) return true;
haveFocus = true;
@@ -462,7 +522,8 @@ void cTextField::handleInput(cKey key, bool record) {
selectionPoint = ++insertionPoint;
}
} else switch(key.k) {
case key_enter: break; // Shouldn't be receiving this anyway
case key_none: case key_enter:
break; // Shouldn't be receiving this anyway
case key_left: case key_word_left:
if(current_action) history.add(current_action), current_action.reset();
if(haveSelection && !select) {
@@ -499,6 +560,7 @@ void cTextField::handleInput(cKey key, bool record) {
if(current_action) history.add(current_action), current_action.reset();
if(haveSelection && !select)
selectionPoint = insertionPoint = std::min(selectionPoint,insertionPoint);
if(snippets.empty()) break;
if(snippets[ip_row].at.y == snippets[0].at.y) {
key.k = key_top;
if(select) key.mod += mod_shift;
@@ -513,6 +575,7 @@ void cTextField::handleInput(cKey key, bool record) {
if(current_action) history.add(current_action), current_action.reset();
if(haveSelection && !select)
selectionPoint = insertionPoint = std::max(selectionPoint,insertionPoint);
if(snippets.empty()) break;
if(snippets[ip_row].at.y == snippets.back().at.y) {
key.k = key_bottom;
if(select) key.mod += mod_shift;

View File

@@ -16,6 +16,8 @@
#include "control.hpp"
#include "gfx/render_text.hpp"
#include "tools/undo.hpp"
#include "tools/drawable.hpp"
#include "tools/event_listener.hpp"
/// The field's expected input type.
enum eFldType {
@@ -31,7 +33,7 @@ enum eFldType {
/// (If there's a current selection, the mobile end of the selection is kept in view.)
/// Mouse support is currently nonexistent, except for focusing when clicked.
/// There is no Unicode support.
class cTextField : public cControl {
class cTextField : public cControl, public iEventListener, public iDrawable {
public:
bool parseAttribute(ticpp::Attribute& attr, std::string tagName, std::string fname) override;
bool parseContent(ticpp::Node& content, int n, std::string tagName, std::string fname, std::string& text) override;
@@ -43,6 +45,9 @@ public:
return {EVT_FOCUS, EVT_DEFOCUS};
}
bool handleClick(location where, cFramerateLimiter& fps_limiter) override;
bool handle_event(const sf::Event&) override;
bool handle_mouse_pressed(const sf::Event&);
bool handle_key_pressed(const sf::Event&, cKey& pendingKey);
void setText(std::string to) override;
storage_t store() const override;
void restore(storage_t to) override;

View File

@@ -83,10 +83,14 @@ void cScrollbar::setStyle(eScrollStyle newStyle) {
style = newStyle;
}
void cScrollbar::set_wheel_event_rect(rectangle rect) {
void cScrollbar::setWheelEventRect(rectangle rect) {
this->wheel_event_rect = rect;
}
rectangle cScrollbar::getWheelEventRect() const {
return wheel_event_rect;
}
long cScrollbar::getPosition() const {
return pos;
}
@@ -111,12 +115,6 @@ eScrollStyle cScrollbar::getStyle() const {
return style;
}
// TODO: centralize this translation somewhere
// Translate raw x/y position using the view of the current rendering target
location cScrollbar::translated_location(const sf::Vector2i point) const {
return location { const_cast<cScrollbar*>(this)->getWindow().mapPixelToCoords(point) };
}
bool cScrollbar::handle_event(const sf::Event& event) {
// Not visible -> not interested
if(!this->isVisible())

View File

@@ -53,7 +53,6 @@ class cScrollbar : public cControl, public iEventListener, public iDrawable {
// in the inventory area).
rectangle wheel_event_rect {0, 0, 0, 0};
void draw_vertical(), draw_horizontal();
location translated_location(const sf::Vector2i) const;
eScrollbarPart location_to_part(const location& location) const;
location mouse_pressed_at;
int drag_start_position;
@@ -125,7 +124,8 @@ public:
/// Set the scrollbar style.
/// @param newStyle The new style.
void setStyle(eScrollStyle newStyle);
void set_wheel_event_rect(rectangle);
void setWheelEventRect(rectangle);
rectangle getWheelEventRect() const;
virtual void draw() override;
virtual bool handle_event(const sf::Event&) override;
/// @copydoc cControl::getSupportedHandlers

View File

@@ -59,7 +59,7 @@ void cStack::draw() {
drawFrame(2, frameStyle);
}
bool cStack::setPage(size_t n) {
bool cStack::setPage(size_t n, bool call_focus_handlers) {
if(n >= nPages) return false;
if(n == curPage) return true;
cTextField* focus = getDialog()->getFocus();
@@ -70,7 +70,8 @@ bool cStack::setPage(size_t n) {
// Only trigger focus handlers if the current page still exists.
if(curPage < nPages) {
storage[curPage][id] = ctrl.store();
if(!ctrl.triggerFocusHandler(*getDialog(), id, true))
if(call_focus_handlers && !ctrl.triggerFocusHandler(*getDialog(), id, true))
failed = true;
if(!failed) {
ctrl.restore(storage[n][id]);
@@ -102,7 +103,7 @@ size_t cStack::getPage() const {
void cStack::setPageCount(size_t n) {
if(curPage >= n && n > 0)
setPage(nPages - 1);
setPage(nPages - 1, false);
auto added = n - nPages;
if(n == 0) curPage = 0;
nPages = n;
@@ -110,10 +111,10 @@ void cStack::setPageCount(size_t n) {
if(added > 0 && defaultTemplate < storage.size()) {
auto saveCur = curPage;
for(int i = n - added; i < nPages; i++) {
setPage(i);
setPage(i, false);
applyTemplate(defaultTemplate);
}
setPage(saveCur);
setPage(saveCur, false);
}
}
@@ -235,10 +236,10 @@ void cStack::validatePostParse(ticpp::Element&, std::string, const std::set<std:
// Actual number of pages is the larger of pages= and count of <page>
setPageCount(std::max(nPages, templates.size()));
for(size_t i = 0; i < nPages; i++) {
setPage(i);
setPage(i, false);
applyTemplate(i);
}
setPage(0);
setPage(0, false);
}
void cStack::applyTemplate(size_t n) {

View File

@@ -56,7 +56,7 @@ public:
/// You need to do this before retrieving data from that page.
/// @param The new page number
/// @return false if the page could not be changed, usually due to a focus handler
bool setPage(size_t n);
bool setPage(size_t n, bool call_focus_handlers = true);
/// Page forward or backward in the stack
/// @param dir Usually -1 or 1
/// @param loop Beyond the first and last page, loop to the other side

View File

@@ -353,15 +353,29 @@ cEnumLookup field_names = {
"explored", "wall-force", "wall-fire", "field-antimagic", "cloud-stink", "wall-ice", "wall-blades", "cloud-sleep",
"obj-block", "spec-spot", "field-web", "obj-crate", "obj-barrel", "barr-fire", "barr-force", "field-quickfire",
"sfx-sm-bld", "sfx-med-bld", "sfx-lg-bld", "sfx-sm-slm", "sfx-lg-slm", "sfx-ash", "sfx-bone", "sfx-rock",
"barr-cage", "", "", "", "", "", "", "",
"barr-cage", "spec-road", "", "", "", "", "", "",
"dispel", "smash",
};
// Field names that can be printed in the editor
cEnumLookup field_names_editor = {
"", "", "", "", "", "", "", "",
"Block", "Special Spot", "Web", "Crate", "Barrel", "Fire Barrier", "Force Barrier", "Quickfire",
"Small Blood", "Medium Blood", "Large Blood", "Small Slime", "Large Slime", "Ash", "Bones", "Rocks",
"", "Road", "", "", "", "", "", "",
"", "",
};
std::ostream& operator << (std::ostream& out, eFieldType e) {
writeEnum(out, e, field_names, "dispel");
return out;
}
std::string get_editor_field_name(eFieldType e){
std::ostringstream sstr;
writeEnum(sstr, e, field_names_editor);
return sstr.str();
}
std::istream& operator >> (std::istream& in, eFieldType& e) {
if(!readEnum(in, e, field_names, FIELD_DISPEL))
in.setstate(std::ios::failbit);

Some files were not shown because too many files have changed in this diff Show More