Commit Graph
187 Commits
Author SHA1 Message Date
Thierry Crozat 52952c48a7 SUPERNOVA: Fix displaying image missing last row and last column
This also fixes a crash for single row image sections
2018-01-23 02:15:35 +00:00
Strangerke f0d139d519 SUPERNOVA: Fix some warnings 2018-01-23 02:15:34 +00:00
Thierry Crozat 69d7b91965 SUPERNOVA: Improve interactivity of title screen and intro cutscene
We can now press the mouse button to leave the title screen instead
of having to press a key. Since the mouse cursor was visible, not
being able to press the mouse button was strange. Especially as it
was possible to use the mouse button earlier in the title screen.

Also we can now use the mouse button or any key other than escape
during the cutscene to move to the next sentence. And the code is
more reactive to pressing the Escape key (we don't need to wait
for the current annimation to finish) to exit the cutscene.
2018-01-23 02:15:33 +00:00
Thierry Crozat 7722fe99cd SUPERNOVA: Move object name and description strings to engine data file 2018-01-23 02:15:33 +00:00
Thierry Crozat 184b3a1662 SUPERNOVA: Load strings from the supernova.dat file 2018-01-23 02:15:33 +00:00
Thierry Crozat 65d30cf720 SUPERNOVA: Plug memory leak in MOD music streams 2018-01-23 02:15:32 +00:00
Thierry Crozat d1bdfd2bde SUPERNOVA: Clean indentations 2018-01-23 02:15:32 +00:00
D G Turner ea955675db SUPERNOVA: Fix GCC Warning for Malformed Narrowing Conversions in C++11. 2018-01-23 02:15:32 +00:00
Thierry Crozat 86795f0fa2 SUPERNOVA: Fix clicks at start and end of audio samples
The sound samples start with a 6 bytes header (including the size of
the sample coded on a little endian 16 bits uint on bytes 2 and 3)
and end with 4 bytes set to null. Those were passed to the raw stream,
which resulted in the audible clicks.

