Commit Graph

308 Commits

Author SHA1 Message Date
7e7f3d2b81 Merge mac into windows 2017-08-27 23:37:37 -04:00
a31797582a Some fixups, mainly to support MinGW builds 2017-08-27 23:29:00 -04:00
c2ce2a2cd1 Split up the graphtool files 2017-04-14 15:43:07 -04:00
82abdab695 Major code reorganization
This commit only updates the XCode project for the changes.
A later commit each will update it for scons and MSVC.

A few actual changes are mixed in:
- Add a prefix header for a handful of common definitions
- Moved current_cursor into the Cursor class as a static member
- Removed the make_cursor_sword and make_cursor_watch functions
- Include tests in the All target
- Remove redundant -l flags for Common and Common-Party (since they're included in the Link phases anyway)
2017-04-14 00:24:29 -04:00
4f91f6a679 Make undo system a little safer, and improve docs 2017-04-11 15:00:22 -04:00
683ab805ec Initial framework for scenario editor undo/redo
In addition to the framework, this enables undo/redo of one action - adding a new town
2017-02-12 18:27:01 -05:00
ed0c41c3ce Fix misleading error message for validating unsigned fields 2017-02-07 20:08:53 -05:00
73cfe2bd24 Merge branch 'master' into linux 2017-01-30 14:02:41 -05:00
37d2e5f06b Additional minor fixes to Linux build 2017-01-26 17:18:01 -05:00
ultra
ffa2d0e950 Hacked scons scripts and got it building on Ubuntu with clang.
Minor changes to support building on recent clang
Addition of some headers for non-compiling files
2017-01-26 17:16:38 -05:00
15637c763b Fix showing a fixed graphic for invisible monsters in Scry Monster
Also fix dialogs never showing a frame around blank graphics
2017-01-22 11:10:40 -05:00
Ben Scott
ddfe50298a added override annotations to various UI functions in src/dialogxml/ 2015-12-22 02:22:15 -05:00
168e4c5e52 Fix missing default button in some custom choice dialogs 2015-10-06 22:17:28 -04:00
d19880a463 Stop storing preferences and legacy flags in the saved game
- Nuke global preference variables (they're now fetched with get_xxx_pref whenever needed)
- Nuke magic SDFs that store preferences and other info
- The only preferences now stored in the saved game are those related to difficulty
- play_sound no longer takes an option repeat parameter, but instead takes a delay which will be used if sounds are disabled
- SDF array increased to 350x50
- When saving a legacy scenario, a dialog is shown to remind you to update and to allow you to clear the legacy flag
2015-10-06 22:17:25 -04:00
7f00d0c775 Change image resource type from sf::Image to sf::Texture
This includes an added optimization to the resource manager - it now uses unordered (hash) maps instead of ordered (tree) maps to keep track of loaded resources and paths, for the average constant lookup time.
2015-10-05 23:57:42 -04:00
1b95f06207 Split dlogutil.hpp into separate headers for each dialog 2015-10-04 22:45:01 -04:00
177a38d171 Make list of basic buttons a source file instead of a header. 2015-10-04 21:15:28 -04:00
cae5fc3140 Rearrange the basic_buttons array to avoid the extra indirection step
- All buttons from the array that were strictly related to UI have been removed.
- Some new buttons have been added. The duplicate Leave button has been removed.
2015-10-04 21:11:16 -04:00
28a513a4a0 Fix the red push button when used in dialogs 2015-10-04 00:36:16 -04:00
8afd3825b0 Refactor the dialog engine's event handling to make it easier to add new events in the future
- Focus event split into focus and defocus
- Scroll event added but not yet properly implemented

Also:
- Remove the useless (and ignored) clickable attributes from the schema
- Pave the way for controls other than fields to be able to recieve keyboard focus
2015-10-03 19:49:33 -04:00
8b90fa614b Make stack control a real container instead of a controller
- Also add framed/outlined attributes to it and to LED groups
2015-10-03 12:30:26 -04:00
b176918dda DialogXML: Make the frame style format parameter a first-class citizen
- It's now exposed in the schema with a new attribute, outline, on all elements that accept framed
- It now has four possible values: solid, outset, inset, double. Dashed or dotted may be added later; they're a lot harder.
- Second make scenario dialog uses a custom frame style
2015-10-03 11:13:33 -04:00
967f24a83b Fix dialog frames not using the inset style
The framestyle format parameter now does nothing. This is temporary.
2015-10-03 10:28:42 -04:00
8b5396c980 Remove all def-key='enter' in favour of defbtn attribute
In addition, the default button is finally properly outlined when specified with the defbtn attribute.
(It would also be outlined if specified with def-key='enter'.)
The following preset buttons (available to special nodes) now respond to the enter key:
- "Leave", "Done", "OK"
2015-10-03 03:40:48 -04:00
03bc3d05e6 Remove key-mod attribute from dialog schema
- Modifiers are now given in the def-key attribute, as originally intended
- Dialogs that have a help button now assign F1 to that button (replacing shift+/ in some cases)
- F1 also brings up help in the main game (in addition to shift+/)
2015-10-03 00:53:32 -04:00
edaf3baa2d Formatting 2015-10-03 00:35:33 -04:00
2645818aeb Fix two minor graphical glitches in alternate scrollbar style 2015-10-03 00:02:26 -04:00
b39ac35298 New alternate scrollbar style, used by default in dialogs 2015-10-02 23:31:01 -04:00
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