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
Joseph-Eugene Winzer
ef1bbce68e
SUPERNOVA: Buffers sections of image on init
2018-01-22 23:42:08 +00:00
Joseph-Eugene Winzer
1ae1134706
SUPERNOVA: Converts mouse cursor data
2018-01-22 23:42:08 +00:00
Joseph-Eugene Winzer
9e21dc42ee
SUPERNOVA: Implements rendering of newspaper articles
...
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-22 23:42:08 +00:00
Joseph-Eugene Winzer
cd080b820a
SUPERNOVA: Buffers audio samples on startup
2018-01-22 23:42:08 +00:00
Joseph-Eugene Winzer
6c4768a051
SUPERNOVA: Reformatting
...
Substitute size_t with ScummVM defined uint type
2018-01-22 23:42:07 +00:00
Joseph-Eugene Winzer
018cff8c42
SUPERNOVA: Enables debug console and preload images
2018-01-22 23:42:07 +00:00
Joseph-Eugene Winzer
5ebe90a45e
SUPERNOVA: Implements loading of newspaper images
...
While the 640x480 images are loaded correctly, they are displayed
cropped to 320x240, the default resolution.
2018-01-22 23:42:02 +00:00
Joseph-Eugene Winzer
be5f3a6319
SUPERNOVA: Fixes file name creation
2018-01-22 23:40:38 +00:00
Joseph-Eugene Winzer
29021aa7dd
SUPERNOVA: Refactoring
2018-01-22 23:40:27 +00:00
Joseph-Eugene Winzer
7da3ab2611
SUPERNOVA: Enables rendering of debug console
2018-01-22 23:34:50 +00:00
Joseph-Eugene Winzer
932b3669d3
SUPERNOVA: Adds room specific game logic
...
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-22 23:34:49 +00:00
Joseph-Eugene Winzer
e6802ed633
SUPERNOVA: Refactoring
2018-01-22 23:34:49 +00:00
Joseph-Eugene Winzer
74b822c220
SUPERNOVA: Refactors and adds GameManager functions
2018-01-22 23:34:49 +00:00
Joseph-Eugene Winzer
f2e3a4d9c4
SUPERNOVA: Changes return type to int for getDOSTicks()
...
The maximum return value is 0x1800B0, so easily covered by int
(assuming 32bit+ architecture)
2018-01-22 23:34:49 +00:00
Joseph-Eugene Winzer
534bd38370
SUPERNOVA: Extends renderText()
...
Restructures the renderText() function for providing a renderText(text)
overload that starts rendering the string where the last call stopped.
2018-01-22 23:34:49 +00:00
Joseph-Eugene Winzer
8f5e712df0
SUPERNOVA: Adds further game logic stubs
...
Signed-off-by: Joseph-Eugene Winzer <m999@openmailbox.org >
2018-01-22 23:34:49 +00:00
Joseph-Eugene Winzer
fbcb3d3203
SUPERNOVA: Renames game functions
2018-01-22 23:34:49 +00:00
Joseph-Eugene Winzer
e00e93ed4d
SUPERNOVA: Implements GameManager Class and extension to engine
...
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-22 23:34:39 +00:00
Joseph-Eugene Winzer
e534581e62
SUPERNOVA: Extends screen message system
...
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-22 23:32:46 +00:00
Joseph-Eugene Winzer
5c706dfb59
SUPERNOVA: Extends Inventory::get()
...
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-22 23:32:32 +00:00
Joseph-Eugene Winzer
8a45d56630
SUPERNOVA: Adds getDOSTicks()
2018-01-22 23:29:44 +00:00
Joseph-Eugene Winzer
4f3f231afd
SUPERNOVA: Adds Container for temporarily storing screen sections
2018-01-22 23:29:35 +00:00
Joseph-Eugene Winzer
f2e51c3cfe
SUPERNOVA: Adds hasProperty() for Objects and bit ops
2018-01-22 23:08:39 +00:00
Joseph-Eugene Winzer
f4eb7cbfc5
SUPERNOVA: Adds Inventory Class
2018-01-22 23:08:39 +00:00
Joseph-Eugene Winzer
42af582e4c
SUPERNOVA: Substitutes magic numbers with symbols
2018-01-22 23:08:39 +00:00
Joseph-Eugene Winzer
f3656ecce9
SUPERNOVA: Adds methods for alterting Object state
2018-01-22 23:08:31 +00:00
Joseph-Eugene Winzer
e2122bddf1
SUPERNOVA: Updates renderImage() function
...
renderImage() now considers the size of image sections instead of
blitting them on 320x200 by default.
2018-01-22 22:59:48 +00:00
Joseph-Eugene Winzer
d55ef4045e
SUPERNOVA: Setup image and section viewer
...
Pressing 'w' increases the image index and 'e' the section index.
2018-01-22 22:59:27 +00:00
Joseph-Eugene Winzer
8e55efa748
SUPERNOVA: Fix OOB write in paletteBrightness()
...
Palette color 255 doesn't seem to be used
2018-01-22 21:16:37 +00:00
Joseph-Eugene Winzer
0c72f52ad8
SUPERNOVA: Add palette fade in/out
2018-01-22 21:16:27 +00:00
Joseph-Eugene Winzer
c0b8b50ec6
SUPERNOVA: add text rendering
...
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-22 19:31:42 +00:00
Joseph-Eugene Winzer
e7252018e8
SUPERNOVA: add characterWidth() function
...
Also did some cleanup on the font definition
2018-01-22 19:31:42 +00:00
Joseph-Eugene Winzer
332763e825
SUPERNOVA: add renderBox()
2018-01-22 19:31:42 +00:00
Joseph-Eugene Winzer
9b4bade4f6
SUPERNOVA: fix palette corruption on decoding
2018-01-22 19:31:39 +00:00
Joseph-Eugene Winzer
ec0d557697
SUPERNOVA: (TEMP COMMIT) drawing to screen surface
2018-01-22 19:30:54 +00:00