Commit Graph
71 Commits
Author SHA1 Message Date
Kaloyan Chehlarski 74307deca6 NANCY: Rewrite resource handling
CifFile/CifTree classes have been completely rewritten and
moved to their own header file. ResourceManager is now
exclusively responsible for loading IFF files, making sure
loose .iff/.cif files take precedence before ones embedded
in a ciftree.
Also, completed work on the cif/ciftree exporting functions.
2023-10-26 19:46:32 +03:00
Kaloyan Chehlarski e23b573e7a NANCY: Implement BBallPuzzle
Implemented the action record type responsible for
nancy6's basketball minigame.
2023-10-23 22:32:39 +03:00
Kaloyan Chehlarski cf188ca8fb NANCY: Implement CubePuzzle
Implemented the record type responsible for nancy6's
cube assembly minigame (not to be confused with the
pottery assembly one, which uses a different AR type)
2023-10-17 18:31:08 +03:00
Kaloyan Chehlarski 3551db675d NANCY: Implement AssemblyPuzzle
Implemented the record type responsible for nancy6's
broken pottery assembly minigame.
2023-10-17 18:31:08 +03:00
Kaloyan Chehlarski dc3e14d4fc NANCY: Add MouseFollowObject class
Added a class that combines a certain behavior used by
several puzzles: that of an object that follows the mouse
cursor, but stays within the Viewport's bounds.
2023-10-12 12:42:28 +03:00
Kaloyan Chehlarski d9e0bc954a NANCY: Move inventory-related records
Moved all ActionRecords related to the inventory to their
own source file.
2023-10-03 17:58:28 +03:00
Kaloyan Chehlarski 62ea6f4e21 NANCY: Implement MouseLightPuzzle
Implemented the ActionRecord type responsible for the
nancy6 sequence where the player holds a weak light
(which follows the cursor) in the dark and must use it
to illuminate the path ahead.
2023-10-01 13:20:34 +03:00
Kaloyan Chehlarski 3db0bcbbde NANCY: Implement TwoDialPuzzle
Added support for the TwoDialPuzzle action record, which
is an incredibly simple puzzle with two dials that need to
be rotated in the correct position.
2023-09-30 17:56:27 +03:00
Kaloyan Chehlarski eaf0c56182 NANCY: Implement PeepholePuzzle
Implemented the action record that, despite what its name
suggests, is actually responsible mostly for scrolling text
(e.g. Nancy's journal, the instructions to the Bul minigame).
Introduced in nancy6.
2023-09-23 21:59:40 +03:00
Kaloyan Chehlarski 120160b6e4 NANCY: Implement Autotext
Implemented the Autotext record type, which is used for
text rendering (prior to its introduction in nancy6, all
in-game text was prerendered). Made relevant changes to
the Overlay and Hypertext classes to support it.
2023-09-23 21:59:40 +03:00
Kaloyan Chehlarski fa522ff939 NANCY: Move hypertext handling outside Textbox
Added a separate class for handling hypertext (tagged
text used in conversations, etc) in preparation for the
addition of Autotext, which will also use it.
2023-09-19 17:38:24 +03:00
Kaloyan Chehlarski 11f6f9ec51 NANCY: Implement nancy4 SafeDialPuzzle
Added support for nancy4's sextant puzzle, which uses
a modified SafeDialPuzzle action record. Also renamed the
record, since it was erroneously named SafeLockPuzzle
instead of its actual name.
2023-09-16 13:14:52 +03:00
Kaloyan Chehlarski 2ee8b2cea6 NANCY: Implement MazeChasePuzzle
Added a new action record class implementing a specific
puzzle in nancy5 where a player piece is being chased by
several enemy pieces on a grid.
2023-09-12 19:43:30 +03:00
Kaloyan Chehlarski aecaf3591f NANCY: Reorganize ActionRecords
Moved all puzzle action records to a separate folder. Split
recordtypes.h into three different files, depending on record
function: navigation, sound, and miscellaneous.
2023-09-12 19:43:30 +03:00
Kaloyan Chehlarski b2a3194aad NANCY: Implement CollisionPuzzle
Implemented the record type responsible for the
grid puzzle where pieces slide in four directions until they
hit a wall or another piece.
2023-09-03 18:37:48 +03:00
Kaloyan Chehlarski 13f95f1781 NANCY: Implement SafeLockPuzzle
Implemented the puzzle type responsible for safe locks
with a single dial. First used in nancy3.
2023-09-02 17:24:39 +03:00
Kaloyan Chehlarski a62f7cd7d7 NANCY: Implement TangramPuzzle
Implemented the puzzle type responsible for nancy3's tile
fitting puzzle.
2023-09-02 17:24:39 +03:00
Kaloyan Chehlarski b174006c5b NANCY: Implement TurningPuzzle
Implemented the puzzle type that handles the sun/moon
and staircase spindle puzzles in nancy3.
2023-08-31 12:20:40 +03:00
Kaloyan Chehlarski 1bb5d42a2e NANCY: Implement save prompt on quit
Later games added a prompt to save before quitting, which is now implemented.
2023-08-28 19:53:33 +03:00
Kaloyan Chehlarski f25b6e42a7 NANCY: Implement original load/save menu 2023-08-28 19:53:33 +03:00
Kaloyan Chehlarski 00c7f4d128 NANCY: Implement setup menu
Implemented the Setup menu, which handles game settings.
Also made some fixes to MainMenu.
2023-08-28 19:53:32 +03:00
Kaloyan Chehlarski a7e063e71f NANCY: Partially implement RaycastPuzzle
Added code to support nancy3's raycasted maze minigame.
The minigame (mostly) works but is not yet completable,
and needs further optimization work.
2023-08-06 19:29:10 +03:00
Kaloyan Chehlarski 893545f9bf NANCY: Implement alarm clock
Implemented the SetPlayerClock action record, which
is responsible for the alarm clock introduced in nancy3.
2023-07-14 15:47:34 +03:00
Kaloyan Chehlarski e9779c0c36 NANCY: Implement SoundEqualizerPuzzle
Implemented the SoundEqualizerPuzzle, used for nancy2's
mixing console sequence. Also extended the SoundManager
to accommodate the need to change volume and playback
rate while a sound is playing.
2023-07-13 14:32:46 +03:00
Kaloyan Chehlarski c6164fcf4a NANCY: Improve puzzle data storage and saving
Changed the way game-specific puzzle data is stored and
saved. Scene now holds a HashMap of lazily initialized
PuzzleData objects, each of which stores data for a specific
puzzle type. This helps avoid long switch statements in
the initialization and save/load code, and helps avoid
breaking savefiles every time a new puzzle type
is implemented.
2023-05-07 11:46:35 +03:00
Kaloyan Chehlarski 932e93d714 NANCY: Implement BombPuzzle 2023-05-07 11:46:32 +03:00
Kaloyan Chehlarski 9d18181318 NANCY: Implement SpecialEffect
Implemented the SpecialEffect action record, which
handles crossfading between scenes and fades to black.
2023-04-20 18:00:23 +03:00
Kaloyan Chehlarski fe58d58e27 NANCY: Implement OverrideLockPuzzle
Implemented the OverrideLockPuzzle, which appears at the
very end of nancy2 and has the player remember a
sequence of button presses.
2023-04-19 15:02:32 +03:00
Kaloyan Chehlarski 01de81a7d7 NANCY: Implement RiddlePuzzle
Implemented the RiddlePuzzle action record, where
the player has to type in the answers to several riddles.
2023-04-19 15:02:29 +03:00
Kaloyan Chehlarski 197c2bbd26 NANCY: Implement TowerPuzzle
Implemented the TowerPuzzle action record, which
handles the hanoi tower minigame in nancy2.
2023-04-17 20:27:26 +03:00
Kaloyan Chehlarski 471bcccfe4 NANCY: Implement RippedLetterPuzzle
Implemented the RippedLetterPuzzle action record,
which has the player rearrange torn pieces of a letter.
Added the kRotate cursor type. Added a custom function
for rotating a surface by a right angle.
2023-04-16 15:40:51 +03:00
Kaloyan Chehlarski 76310e9ef9 NANCY: Implement nancy2 Conversation ARs
Implemented the three Conversation action record types
introduced in nancy2. These replace primary video, with
ConversationVideo being just a renamed
PlayPrimaryVideoChan0.
2023-04-14 22:39:09 +03:00
Kaloyan Chehlarski 203d4fa5dc NANCY: Implement Overlay action record
Implemented the Overlay action record, which is the
upgraded version of PlayIntStaticBitmapAnim that appears
from nancy 2 and onward.
2023-04-13 21:20:35 +03:00
Kaloyan Chehlarski e5aa308769 NANCY: Remove custom engine settings dialog
Replaced nancy's custom settings dialog with metaengine's
extra GUI options feature.
2023-04-09 15:52:15 +03:00
Kaloyan Chehlarski e0f74000ef NANCY: Implement structs for some BOOT chunks
Boot chunks BSUM, VIEW, INV, and TBOX are now read only at startup,
and their data is kept permanently inside NancyEngine. This removes the
need for the chunks to be read by multiple classes and always kept
in memory.
2023-03-30 20:21:36 +03:00
Kaloyan Chehlarski 5b9b6b5ba3 NANCY: Implement lightning in TVD endgame
Decoupled lightning from the LightningOn action record and
implemented the logic for it to be activated during the endgame
section of The Vampire Diaries.
2023-03-26 11:44:01 +03:00
Kaloyan Chehlarski 23462c8c83 NANCY: Implement clock
Implemented the clock in The Vampire Diaries.
2023-03-15 18:25:05 +02:00
Kaloyan Chehlarski 9988b3ba43 NANCY: Implement map in The Vampire Diaries 2023-03-15 18:25:01 +02:00
Kaloyan Chehlarski 779e22f4a8 NANCY: Implement LightningOn action record type
Implemented the LightningOn ActionRecord, which changes the
color palette to simulate a lightning flash at randomized intervals.
2023-03-07 21:19:21 +02:00
Kaloyan Chehlarski 5908e0b2d4 NANCY: Add facilities to load nancy.dat
Added functions for loading the data inside nancy.dat. Removed
constants.h and .cpp.
2023-03-03 17:35:57 +02:00
Kaloyan Chehlarski 0a856b9b43 NANCY: Implement The Vampire Diaries UI ornaments
Added the UI ornaments that appear over the viewport and textbox
in The Vampire Diaries.
2023-02-25 19:37:23 +02:00
fracturehill 993f708dd0 NANCY: Don't adjust rects in The Vampire Diaries
readRect() no longer adds a pixel to the right and bottom for
The Vampire Diaries, since rects in that game are non-inclusive.
2021-04-25 00:04:53 +03:00
fracturehill 90c4f0c4dc NANCY: Move hardcoded data
Moved all hardcoded engine data that changes between games (e.g. number
of items, number of event flags) to a dedicated file and added a function for
accessing it in NancyEngine.
2021-04-24 23:59:03 +03:00
fracturehill 6a07442d53 NANCY: Cheat dialogs fixes
Moved CheatDialog and EventFlagDialog to dialogs.h and removed cheat.h. Fixed a crash on closing the event flags dialog. Fixed the timer data in CheatDialog being incorrectly written to the player time. Removed a couple of incorrectly marked translation strings.
2021-04-08 21:47:15 +03:00
fracturehill 68e54edd50 NANCY: Initial main menu implementation
Implemented the original engine's main menu and added an option to enable it from the custom options dialog. Several buttons in the main menu don't work yet since they require implementing additional game states.
2021-04-08 21:42:54 +03:00
fracturehill 9f35d133ca NANCY: Implement sound options, add options dialog
Hooked the engine into ScummVM's speech/subtitle settings, and added two extra options for player and character speech. Added a custom settings dialog which gets shown both inside the Edit Game window and the in-game Settings.
2021-04-08 21:42:53 +03:00
fracturehill 36883885f0 NANCY: Move ActionRecord::finishExecution() outside header file
Added an actionrecord.cpp file and moved the definition of ActionRecord::finishExecution() inside it.
2021-03-24 17:20:46 +01:00
fracturehill e324adf05f NANCY: Code cleanup
Did some cleanup of the engine, mostly focusing on the NancyEngine class. Reordered several classes' members, removed unused functions, edited comments, and renamed arfactory_v1.cpp to arfactory.cpp.
2021-03-24 17:20:46 +01:00
fracturehill 55fe1a5db4 NANCY: Implement credits and WinGame action record
Implemented the WinGame action record, which allows the player to reach the credits after winning, as well as the Credits state itself. Also made some minor changes to Scene and Nancy to accommodate for the addition.
2021-03-24 17:20:46 +01:00
fracturehill 5f35b8abcb NANCY: Implement help screen and UI buttons
The menu and help buttons on the sides of the frame are now functional, and the help screen is now also accessible. Also replaced the Frame class with a more general FullScreenImage that will be used across different game states.
2021-03-24 17:20:46 +01:00