Implemented a few more harmless GPL2 commands
svn-id: r44958
This commit is contained in:
parent
f71b32dd96
commit
62cebbb51e
4 changed files with 41 additions and 6 deletions
|
@ -219,6 +219,7 @@ void Game::init() {
|
|||
setRoomNum(kNoEscRoom);
|
||||
rememberRoomNumAsPrevious();
|
||||
scheduleEnteringRoomUsingGate(_info._startRoom, 0);
|
||||
_pushedNewRoom = _pushedNewGate = -1;
|
||||
}
|
||||
|
||||
void Game::loop() {
|
||||
|
@ -1426,6 +1427,18 @@ void Game::scheduleEnteringRoomUsingGate(int room, int gate) {
|
|||
_newGate = gate;
|
||||
}
|
||||
|
||||
void Game::pushNewRoom() {
|
||||
_pushedNewRoom = _newRoom;
|
||||
_pushedNewGate = _newGate;
|
||||
}
|
||||
|
||||
void Game::popNewRoom() {
|
||||
if (_loopStatus != kStatusInventory && _pushedNewRoom >= 0) {
|
||||
scheduleEnteringRoomUsingGate(_pushedNewRoom, _pushedNewGate);
|
||||
_pushedNewRoom = _pushedNewGate = -1;
|
||||
}
|
||||
}
|
||||
|
||||
void Game::setLoopStatus(LoopStatus status) {
|
||||
_loopStatus = status;
|
||||
}
|
||||
|
|
|
@ -281,6 +281,8 @@ public:
|
|||
int getPreviousRoomNum() const;
|
||||
void rememberRoomNumAsPrevious();
|
||||
void scheduleEnteringRoomUsingGate(int room, int gate);
|
||||
void pushNewRoom();
|
||||
void popNewRoom();
|
||||
|
||||
double getPers0() const;
|
||||
double getPersStep() const;
|
||||
|
@ -371,6 +373,8 @@ private:
|
|||
int _newRoom;
|
||||
int _newGate;
|
||||
int _previousRoom;
|
||||
int _pushedNewRoom; // used in GPL programs
|
||||
int _pushedNewGate;
|
||||
|
||||
uint *_dialogueOffsets;
|
||||
int _currentDialogue;
|
||||
|
|
|
@ -70,9 +70,9 @@ void Script::setupCommandList() {
|
|||
{ 15, 1, "ExecInit", 1, { 3 }, &Script::execInit },
|
||||
{ 15, 2, "ExecLook", 1, { 3 }, &Script::execLook },
|
||||
{ 15, 3, "ExecUse", 1, { 3 }, &Script::execUse },
|
||||
{ 16, 1, "RepaintInventory", 0, { 0 }, NULL },
|
||||
{ 16, 2, "ExitInventory", 0, { 0 }, NULL },
|
||||
{ 17, 1, "ExitMap", 0, { 0 }, NULL },
|
||||
{ 16, 1, "RepaintInventory", 0, { 0 }, NULL }, // not used in the original game files
|
||||
{ 16, 2, "ExitInventory", 0, { 0 }, NULL }, // not used in the original game files
|
||||
{ 17, 1, "ExitMap", 0, { 0 }, NULL }, // not used in the original game files
|
||||
{ 18, 1, "LoadMusic", 1, { 2 }, NULL },
|
||||
{ 18, 2, "StartMusic", 0, { 0 }, NULL },
|
||||
{ 18, 3, "StopMusic", 0, { 0 }, NULL },
|
||||
|
@ -87,9 +87,12 @@ void Script::setupCommandList() {
|
|||
{ 22, 2, "EnableQuickHero", 0, { 0 }, NULL },
|
||||
{ 23, 1, "DisableSpeedText", 0, { 0 }, NULL },
|
||||
{ 23, 2, "EnableSpeedText", 0, { 0 }, NULL },
|
||||
{ 24, 1, "QuitGame", 0, { 0 }, NULL },
|
||||
{ 25, 1, "PushNewRoom", 0, { 0 }, NULL },
|
||||
{ 25, 2, "PopNewRoom", 0, { 0 }, NULL },
|
||||
{ 24, 1, "QuitGame", 0, { 0 }, &Script::quitGame },
|
||||
{ 25, 1, "PushNewRoom", 0, { 0 }, &Script::pushNewRoom },
|
||||
{ 25, 2, "PopNewRoom", 0, { 0 }, &Script::popNewRoom },
|
||||
// The following commands are not even defined in the game
|
||||
// sources, but their numbers are allocated for internal
|
||||
// purposes of the old player.
|
||||
{ 26, 1, "ShowCheat", 0, { 0 }, NULL },
|
||||
{ 26, 2, "HideCheat", 0, { 0 }, NULL },
|
||||
{ 26, 3, "ClearCheat", 1, { 1 }, NULL },
|
||||
|
@ -823,6 +826,18 @@ void Script::endCurrentProgram() {
|
|||
_endProgram = true;
|
||||
}
|
||||
|
||||
void Script::quitGame(Common::Queue<int> ¶ms) {
|
||||
_vm->_game->setQuit(true);
|
||||
}
|
||||
|
||||
void Script::pushNewRoom(Common::Queue<int> ¶ms) {
|
||||
_vm->_game->pushNewRoom();
|
||||
}
|
||||
|
||||
void Script::popNewRoom(Common::Queue<int> ¶ms) {
|
||||
_vm->_game->popNewRoom();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Evaluates mathematical expressions
|
||||
* @param reader Stream reader set to the beginning of the expression
|
||||
|
|
|
@ -133,6 +133,9 @@ private:
|
|||
void setPalette(Common::Queue<int> ¶ms);
|
||||
void blackPalette(Common::Queue<int> ¶ms);
|
||||
void loadPalette(Common::Queue<int> ¶ms);
|
||||
void quitGame(Common::Queue<int> ¶ms);
|
||||
void pushNewRoom(Common::Queue<int> ¶ms);
|
||||
void popNewRoom(Common::Queue<int> ¶ms);
|
||||
|
||||
int operAnd(int op1, int op2) const;
|
||||
int operOr(int op1, int op2) const;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue