Commit Graph
187 Commits
Author SHA1 Message Date
Joseph-Eugene Winzer 6187e25199 SUPERNOVA: Renames NULL to nullptr 2018-04-15 18:23:11 +01:00
Joseph-Eugene Winzer d963827dbb SUPERNOVA: Renames MSNImageDecoder to MSNImage 2018-04-15 18:23:11 +01:00
Joseph-Eugene Winzer b2dc8d5424 SUPERNOVA: Adds resource abstraction
The resource abstraction includes loading of sound files and cursor
graphics.
2018-04-15 18:22:57 +01:00
Joseph-Eugene Winzer 07f5f34d42 SUPERNOVA: Removes stopAudio() 2018-04-14 11:45:52 +02:00
Joseph-Eugene Winzer 32877639d7 SUPERNOVA: Adds init function to SupernovaEngine 2018-04-14 11:45:52 +02:00
Joseph-Eugene Winzer 26543be637 SUPERNOVA: Adds sound abstraction 2018-04-14 11:45:52 +02:00
Joseph-Eugene Winzer dc38d6a8cd SUPERNOVA: Renames _timer1 to _messageDuration 2018-04-14 11:45:52 +02:00
Joseph-Eugene Winzer ff5426c609 SUPERNOVA: Moves updateEvents() to GameManager
updatEvents() depends on an initalized GameManager instance and mostly
manipulates its state. So it seemed fitting to move it over.
2018-04-14 11:45:52 +02:00
Joseph-Eugene Winzer bb46e53667 SUPERNOVA: Processes all keyboard queries in processInput() 2018-04-14 11:45:52 +02:00
Joseph-Eugene Winzer 80be48c42d SUPERNOVA: Removes redundant keypress check
GameManager::processInput() already does the job
2018-04-14 11:45:52 +02:00
Joseph-Eugene Winzer 392db4ed33 SUPERNOVA: Fixes formatting 2018-03-11 23:25:00 +01:00
Joseph-Eugene Winzer 61fb88ef20 SUPERNOVA: Removes TODO for quitGameDialog() 2018-03-11 23:25:00 +01:00
Joseph-Eugene Winzer 53af82785e SUPERNOVA: Substitues constant strings 2018-03-11 23:25:00 +01:00
Joseph-Eugene Winzer bb9bfcba4a SUPERNOVA: Encapsulates GuiElement
It simplifies the overloaded functions for renderBox/Text and saveScreen
2018-03-11 23:25:00 +01:00
Joseph-Eugene Winzer 7f5cea54e3 SUPERNOVA: Implements original quit prompt 2018-03-11 23:25:00 +01:00
Joseph-Eugene Winzer a38db245ed SUPERNOVA: Fixes formatting
Because of confusion when indentation level is raised and thus tabs or
spaces should be used when aligning code, this commit switches to tabs
to avoid any further confusion.
2018-03-11 23:25:00 +01:00
Joseph-Eugene Winzer 26b5522463 SUPERNOVA: Adds ModeList 2018-01-23 02:15:47 +00:00
Thierry Crozat ac609c91db SUPERNOVA: Make _event a local variable 2018-01-23 02:15:47 +00:00
Joseph-Eugene Winzer dd6df76b32 SUPERNOVA: Initializes RandomSource on stack 2018-01-23 02:15:46 +00:00
Joseph-Eugene Winzer b937268e61 SUPERNOVA: Renames INT32_MAX to kMaxTimerValue
Prevents collision with stdint.h INT32_MAX
2018-01-23 02:15:46 +00:00
Joseph-Eugene Winzer b8b0ae57cc SUPERNOVA: Fixes AudioStream leak 2018-01-23 02:15:46 +00:00
Joseph-Eugene Winzer d68ce6dc07 SUPERNOVA: Changes array to seperate variables 2018-01-23 02:15:46 +00:00
Joseph-Eugene Winzer e40a017962 SUPERNOVA: Fixes segfault if dat file not found 2018-01-23 02:15:46 +00:00
Joseph-Eugene Winzer fa1e93a15e SUPERNOVA: Removes global constructor call
Object() is redundant anyway as it instantiates an Object object and
copies it to nullObject, which was already default constructed.
2018-01-23 02:15:46 +00:00
Joseph-Eugene Winzer 6e7da43889 SUPERNOVA: Introduces INT32_MAX for eventTime 2018-01-23 02:15:44 +00:00
Joseph-Eugene Winzer b6bb1f9709 SUPERNOVA: Corrects max value for int32 2018-01-23 02:15:44 +00:00
Thierry Crozat bc78e613fd SUPERNOVA: Do not try to render INTRO room
This room has no image and this avoids getting a warning
about image file not found.
2018-01-23 02:15:43 +00:00
Thierry Crozat 1b2e4f926c SUPERNOVA: Implement alarm 2018-01-23 02:15:42 +00:00
Thierry Crozat 55fc09571f SUPERNOVA: Fix handling of room brightness
There were several issues with the brighness due to the different
implementation between the original and the code in scummvm. The
code has now been modified to be much closer to the original, which
fixed those issues and allowed to remove workarounds that had been
added in various places to deal with those issues (but those
workarounds had their own issues such as fade in happening too
soon before switching to the new room).
2018-01-23 02:15:41 +00:00
Thierry Crozat 177539ba2e SUPERNOVA: Load images on demand 2018-01-23 02:15:41 +00:00
Thierry Crozat 87ab33a8aa SUPERNOVA: Fix several issues with savegames 2018-01-23 02:15:41 +00:00
Strangerke 7d72ae0d0d SUPERNOVA: Implement errorTempSave() 2018-01-23 02:15:40 +00:00
Thierry Crozat 1759d1ffdd SUPERNOVA: Implement autosave used for dream sequence 2018-01-23 02:15:40 +00:00
Thierry Crozat 888930660a SUPERNOVA: Use setCurrentImage instead of passing the image to renderImage
This is more similar to what the original code does and allows to retire
the renderImage variant that takes an image.
2018-01-23 02:15:40 +00:00
Thierry Crozat 624425077b SUPERNOVA: Add warning when trying to use out of bound file number
This is likely happening, and a comment has also been added to
indicate this. The warning was added to help detect those issue
and so that we don't forgert about it.
2018-01-23 02:15:40 +00:00
Thierry Crozat b11772d904 SUPERNOVA: Fix logic in rendering code
There were several issues fixed by this commit. The main ones are:
 - It was in many places only drawing the first section even for
   images that have multiple sections.
 - It was in some places using the wrong image.

