Commit Graph

140 Commits

Author SHA1 Message Date
2492610ec7 Reading and writing saved games now uses the new tagfile system.
This should avoid any format inconsistencies, like missing newlines and the like.
Although a basic save and load works, there may still be some issues with the format.
This probably renders older saved games incompatible.
The format is mostly the same, but there are a few small changes
in the name of making the format more uniform.
2023-01-18 00:54:39 -05:00
99bd1678e4 tagfile: Support mapped containers, similar to a sparse array
Note: This now treats vector<pair> as a mapped container as well – an ordered multimap, so to speak
2023-01-18 00:54:39 -05:00
50d611e319 tagfile: Support vector2d, both sparse and dense 2023-01-18 00:54:39 -05:00
9aa0262247 vector2d: row/col assignment (+test), default value in resize 2023-01-18 00:54:39 -05:00
50bd1e9c6e tagfile: A few more tests; support sparse arrays 2023-01-18 00:54:39 -05:00
d3ed054bbb tagfile: Support hexadecimal integer tags 2023-01-18 00:54:39 -05:00
e5b347c70f tagfile: A few more tests; fix tuple handling 2023-01-18 00:54:39 -05:00
657df9ea8d Rework the tagfile library
After further experimentation, the previous template-heavy design
turned out to cause issues with compilation.

Thus, it has now been replaced with a simpler, dumber implementation
that pushes more of the logic into the caller.
2023-01-18 00:54:39 -05:00
35a890a577 Add a partial unit test for vector2d and fix several issues with the resize function 2023-01-12 21:26:08 -05:00
8872f1aa25 Stop storing players as bare pointers - use unique_ptr instead
Should fix some potential memory leaks that were caught by static analysis
2023-01-12 21:26:08 -05:00
ac5cbe3a60 Test case for dialog XMLs in-engine 2023-01-08 17:25:33 -05:00
6319d46d67 Fix compilation on Xcode 4
- Add new files to project
- Xcode 4 doesn't support inheriting constructors
2023-01-07 14:27:02 -05:00
71f9dd0043 TagFile refinements
- Use a custom prefix system for tagfiles - f for a file, p for a page, t for a tag
- Add a hex tag that reads and writes a number as hex
- Ensure booleans are always read and written as alpha
2023-01-07 13:55:04 -05:00
cb73719af3 Make item abil_data a bit more readable
A two-element array is an ugly thing to behold
2023-01-06 02:13:46 -05:00
81bea5a01a Add use flag assertions for every ability in the unit test 2023-01-06 01:23:48 -05:00
baf8bfd5c7 Make flight ability usable outdoors 2023-01-06 00:55:11 -05:00
ae9ea960f1 tests: Make sure this is initialized 2023-01-05 19:52:30 -05:00
4b336d06fb add Catch2 to scons build 2023-01-05 02:10:20 -05:00
b469b3aeea Add a new class to encapsulate the file format used by save files
The class is not yet used in the wild, but does have a unit test
2023-01-04 19:57:12 -05:00
f6f7cd59dc Make catch a submodule so it can be updated more easily 2022-07-12 20:35:45 -04:00
df631f6c3c fix unit tests 2022-07-12 20:35:45 -04:00
5b2561d034 Disable header maps in Xcode 12 2022-07-12 20:35:41 -04:00
7b93726383 Replace 4-character constants with enums
This covers only the places where they were used to indicate
a preset selection in constructors.

The usage in qdpict where they're actually passed to the Resource Manager,
as well as the 4-character constants representing file types and creator
codes, are still present.
2020-02-21 00:16:58 -05:00
511b1858a3 Fix Windows build and tests 2020-02-02 22:32:33 -05:00
542c037342 Integrate a new resource manager which should have better performance 2020-01-26 11:53:19 -05:00
9691470611 Fix the legacy special tests 2020-01-19 16:26:24 -05:00
699e66a69c Remove obsolete failing test 2019-12-29 13:26:00 -05:00
Michael Bonfils
d940f2c39d Merge branch 'linux' into merge_linux 2018-02-08 20:36:46 +01:00
db6132bb03 Fix MSVC warning in catch.hpp 2017-09-16 12:56:56 -04:00
9127e4a03f Enable building tests in MSVC 2013 2017-09-16 12:46:31 -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
766853d7a4 Fix unit tests 2017-04-11 20:42:25 -04:00
73cfe2bd24 Merge branch 'master' into linux 2017-01-30 14:02:41 -05:00
ultra
dde0212dc4 renamed sounds to match filenames in source (lowercase .wav), fixed up scenario and character editors 2017-01-26 17:17:33 -05:00
8edc156496 Finish tests for converting legacy special nodes 2016-09-29 22:23:17 -04:00
5c095fb284 More tests for importing legacy special nodes
Errors fixed:
- If Cave Lore / Woodsman not converted correctly
- If Have Item Class Equipped erroneously converted to its +take variant
  (...probably)
- Text Response didn't correctly convert the alternate answer
2016-09-26 20:01:05 -04:00
b18605a8ad More tests for converting legacy special nodes
Errors fixed:
- Affect Party Status nodes were erroneously converted to Affect Status instead
2016-09-26 01:53:22 -04:00
1e084fa5af Add more tests for converting legacy specials
Errors fixed:
- Picture forced to 19 for stairway nodes.

(The game actually did this, and also forced to 22 for portals,
but I decided that wasn't necessary to preserve.)
2016-09-25 20:16:24 -04:00
522b51b5a3 More tests for importing legacy specials
Errors fixed:
- One-Time Do Nothing no longer transformed to One-Time And Set
- Give Item dialogs no longer change item type 20 to 9
2016-09-24 23:36:22 -04:00
863ac053c4 Add tests for reading player data from a saved game
- Changed cPlayer::equip to a bitset
- Use a static constant instead of a loop to initialized player starting spells
- Only save spell points if the player has any (current if different from max)
- Symbolic forms for trait enum (and save symbolic forms also for skills)
- When loading a player, clear data which is not always present in the file
- Also add an init test for cPlayer
2016-09-15 17:25:43 -04:00
17eb856771 Add more tests for legacy special node conversion 2016-09-13 19:51:13 -04:00
67fdeb3a16 Add test for loading legacy dialogue
Also a minor enhancement to the Set Flag dialogue node.
2016-09-09 18:09:46 -04:00
bd412a70c8 Add test for importing legacy town data 2016-09-03 15:43:14 -04:00
5cce71df26 Fix several bugs introduced by refactoring 2016-09-03 12:40:48 -04:00
88d6afce27 Merge all the town classes and remove the unimplemented templated towns
This also adds a common superclass shared by towns and outdoor sectors, and
enables towns of arbitrary sizes.
2016-09-03 02:50:29 -04:00
ecdad3f2df Misc minor code cleanup 2016-08-15 12:32:34 -04:00
1330d10b86 Add test for legacy outdoor sector conversion 2016-08-09 13:05:53 -04:00
b5facb5bfe Add test case for loading legacy scenario header data 2016-08-05 15:12:37 -04:00
Ben Scott
a44b298012 fixed some catch.hpp includes in the tests, fixed a deprecated event cast in appleevents.mm 2015-12-22 00:05:52 -05:00