Denis Kasak
100603e683
Fixed Script::walkOnPlay() (was setting loop status whereas it was substatus that needed to be set).
...
svn-id: r43297
2009-08-12 01:03:54 +00:00
Denis Kasak
ee7b9271a2
Implemented GPL command WalkOnPlay.
...
svn-id: r43255
2009-08-11 04:18:14 +00:00
Denis Kasak
0daad90685
Fix intro crash because of bug in the data files.
...
svn-id: r43254
2009-08-11 04:14:38 +00:00
Denis Kasak
51cc821619
Added dialogue support.
...
svn-id: r43253
2009-08-11 04:03:22 +00:00
Denis Kasak
b9a9a5ef88
Implemented GPL function Script::funcObjStat().
...
svn-id: r43176
2009-08-09 16:58:04 +00:00
Denis Kasak
f68ceeb88c
* Implemented GPL functions Script::funcActIco() and Script::funcIsIcoAct().
...
* Implemented GPL commands Script::loadMap() and Script::roomMap().
* Added temporary HACK to change some speech texts to use the small font because some strings overflow the screen (as stored in the data files).
svn-id: r43161
2009-08-09 04:12:36 +00:00
Denis Kasak
18b5d7ce33
Implemented Script::testExpression().
...
svn-id: r43129
2009-08-08 15:55:19 +00:00
Denis Kasak
907a35c929
Added ability to end the currently executing GPL program before it finishes via Script::endCurrentProgram().
...
svn-id: r43086
2009-08-06 07:40:14 +00:00
Denis Kasak
88276e91d9
Fixed second call to Surface::centerOnX() (should have been centerOnY()).
...
svn-id: r43058
2009-08-05 00:05:36 +00:00
Denis Kasak
d3412ea3a4
Refactored Script::talk() to use the new centering methods.
...
svn-id: r43052
2009-08-04 19:09:41 +00:00
Denis Kasak
96744e42c7
Fixed bug in the math expression evaluator; when evaluating operators, operands were being popped from the stack in the wrong order.
...
svn-id: r43019
2009-08-03 01:06:13 +00:00
Denis Kasak
6bd1cfa1bd
Implemented the Talk GPL command.
...
svn-id: r42992
2009-08-02 05:12:42 +00:00
Denis Kasak
18a8b5b3af
* Added Game::runGateProgram()
...
* Added a separate mechanism to Game to keep track both of the current room number and the next room/gate. Periodically, I check whether the new room differs from the old one and, if it does, I do the change. Doing it any other would is nearly impossible because of the way the original scripts were written.
* Added GPL command Script::newRoom(). Rooms can now be traversed by clicking on their exits. Also, the intro animation partly works. Some parts go by far too soon. I assume this is because the engine still lacks a dialogue GPL command.
* Fixed bug where the gates array of a room was not cleared between uses.
* Save old jump value when we enter Script::run() and restore it in the end (mimicking the original engine).
* Fixed small bug where the gate was supposed to be stored as the first in-game variable and not the room number.
svn-id: r42957
2009-07-31 04:32:33 +00:00
Denis Kasak
6ed99df75a
Removed some garbage I accidentally pasted into a comment.
...
svn-id: r42909
2009-07-29 20:42:55 +00:00
Denis Kasak
ad752b268b
* Removed some code I forgot to remove in Game::startPlay() (a call to AnimationManager::play())
...
* Fixed logic checking for object visibility in various GPL commands (I originally misinterpreted the original engine code).
svn-id: r42908
2009-07-29 20:41:53 +00:00
Denis Kasak
393cd99a62
* Implemented the StartPlay and Play GPL commands properly
...
* Changed Script::load() to use the new animation callbacks
svn-id: r42902
2009-07-29 19:41:30 +00:00
Denis Kasak
dd9303d27e
* Implemented GPL function ActPhase (as Script::funcActPhase())
...
* Trivial implementation of the Play GPL command
* Fixed Script::load() to load animation IDs to objects in increasing order (needed by funcActPhase())
svn-id: r42874
2009-07-29 01:02:50 +00:00
Denis Kasak
20baaf93f5
* Moved walking code to Game::walkHero().
...
* Implemented WalkOn GPL command.
* Temporarily remaped StayOn and WalkOnPlay to WalkOn (for testing).
svn-id: r42735
2009-07-25 04:36:43 +00:00
Denis Kasak
ceb9f18132
Made Script::run() manually mark the last animation index before it executes a program. This is done to prevent Release wreaking havoc if it is unpaired (i.e. if the script forgot to call a Mark first).
...
svn-id: r42733
2009-07-25 03:41:28 +00:00
Denis Kasak
ed59a12d53
Implemented ExecUse, ExecLook and ExecInit GPL commands.
...
svn-id: r42732
2009-07-25 03:37:22 +00:00
Denis Kasak
d28658984d
* Added DraciEngine::_initArchive and made Game use it. Fixes a memory bug because Game uses pointers from the init archive which should outlive it (but didn't previously).
...
* Added support for setting loop status to Game.
* Made some GPL commands check whether we are in the correct loop status before executing.
svn-id: r42731
2009-07-25 03:28:04 +00:00
Denis Kasak
b7e97efb7f
* Added handlers for the ObjStat and ObjStat_On GPL commands
...
* Removed temporary hack I accidentally committed
svn-id: r42730
2009-07-25 02:23:00 +00:00
Denis Kasak
5faceb595f
Temporary mapped GPL command StartPlay to handler for Start and reenabled gates' scripts (for added effects and testing).
...
svn-id: r42684
2009-07-24 05:07:27 +00:00
Denis Kasak
c1ad0c3926
* Added tracking and deleting animations by index (which represents the order in which they were loaded). This is needed by some GPL commands.
...
* Added Game::getNumObjects() which returns the number of objects in the game
* Fixed segfault (accessing a null Animation *)
* Added some docs to various things
svn-id: r42683
2009-07-24 05:00:53 +00:00
Denis Kasak
e419110569
* Added Game::loop()
...
* Added WalkingMap::isWalkable()
* Renamed remaining _priority identifiers to _z which were left by mistake in the previous commit
svn-id: r42546
2009-07-17 00:20:57 +00:00
Denis Kasak
ffffc1bea4
* Changed Game members _numMasks, _init, _look, _use and _canUse from uint16 to int
...
* Modified Game::loadRoom to load gates and execute their scripts
* The first room loaded is now Game::_info._startRoom instead of 0
* Fixed reading of _pers0 and _persStep from the data files (they are 6 instead of 12 bytes)
* Added more debug info to Script and Game
svn-id: r42515
2009-07-15 19:06:24 +00:00
Denis Kasak
04e4bfdbbe
* Implemented the following GPL functions: IsIcoOn, IcoStat, IsObjOn, IsObjOff, IsObjAway
...
* Changed GameObject::_location to an int since we sometimes use location -1.
* Some more uint <-> int changes to prevent comparisons between signed and unsigned.
svn-id: r42452
2009-07-13 19:53:53 +00:00
Denis Kasak
a41d36de0f
Fixed bug in the GPL math evaluator (GPL function results were not pushed onto the evaluation stack).
...
svn-id: r42424
2009-07-12 18:55:44 +00:00
Denis Kasak
6b2991f488
Made Script::run() seek in SEEK_CUR mode when jumping instead of the default SEEK_SET. It also now checks whether there is a non-zero jump value set before doing the jump.
...
svn-id: r42254
2009-07-08 06:14:17 +00:00
Denis Kasak
d8c33f6836
* Implemented GPL jumps
...
* Implemented c_If, c_Goto and c_Let opcodes
* Changed the interpreter to work with signed ints instead of uints (the interpreter uses negative values sometimes)
* Fixed documentation of Script::run() which said it is a disassembler (forgot to change it earlier)
svn-id: r42249
2009-07-08 00:34:53 +00:00
Denis Kasak
dd955bb08e
* Made Game::_variables private and, instead, added Game::{get,set}Variable() methods.
...
* Removed obsolete comment about the cyclic field not being used in Game::loadAnimation()
svn-id: r42246
2009-07-07 21:30:36 +00:00
Denis Kasak
bab9293f97
Implementend F_Not GPL function.
...
svn-id: r42245
2009-07-07 21:24:39 +00:00
Denis Kasak
586af0ab42
* From Game::GameObject removed the following _idxSeq, _numSeq, _animObj, _seqTab (not used anymore), added Common::Array<int> _anims.
...
* Handled cylic animations properly
* Handled the Z coordinate properly
svn-id: r42244
2009-07-07 21:18:28 +00:00
Denis Kasak
b6b1402368
* Changed Game::_variables to public since the GPL interpreter needs to use it and made it int instead of uint16
...
* Implemented variable accessing by the math evaluator
* Fixed bug from previous commit (should have used && when checking for ending instructions, not ||)
svn-id: r42242
2009-07-07 20:57:14 +00:00
Denis Kasak
318d406242
Made GPL interpreter exit on both gplend and exit instructions.
...
svn-id: r42241
2009-07-07 20:46:26 +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
3b75b8003d
Removed two variables that were committed by mistake.
...
svn-id: r42193
2009-07-06 19:43:21 +00:00
Denis Kasak
b2c24dd640
Implemented Script::funcRandom (GPL function).
...
svn-id: r42191
2009-07-06 19:26:53 +00:00
Denis Kasak
edaaca97f9
Set up GPL functions properly (the math evaluator now calls the handler if its implemented).
...
svn-id: r42188
2009-07-06 18:49:51 +00:00
Denis Kasak
237707dd6e
Fixed bug where the GPL interpreter left parameters from previous commands on the stack.
...
svn-id: r42185
2009-07-06 17:29:44 +00:00
Denis Kasak
4e15262e74
Implemented Script::play() GPL opcode.
...
svn-id: r42184
2009-07-06 17:27:12 +00:00
Denis Kasak
f4ba64d2e4
Implemented GPL operators.
...
svn-id: r42183
2009-07-06 17:25:34 +00:00
Denis Kasak
fdf9eb84d6
Implemented handler for the Load instruction. Removed Script::dummy().
...
svn-id: r42102
2009-07-04 18:36:45 +00:00
Denis Kasak
885ce59ce8
Restructured Script so I can start adding callbacks to GPL commands (added DraciEngine * member to Script, added Script::setupCommandList() which initialises the command list array, added Script::dummy() callback for the Load command for testing).
...
svn-id: r42090
2009-07-04 14:48:36 +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
4c524f5e0a
Renamed Script::gpldisasm() to Script::run().
...
svn-id: r41920
2009-06-27 15:19:03 +00:00
Denis Kasak
97dde5e1ed
Put all GPL interpreter related routines inside a Script class.
...
svn-id: r41919
2009-06-27 15:17:26 +00:00
Denis Kasak
2e30fae261
Renamed gpldisasm.* to script.* in anticipation of using it as a script intepreter.
...
svn-id: r41918
2009-06-27 15:00:14 +00:00