Commit Graph

180 Commits

Author SHA1 Message Date
4aea031914 Add linked element to scrollbars
The linked element will be updated dynamically as the scrollbar's value changes.
Also: Added long-missing hasControl() method to cDialog
2015-10-02 22:59:04 -04:00
f7daba4ead Scrollbars are finally a first-class citizen in the dialog engine.
- Add <slider> tag to put an unbound scrollbar in the dialog
- Add support for horizontal scrollbars
2015-10-02 21:44:17 -04:00
5f7654046d Update About Blades of Exile dialog
- Some text in this update contributed by ADoS

Also:
- Make scroll panes scroll 5 pixels per click instead of 1
- Make scroll pane page size depend on the height
2015-10-02 18:46:21 -04:00
a455941d92 New scroll pane control in the dialog engine
Also:
- Use a scroll pane for the credits in the about dialog, so that new credits can be added without altering other elements
- Use a scroll pane for the list of sections to be deleted in the resize outdoors dialog
- New cContainer superclass for controls that contain other controls
- Scrollbars consider their maximum as part of their state
2015-10-02 17:03:25 -04:00
22e63d898f Refactor dialog parsing so each control knows how to parse itself 2015-10-02 15:20:32 -04:00
66f84ef396 Fix several little issues with cursors
- Sometimes they didn't reappear when the program was reactivated
- Watch is now used in more places
2015-09-24 19:12:12 -04:00
a778d25cdc Fix crash in dialogs that start with no editable fields but gain them later
Crash occurred if you try to edit a field in such dialogs
2015-09-15 00:05:34 -04:00
780b413d0c Mass replace NULL --> nullptr
(Except one instance was instead replaced with nil)
2015-09-13 10:50:21 -04:00
ba4e3a8d73 Remove an unused Boost header 2015-09-12 04:38:02 -04:00
832b8b5f91 Set up scons build system
- In its current state, it produces a valid, launchable Mac application package, though one that's not redistributable (relies on system-installed libraries)
- Partial support is already in-place for a Windows build
2015-09-11 23:10:37 -04:00
47217b12b0 Several new status icons
- Remove staticonhelp.png in favour of placing this information directly in the relevant help dialog definition
- New status icons for enlightenment, magic attract, forcecage, hyperactivity, flight, detect life, firewalk, stealth (replacing the BoA-sourced ones)
- Status icons for fear, drunkenness, charm (none of which are currently implemented as PC status effects)
2015-08-31 13:22:15 -04:00
5ae96f2c45 Fix scrollbars not updating while mouse pressed on Windows 2015-08-21 11:34:18 -04:00
5762c2bb90 Tweak to error dialogs and add separate warning dialogs
(Also some error messages tweaked)
2015-08-14 23:30:18 -04:00
5332270cd8 Scrub Exile/Avernum/Nethergate graphics
- New space-filling forcecage (possibly not finalized)
- New appearance for pushable stone block
- New red slime monster graphic by ADoS
- Six new item graphics by ADoS
- New bookshelf terrain by ADoS
2015-07-23 21:36:22 -04:00
2d73bb01ae Nuke oopsError and out-dated "can't load game" error dialogs 2015-07-03 18:11:03 -04:00
fecd268d5a Preserve spaces in scenario strings (and other longer strings) by using CDATA
- Involves a hack-mod of ticpp::Text to support it (for some reason, the support was there in TinyXML but not exposed by ticpp)
- Don't save all the intro strings if most are empty
- Don't save the init special if there isn't one
- Fix not saving the "I don't know" response for dialogue personalities

