Denis Kasak
d37d49e50c
Removed testing hack from Game::init() that displayed the dragon in the upper left corner. Replaced some more instances of magic numbers with kDragonObject. Made Game::init() a bit more readable.
...
svn-id: r42237
2009-07-07 19:53:40 +00:00
Denis Kasak
fd2ab9e3c0
Added enum constant for the dragon object (kDragonObject) and made Script::start() a bit more readable.
...
svn-id: r42236
2009-07-07 19:50:12 +00:00
Denis Kasak
2e552bf643
Stopped running the room init scripts twice.
...
svn-id: r42225
2009-07-07 15:31:13 +00:00
Denis Kasak
7f3af129f2
mplemented changing rooms properly (overlays and objects' animations are deleted before a new room is loaded) and set up a quick demonstration (left click advances to the next room, right click goes back).
...
svn-id: r42224
2009-07-07 15:21:41 +00:00
Denis Kasak
79c42abf08
* Fixed extracting visibility and location of object from its status byte
...
* Added Game::getRoomNum() which returns the current room number
* Made Game::loadRoom() execute the room's startup script, load the room's objects and run their init scripts as well
svn-id: r42194
2009-07-06 19:50:59 +00:00
Denis Kasak
8e341ee968
Renaming Animation -> AnimationManager and AnimObj -> Animation in light of the new API change.
...
svn-id: r42133
2009-07-05 11:52:17 +00:00
Denis Kasak
6c3e9f5151
* API change for Animation and AnimObj; AnimObj is now a proper class and each instance handles its own animation. Animation handles adding, fetching and deleting of AnimObjs (probably needs a namechange).
...
* Implemented actual animation (previously only the first frame was display)
* Implemented animation starting, stoping, looping
* Loaded looping dragon animation as a test
svn-id: r42114
2009-07-05 03:24:46 +00:00
Denis Kasak
960740fe83
Rewrote Sprite::draw() to draw overflowing sprites correctly. Stopped playing animations as soon as they're loaded from Game::loadAnimation().
...
svn-id: r42111
2009-07-04 23:05:13 +00:00
Denis Kasak
b96b434446
* Added Game::init() and moved some functionality from Game::Game to it (loading objects, changing rooms)
...
* Made Game::load*(), Game::getObject() and Game::changeRoom() methods public
* Stopped specifying Z coordinate when creating some Sprites (which I forgot in my previous commit)
svn-id: r42101
2009-07-04 18:35:08 +00:00
Denis Kasak
0888e8a6da
* Split code from Game::changeRoom() into Game::loadRoom() and game::loadOverlays(). Game::changeRoom() now calls them instead.
...
* Added Game::loadAnimation()
* The engine now stores "real" indexes (zero-based) instead of Pascal's because the previous approach was messy.
svn-id: r42092
2009-07-04 15:21:12 +00:00
Denis Kasak
c651d1c2e2
Made Game::changeRoom() clear the overlaysArchive cache when it's done loading overlays.
...
svn-id: r42072
2009-07-03 18:17:05 +00:00
Denis Kasak
1853d594b8
Enabled loading room number 1 as a test.
...
svn-id: r42071
2009-07-03 17:55:28 +00:00
Denis Kasak
4ba1ea8adf
Added support for loading room overlays to Game::changeRoom().
...
svn-id: r42070
2009-07-03 17:54:13 +00:00
Denis Kasak
8bba3e6f10
Added Game::changeRoom() method and Game::_currentRoom.
...
svn-id: r42036
2009-07-02 20:29:14 +00:00
Denis Kasak
cac39d8295
Added rooms and overlays archives.
...
svn-id: r42035
2009-07-02 19:57:09 +00:00
Denis Kasak
be3c0461d6
DraciEngine now opens and stores pointers to essential archives. Changed code that used those archives to use that instead of opening them manually. Replaced BArchive::operator[] functionality with BArchive::getFile() to prevent ugliness when accessing archives via pointers.
...
svn-id: r42031
2009-07-02 16:15:32 +00:00
Denis Kasak
936e5f4c5e
Merged the info available from _objectStatus with the GameObject struct. Made Game keep a list of all the game's objects. Added Game::getObject() method for fetching a pointer to a particular object. Changed Game::loadObject() to not accept a pointer to a GameObject struct anymore.
...
svn-id: r42026
2009-07-02 15:08:42 +00:00
Denis Kasak
138d17bbab
Changed some data members in Draci::GameInfo from uint32 to uint16 (previously I thought that the 'word' type in the original engine was 32 bits). Removed a FIXME concerning struct size mismatch (matches when the previous sentence is taken into account). GameInfo::_numDialogBlocks is now calculated, not read in (it wasn't stored in the data files at all).
...
svn-id: r41966
2009-06-29 22:27:38 +00:00
Denis Kasak
63aa2b7aaf
Account for endianess properly when reading in game variables.
...
svn-id: r41965
2009-06-29 22:20:30 +00:00
Denis Kasak
6a78781889
Added an offset parameter to Script::run() so we can specify where to start the GPL program execution. Also, the init script for the dragon object is now run inside Game::Game().
...
svn-id: r41928
2009-06-28 16:28:16 +00:00
Denis Kasak
f61b2d289d
Changed Script::run() to accept a GPL2Program struct instead of a byte pointer and a length. Also, Script::run() now executes the GPL program until a gplend instruction rather than to the end of the whole program. Modified GameObject according to the new changes.
...
svn-id: r41927
2009-06-28 16:19:10 +00:00
Denis Kasak
d28bbe51bf
Added struct GameObject (such structs are stored in OBJEKTY.DFW and used for in-game objects' info). Added Game::loadObject() for loading such objects into memory. Made Game's constructor load the object for the main hero.
...
svn-id: r41925
2009-06-28 13:10:53 +00:00
Denis Kasak
746e2214ee
Extended Game to load all info from INIT.DFW (general game info, dialog offsets, variables, item status, object status).
...
svn-id: r41908
2009-06-27 05:10:24 +00:00
Denis Kasak
0430939006
Added Game's constructor. Added the Person struct and made Game constructor read in the list of persons from INIT.DFW. Added Game instance to DraciEngine.
...
svn-id: r41907
2009-06-27 01:04:24 +00:00
Denis Kasak
c1644493b8
Added empty Game class.
...
svn-id: r41906
2009-06-26 23:34:06 +00:00