aboutsummaryrefslogtreecommitdiff
path: root/engines/supernova/supernova.h
AgeCommit message (Collapse)Author
2018-01-23SUPERNOVA: Replace a class variable used in a single function by a local ↵Thierry Crozat
variable
2018-01-23SUPERNOVA: Cleanup dialog codeThierry Crozat
The main change consists in using a separate byte array for the sentence removal flags, move some functions from the GameManager to the Room class, and add a few additional functions to manipulate this new array. This allows to clarify some code related to dialogs. This change also allows to switch the _shown array back to a bool array.
2018-01-23SUPERNOVA: Fix some warningsStrangerke
2018-01-23SUPERNOVA: Move object name and description strings to engine data fileThierry Crozat
2018-01-23SUPERNOVA: Start using strings from the engine data fileThierry Crozat
This means that now all that remains to be done to play in English is to move all the strings to the engine data file and to translate them.
2018-01-23SUPERNOVA: Load strings from the supernova.dat fileThierry Crozat
2018-01-23SUPERNOVA: Add getting translated images from the engine data fileThierry Crozat
2018-01-23SUPERNOVA: Clean indentationsThierry Crozat
2018-01-23SUPERNOVA: Improve save state handlingThierry Crozat
The saved game files now start with a header and version which allows to do some sanity check and will allow to change the format in the future if needed. Also the MetaEngine can now be queried for the meta infos of a save state.
2018-01-23SUPERNOVA: Adds text speed variableJoseph-Eugene Winzer
2018-01-23SUPERNOVA: Implements de-/serializationJoseph-Eugene Winzer
WIP. It is currently broken.
2018-01-23SUPERNOVA: Adds engine pauseJoseph-Eugene Winzer
2018-01-23SUPERNOVA: Implements Return To LauncherJoseph-Eugene Winzer
2018-01-23SUPERNOVA: Removes getDOSTicks()Joseph-Eugene Winzer
2018-01-23SUPERNOVA: Extends text renderingJoseph-Eugene Winzer
textWidth() and renderText() are overloaded for handling single uint16 characters (useful when rendering key strokes directly)
2018-01-23SUPERNOVA: Refactors event loopJoseph-Eugene Winzer
2018-01-23SUPERNOVA: Renames charcterWidth() to textWidth()Joseph-Eugene Winzer
2018-01-22SUPERNOVA: Enables renderImage() to render inverse sectionsJoseph-Eugene Winzer
Besides the addition of inverse sections, the 'fullscreen' parameter was removed as it was used only for testing purposes in the beginning.
2018-01-22SUPERNOVA: Implements GUI routines and refactors codeJoseph-Eugene Winzer
Of course the short description does not adequately describe the changes made with this commit and I assume this won't be the last big restructuring unfortunately. Focus of this commit was to implement/fix the code so the main user interface can be rendered. Bugs in the core routines for rendering Messages and Images were fixed as well.
2018-01-22SUPERNOVA: Fixes ScreenBufferStackJoseph-Eugene Winzer
2018-01-22SUPERNOVA: Buffer Music filesJoseph-Eugene Winzer
2018-01-22SUPERNOVA: Implements playSoundMod()Joseph-Eugene Winzer
2018-01-22SUPERNOVA: Converts mouse cursor dataJoseph-Eugene Winzer
2018-01-22SUPERNOVA: Implements rendering of newspaper articlesJoseph-Eugene Winzer
The resolution will change dynamically depending what image is about to be rendered. As there are no other GUI elements shown that depend on the screen resolution when the artciles are rendered, there shouldn't be any problems.
2018-01-22SUPERNOVA: Buffers audio samples on startupJoseph-Eugene Winzer
2018-01-22SUPERNOVA: ReformattingJoseph-Eugene Winzer
Substitute size_t with ScummVM defined uint type
2018-01-22SUPERNOVA: Enables debug console and preload imagesJoseph-Eugene Winzer
2018-01-22SUPERNOVA: RefactoringJoseph-Eugene Winzer
2018-01-22SUPERNOVA: Adds room specific game logicJoseph-Eugene Winzer
This is the game logic for the first act of the game. It will see restructuring to remove gotos/jumps and hardcoded differences in game behavior depending on settings (e.g. sound on/off).
2018-01-22SUPERNOVA: Refactors and adds GameManager functionsJoseph-Eugene Winzer
2018-01-22SUPERNOVA: Changes return type to int for getDOSTicks()Joseph-Eugene Winzer
The maximum return value is 0x1800B0, so easily covered by int (assuming 32bit+ architecture)
2018-01-22SUPERNOVA: Extends renderText()Joseph-Eugene Winzer
Restructures the renderText() function for providing a renderText(text) overload that starts rendering the string where the last call stopped.
2018-01-22SUPERNOVA: Adds further game logic stubsJoseph-Eugene Winzer
Signed-off-by: Joseph-Eugene Winzer <m999@openmailbox.org>
2018-01-22SUPERNOVA: Lifts encapsulation of GameManager ClassJoseph-Eugene Winzer
Room specific logic needs access to functions that currently are unavailable to them. Once no further extension or rearchitecture is rather unlikely, thoughts on encapsulation can be given but for now all members will be made public.
2018-01-22SUPERNOVA: Renames game functionsJoseph-Eugene Winzer
2018-01-22SUPERNOVA: Implements GameManager Class and extension to engineJoseph-Eugene Winzer
An instance of GameManager acts as an interface between the game logic and engine. It provides game specific functions like isHelmetOff() to check if the player wears his helmet. This commit also adds engine extensions like saveScreen() and restoreScreen() that makes use of the ScreenBufferStack class for temporarily saving and restoring sections of the screen. Most of the structure and code is bound to change but gives something to improve on.
2018-01-22SUPERNOVA: Extends screen message systemJoseph-Eugene Winzer
Messages will be 'removable' by over-rendering the message by invoking removeMessage() with what was previously overdrawn. _messageDisplayed might need to be reworked to an int, depending if there are multiple messages rendered simultaneously.
2018-01-22SUPERNOVA: Extends Inventory::get()Joseph-Eugene Winzer
The code added as comments to Inventory::add() is the original code to check if scrolling in inventory is needed and redraw it.
2018-01-22SUPERNOVA: Adds getDOSTicks()Joseph-Eugene Winzer
2018-01-22SUPERNOVA: Adds Container for temporarily storing screen sectionsJoseph-Eugene Winzer
2018-01-22SUPERNOVA: Adds Inventory ClassJoseph-Eugene Winzer
2018-01-22SUPERNOVA: Updates renderImage() functionJoseph-Eugene Winzer
renderImage() now considers the size of image sections instead of blitting them on 320x200 by default.
2018-01-22SUPERNOVA: Setup image and section viewerJoseph-Eugene Winzer
Pressing 'w' increases the image index and 'e' the section index.
2018-01-22SUPERNOVA: Adds an empty ObjectType/ID and RoomIDJoseph-Eugene Winzer
2018-01-22SUPERNOVA: Add palette fade in/outJoseph-Eugene Winzer
2018-01-22SUPERNOVA: add text renderingJoseph-Eugene Winzer
Currently renderText() has two performance drawbacks. First, it locks the screen surface during the whole function for drawing the text directly to it. Besides that, it accesses the pixels in a cache unfriendly way because the font glyphs are stored tilted by 90 degrees. Most likely it won't pose any problems but if it should those issues need to be prioritized.
2018-01-22SUPERNOVA: add characterWidth() functionJoseph-Eugene Winzer
Also did some cleanup on the font definition
2018-01-22SUPERNOVA: add renderBox()Joseph-Eugene Winzer
2018-01-22SUPERNOVA: (TEMP COMMIT) drawing to screen surfaceJoseph-Eugene Winzer
2018-01-22SUPERNOVA: Added basic game loop and play sound samplesJoseph-Eugene Winzer
There has been many other changes like copy/pasting room definitions, skeleton for image decoder, .. Getting supernova mod format support seems to be a good next step.