The first issue has been fixed by removing the GameManager::drawImage
function, and moving its logic to SupernovaEngine::renderImage which
was initially only drawing one section, but was nevertheless called
directly from many place.

The second image required more changes to the rendering code to allow
setting the current image file when it is different from the room file.
This fixes some memory issues and random crashes in places where it was
for example trying to use the image -1. This also fixes the rendering
of the flying cutscene.
2018-01-23 02:15:40 +00:00
Thierry Crozat 58cfbb532b SUPERNOVA: Fix room rendering
It could initially access the wrong image to check the number
of section. The code was working fine as long as it had one
section, so there was probably no bad side effect to using
the wrong image (except if it was NULL).
2018-01-23 02:15:40 +00:00
Thierry Crozat 7eb5924f65 SUPERNOVA: Implement text speed dialog
The text speed is also saved in the scummvm.ini file so that
it persists between runs.
2018-01-23 02:15:39 +00:00
Thierry Crozat 529a9c9811 SUPERNOVA: Properly handle timer stop/start 2018-01-23 02:15:39 +00:00
Thierry Crozat b527b54c6f SUPERNOVA: Disable loading and saving during execution of event callbacks 2018-01-23 02:15:39 +00:00
Thierry Crozat 575aef711b SUPERNOVA: Fix updating the palette brightness when the current image has no palette 2018-01-23 02:15:38 +00:00
Thierry Crozat af226daf81 SUPERNOVA: Fix incorrect delay for message display
The delay was not set, meaning the messages were immediately
removed in some cutscenes.
2018-01-23 02:15:38 +00:00
Thierry Crozat 8a8a0b9d38 SUPERNOVA: Implement event callback mechanism and Supernova event 2018-01-23 02:15:38 +00:00
Thierry Crozat 54201327f7 SUPERNOVA: Fix image rendering when removing image
This is mostly used in talk animations and result in bad artefacts.
The issue was a regression introduced in commit e0f6da0.
2018-01-23 02:15:38 +00:00
Thierry Crozat 3f2c0673e4 SUPERNOVA: Do not run animations while a text box is displayed
That is also what the original is doing, and this avoid having
graphical glitches.
2018-01-23 02:15:38 +00:00
Thierry Crozat 8f7dcbe4ac SUPERNOVA: Fix crash when displaying strings larger than the screen 2018-01-23 02:15:37 +00:00
Thierry Crozat 841e7182f2 SUPERNOVA: Reduce memory usage to store sections and simplify code
Each section was store dusing the full image size. Now it only uses the
section size, which should reduce considerably the amout of memory used
for each image.

Also when a section has one or more next section, they were all drawn on
the surface for this section, but then they were drawn again on their own
surface. And while this should not cause any issue, this was really
unnecessary (and prevented optimizing the surface size for each section).
So now this is no longer the case and the surface for a section only
contains this section.
2018-01-23 02:15:37 +00:00
Thierry Crozat 73278c3f9f SUPERNOVA: Replace a class variable used in a single function by a local variable 2018-01-23 02:15:37 +00:00
Thierry Crozat 7bf803f6e6 SUPERNOVA: Cleanup dialog code
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-23 02:15:37 +00:00
Thierry Crozat 15b4e7a298 SUPERNOVA: Fix delay when loading a savedgame while a message is displayed
This required the user to click a mouse button to close the message and
get to the mew state. Now the message is automatically closed before
loading the new state.
2018-01-23 02:15:36 +00:00