Strings that now preserve spaces:
- Descriptions of items, special items, and quests
- Descriptions of special shop items that call a special node when purchased
- Scenario, town, and outdoor strings
- Sign strings
- Journal strings
- All dialogue strings (both in personalities and in talk nodes)
2015-07-02 12:08:38 -04:00
c1fa65a01d Much better error-checking when loading scenarios
- First of all, the program no longer crashes after an error.
- A lot more constraints are now checked for, such as required elements; even some constraints not expressed in the schema
- Special node parsing now has actually useful error messages
- Map data parsing now has error messages for the few invalid cases
- Fix the XML utility exception classes originally used only by the dialog engine; they're now correctly caught and properly report the error
- Fix loading of special shop entries
- Fix accepting any character as the separator in dice constants
- Verify that the monster ability type is on the right ability tag, that the extra element is present only if needed for general abilities, and that the missile and range elements are present for non-touch general abilities
- Use "infinite" for quantity in special shop items, instead of 0
- Tweak ticpp to fill out file/line/col information for _all_ exceptions, not just parse errors
- Raise error (ie, set stream failbit) when failing to convert an enumerator, instead of silently returning a default value (they do still return a default value though, if you don't bother to check stream state)
- Fix status effect enumerator not being correctly saved/loaded
2015-06-29 19:55:59 -04:00
860cf9d5dd Fix some rough edges when handling large pictures or full sheets
- Choose Picture dialog now scales these pictures down to fit in the available space, thus avoiding the ugly overlap issue.
- Choose Picture dialog now supports full sheets, scaling them down in a similar manner
- Due to the above, the Display Picture node now offers a Choose button
- The possibility of large (72x72) dialog pictures is now properly documented
2015-06-28 20:13:33 -04:00
b7faf52f5e Remove pointless s_pow and s_sqrt functions and use hypot instead of sqrt for distance calculations 2015-06-21 18:04:31 -04:00
9d74f78df3 Implement all the missing parts of the Edit Sheets and Edit Sounds dialogs
- On load, the game now detects graphic sheets and sounds whose IDs are "discontinuous", as well as graphics intended to directly replace preset graphic sheets.
- Edit sheets dialog can now handle "discontinuous" graphics. (The edit sounds dialog already could.)
- Edit sheets dialog prompts user to create a new sheet if there are none already, and also if there are some but not ID 0 (in the latter case they can cancel and still edit the sheets).
- Edit sheets dialog prompts user to convert sheets if the scenario is legacy, rather than doing it silently
- Edit sheets dialog now has "new" and "delete" buttons
- Edit sounds dialog now has functioning "delete" button
2015-06-17 04:29:10 -04:00
e055b97c9f Add dialog allowing you to alter the scenario's graphics sheets from within the scenario editor
- You can copy/paste images into the sheet, or import/export to/from png files

Also:
- Picture controls in the dialog engine have a new "scaled" flag; if set, the picture will be scaled into the provided bounds rather than overflowing. Currently, only full sheets honour the setting.
2015-06-15 16:20:03 -04:00
f0e6e7ef24 Get the makefile basically working in producing an executable of the game
- tinyprint.hpp was renamed to tinyprint.h to conform to the pattern of the makefile rules
2015-06-14 23:32:51 -04:00
21291e168c Some tweaks/fixes
- Show monster name in description of summoning item abilities (in-game and in the scenario editor)
- Don't call drop special nodes when storing an item in a container
- Don't use exceptions to determine whether a slot in the get window has an item in it
- Fix placed items defaulting to 0 charges instead of -1 (fortunately, this didn't actually cause a bug)
- Fix ability description in item dialog not updating after you edit the abilities
- Fix off-by-one issues in several cases of the pick monster dialog
- Show charges field in placed item dialog if the item is given the Shoot Flames enchantment
- Fix enchantment field not being filled with the current value when opening the edit placed item dialog
- Fix placed item dialog not updating after you set a new enchantment by editing the field (rather than using the Choose button)
- (Dialog engine) Fix initial focus handler call passing wrong control ID
2015-06-11 12:22:04 -04:00
c871980b8f Implement double-clicking to select words in dialog text fields 2015-06-11 10:52:40 -04:00
01d317b007 .h -> .hpp 2015-06-08 22:14:43 -04:00
510da3cf72 Update terrain dialog and some other tweaks/fixes
- Fix documentation of how to format map graphics, to match the logic in the code
- Fix display of map graphics both on the automap and in dialogs
- Add Choose button to select the map graphic
- Fix the vanishing text bug again (this time it only triggered for fields with a single character in them)
2015-06-06 02:51:30 -04:00
9f8e6f88c2 Several little tweaks and fixes
- Fix scroll wheel in terrain area going beyond section boundaries
- Fix text not being drawn in dialog text fields when first activated
- Fix terrain being painted while scrolling the map to the east (especially with the keypad)
- Fix item or monster palette remaining active while editing outdoors
- When using a large brush, hilite all affected spaces
2015-06-05 23:25:56 -04:00
fdbb61411b Nuke several annoying and no longer necessary debug output statements 2015-06-05 18:44:57 -04:00
d398bfaa80 Implement undo/redo history for dialog text fields
- Also fixed a minor issue with pasting (the character before the insertion point was removed before pasting)
2015-06-05 15:07:28 -04:00
4fa22a34f1 Fix (at least partly) excessive lag while typing in dialog text fields
- Also fix page up; page down still needs some work
2015-06-05 12:47:49 -04:00
a7ce450a3b Implement the rest of the text navigation keys in dialog text fields
- There are still some quirky behaviours, however
2015-06-05 11:27:32 -04:00
5bcf220204 Add support for custom explosions with custom sound choice 2015-06-04 18:47:01 -04:00
6c5e2b5118 Several tweaks and fixes
Bugs:
- Arrow keys activated the arrow buttons in the list-mode edit string dialog
- Graphics classification was not saved correctly in some cases
- Contact info was not correctly saved/loaded
- Place Monster node didn't have a choose button for the monster type
- Alt-Backspace and Alt-Delete did not work correctly in dialog text fields
- When clicking Edit Terrain Types, sometimes the list of items or monsters would appear instead
- Fix monster 0 being selectable in the choose monster dialog
- Fix the hotspots of all the cursors to be more intuitive

New:
- When interrupting a special node sequence with Cmd-. / Ctrl-C, the dialog that appears is more relevant.
- In the choose sound dialog, the sound now plays when you select a choice, so you can hear what it will sound like
- Added a tiny icon so you can distinguish fire and force barriers in the editor
2015-06-04 15:50:05 -04:00
7e4eabf198 Add item-monster selection palette which fills the same space as the terrain palette
- Removed the item/monster menus in the scenario editor (they weren't function anyway)
- Scrollbars can now have a maximum value of 0; if this is the case, they do not draw a thumb
2015-06-01 18:59:24 -04:00
4fbc6cfa77 Various code cleanup stuff 2015-02-14 12:24:25 -05:00
Ben Scott
922b046b6a Fixed some parts of the update error with some serious kludge. 2015-02-14 03:02:22 -05:00
Ben Scott
6b275c9ed9 Little fixes 2015-02-11 21:00:47 -05:00
4bc04886f6 Fix use of pointer arithmetic where string concatenation was intended 2015-02-11 20:34:18 -05:00
b7ff2609f4 Standard error dialogs now have a copy to clipboard button 2015-02-10 15:49:00 -05:00
ad0b58ad52 Fix scrollbars being rendered incorrectly when not in windowed mode 2015-02-07 23:47:51 -05:00
c50e24b8e4 Turn sparse arrays into sets. 2015-02-06 15:37:55 -05:00
1778cd9a61 Tweak scenario output and schema so that they match; write script to XML-validate a whole scenario 2015-02-05 22:18:19 -05:00
8d4cea7d0b Complete implementation of saving new-format scenarios and write version-check and loading stub for new-format scenarios 2015-02-04 19:48:31 -05:00
233a19175d Misc minor fixes
- Fix escape not ending shop mode
- Fix outdoor special spots not being drawn
- Fix special spots sometimes appearing off the edge of the sector in the scenario editor
2015-02-04 14:20:59 -05:00
36491c818c Implement a dialog to edit shops in the scenario editor 2015-02-04 13:55:22 -05:00
008248a947 Rewrite shops system to be more general
- Shops can now contain more than one type of item (for example, both mage and priest spells)
- Shops can now specify any talking portrait
- Healing options in a shop now have an info button giving a brief explanation (partly because it was easier than maintaining the exception)
- Additional healing option (not present in default healing shops): cure acid
- Acid is also no longer removed when you leave town or end combat (unless it's about to wear off)
- Always start shop mode with the scrollbar scrolled to the top
- Fix crash when entering an outdoor shop (and outdoor dialogue for that matter)
- Treasure generation system can now return junk items (treasure type 0), but only if explicitly requested; this is possible in shops but not with monsters since 0 means no loot

Dialog Engine:
- When setting a scrollbar's maximum, it now ensures the current position doesn't end up greater than the maximum
2015-02-03 11:15:26 -05:00
a41468eea8 Redo scenario button-list management to use std::string and enums, making it more robust in case of layout changes
- Also fix LEDs defaulting to a wrapped label
2015-02-01 02:44:09 -05:00
4efcb08932 Implement a quest system and job board
- The job board is loosely based on Exile III's job board; the dialog is converted from the one contained as a relic of E3 in BoE
- Quest system is loosely based on a mix of Exile III jobs and Blades of Avernum quests
- Talking to a monster (even a hostile one) can now trigger an arbitrary special node

Dialog engine:
- LED's now support wrapped labels
2015-02-01 01:30:15 -05:00
a23682306c Finish edit terrain type dialog in the editor and tweak some terrain properties
- Introduce enum for step sounds
- Remove union for treating terrain flags as either signed or unsigned
Editor:
- Add Choose button to select the "transform to" terrain.
- Implement Choose buttons as appropriate for the terrain flags, including editing the special that a terrain calls.
- Range-check the terrain flags.
- Add Custom button to choose a town as the combat arena.
- Fix/tweak/improve several of the terrain flag prompts.
- Fix placing shortcut key in field as its ASCII code instead of the letter
- Fix some of the range checks that were already in place but were incorrect or improperly static
Game:
- The wilderness terrain types now allow specifying how many d6's of food you get when hunting there.
- Crumbling terrain uses flag 2 instead of 3 to determine method (flag 2 was supposed to be strength but was never used)
- Merge two functions that did almost exactly the same thing (namely altering a terrain space and potentially updating conveyor/lights info)
- Merge switch_level into handle_lever since it was the only place it was called
- Remove global store_special_loc; the location is stored in the stuff_done array now
- Change when use/step on terrains will now update lighting if they changed to a terrain with a different light level
- Terrains that call a special no longer support mixed global/local modes - they either always call a local special or always call a global special
- Use previously unused swap_ter function (which did the exact same thing as the swap terrain special node)
Dialog Engine:
- Don't "erase" invisible icons or buttons; it's not necessary, since the entire window is filled with background before the draw() method is called, and it causes problems in case of overlapping elements.
2015-01-28 15:43:58 -05:00
92a20b1c67 Fill in a lot of missed cases (mostly just messages)
- Increase strength of slayer weapons that weren't in the original BoE by making sure that each race applies some multiplier to the ability strength
- Messages for every occasional status effect, both negative and positive. If charm/forcecage, ignore.
- Fix weapon poison not being applied
- Forcecage supported for damaging terrain (in town only, of course) and "affect status" items
- Weapon poison supported for "affect status" items; it differs from "poison weapon" items in that it honours the magic use type and doesn't risk messing up (like the Envenom spell)
- Show error messages when encountering an unimplemented spell or special node
- Fix missing handling of NPCs appearing after town dies when loading a saved town
2015-01-27 23:52:47 -05:00