Note that we could use the information from the header to load the
sound samples instead of keeping around an array of offset and size.
2018-01-23 02:15:32 +00:00
Thierry Crozat 696fcb6bb9 SUPERNOVA: Add saving/loading of playtime 2018-01-23 02:15:32 +00:00
Thierry Crozat 1cdede12ac SUPERNOVA: Properly handle loading saved game from launcher 2018-01-23 02:15:32 +00:00
Thierry Crozat ed7fa6f7d7 SUPERNOVA: Improve save state handling
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-23 02:15:31 +00:00
Joseph-Eugene Winzer 02290c32b6 SUPERNOVA: Allows saving by default
When saving is not apropriate, for example during cutscenes, explicitly
disable it.
2018-01-23 02:15:30 +00:00
Joseph-Eugene Winzer 749fa6336e SUPERNOVA: Fixes save/load dialog 2018-01-23 02:14:56 +00:00
Joseph-Eugene Winzer a334a4730d SUPERNOVA: Fixes returned constant on load fail 2018-01-23 02:01:00 +00:00
Joseph-Eugene Winzer ea60d1513e SUPERNOVA: Raises save game limit to 99 2018-01-23 02:01:00 +00:00
Joseph-Eugene Winzer 6e33819217 SUPERNOVA: Changes increment size for fade in/out 2018-01-23 02:01:00 +00:00
Joseph-Eugene Winzer b3e23fef13 SUPERNOVA: Fixes mouse events during intro 2018-01-23 02:00:59 +00:00
Joseph-Eugene Winzer 7b4e9a5424 SUPERNOVA: Adds text speed variable 2018-01-23 02:00:59 +00:00
Joseph-Eugene Winzer de539134f9 SUPERNOVA: Removes comments 2018-01-23 02:00:59 +00:00
Joseph-Eugene Winzer 3f68cda2d7 SUPERNOVA: Implements de-/serialization
WIP. It is currently broken.
2018-01-23 01:53:31 +00:00
Joseph-Eugene Winzer ef14dfb7c3 SUPERNOVA: Adds engine pause 2018-01-23 01:53:28 +00:00
Joseph-Eugene Winzer edef2792da SUPERNOVA: Adds RoomID to Rooms
GameManager::airless() determined if the space suit could be taken off
by comparing the current room pointer to the allocated room objects.
This led to indeterministic behavior as sometimes airless() would
falsely return true as the dynamic allocation of the Room objects cannot
be expected to be in a certain order.
Implementing the corresponing RoomID to a Room objects solves this
problem.
2018-01-23 01:52:59 +00:00
Joseph-Eugene Winzer bc43ff820e SUPERNOVA: Ignores mouse clicks while sound is playing 2018-01-23 01:52:59 +00:00
Joseph-Eugene Winzer 18abc4702a SUPERNOVA: Implements Return To Launcher 2018-01-23 01:52:50 +00:00
Joseph-Eugene Winzer 1e36c74e6b SUPERNOVA: Updates TODOs 2018-01-23 01:42:32 +00:00
Joseph-Eugene Winzer b0b682ad09 SUPERNOVA: Removes getDOSTicks() 2018-01-23 01:42:32 +00:00
Joseph-Eugene Winzer eabcca3e89 SUPERNOVA: Adds Alt-X as exit shortcut 2018-01-23 01:33:24 +00:00
Joseph-Eugene Winzer 5845cd7bd2 SUPERNOVA: Fixes rerendering of the room
One sprite can consist of many sections that are concatenated in a
linked list.
2018-01-23 01:33:24 +00:00
Joseph-Eugene Winzer bfa96d6f50 SUPERNOVA: Adds Audio info for rocks 2018-01-23 01:33:12 +00:00
Joseph-Eugene Winzer 172377f093 SUPERNOVA: cleanup 2018-01-23 01:01:18 +00:00
Joseph-Eugene Winzer 30e138dcfa SUPERNOVA: Adds indicator for key presses 2018-01-23 00:29:35 +00:00
Joseph-Eugene Winzer 0fdb3d8d10 SUPERNOVA: Extends text rendering
textWidth() and renderText() are overloaded for handling single uint16
characters (useful when rendering key strokes directly)
2018-01-23 00:29:35 +00:00
Joseph-Eugene Winzer afb873c032 SUPERNOVA: Adjusts game loop delay 2018-01-23 00:29:34 +00:00
Joseph-Eugene Winzer 0462bd0184 SUPERNOVA: Implements animation
The original game's time was stored in 55ms ticks but we just run on
milliseconds. setAnimationTimer() sets the ticks the currrent room's
animation() function will not be called.
2018-01-23 00:29:34 +00:00
Joseph-Eugene Winzer 30c5c85243 SUPERNOVA: Refactors event loop 2018-01-23 00:00:12 +00:00
Joseph-Eugene Winzer 36263aaa0b SUPERNOVA: Fixes font rendering 2018-01-23 00:00:11 +00:00
Joseph-Eugene Winzer e0aa700dac SUPERNOVA: Renames charcterWidth() to textWidth() 2018-01-23 00:00:11 +00:00
Joseph-Eugene Winzer 40c609c40b SUPERNOVA: Adds debugging code for rendering available sections 2018-01-23 00:00:11 +00:00
Joseph-Eugene Winzer c903ede023 SUPERNOVA: Fixes renderRoom() by limiting the section range 2018-01-22 23:54:42 +00:00
Joseph-Eugene Winzer b959453b39 SUPERNOVA: removeMessage() now restores the screen on destruction 2018-01-22 23:54:42 +00:00
Joseph-Eugene Winzer dc12a0fd23 SUPERNOVA: Enables renderImage() to render inverse sections
Besides the addition of inverse sections, the 'fullscreen' parameter was
removed as it was used only for testing purposes in the beginning.
2018-01-22 23:54:41 +00:00
Joseph-Eugene Winzer a8f62802cc SUPERNOVA: Extends Object Class 2018-01-22 23:54:41 +00:00
Joseph-Eugene Winzer 30308fbe8d SUPERNOVA: Implements GUI routines and refactors code
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-22 23:54:26 +00:00
Joseph-Eugene Winzer 87a0dd970a SUPERNOVA: Fixes Message positioning 2018-01-22 23:42:08 +00:00
Joseph-Eugene Winzer 2c17586c76 SUPERNOVA: Fixes parameters passed to fillRect() 2018-01-22 23:42:08 +00:00
Joseph-Eugene Winzer 4a68aef1d6 SUPERNOVA: Fixes ScreenBufferStack 2018-01-22 23:42:08 +00:00
Joseph-Eugene Winzer 84eb970bb9 SUPERNOVA: Fixes endianess issue for drawing cursor 2018-01-22 23:42:08 +00:00
Joseph-Eugene Winzer 11b6227517 SUPERNOVA: Buffer Music files 2018-01-22 23:42:08 +00:00
Joseph-Eugene Winzer 1b220e75e5 SUPERNOVA: Implements playSoundMod() 2018-01-22 23:42:08 +00:00