diff options
-rw-r--r-- | queen/command.cpp | 11 | ||||
-rw-r--r-- | queen/cutaway.cpp | 19 | ||||
-rw-r--r-- | queen/cutaway.h | 2 | ||||
-rw-r--r-- | queen/debug.cpp | 15 | ||||
-rw-r--r-- | queen/graphics.cpp | 31 | ||||
-rw-r--r-- | queen/graphics.h | 2 | ||||
-rw-r--r-- | queen/input.h | 8 | ||||
-rw-r--r-- | queen/journal.cpp | 3 | ||||
-rw-r--r-- | queen/logic.cpp | 35 | ||||
-rw-r--r-- | queen/sound.cpp | 3 | ||||
-rw-r--r-- | queen/state.cpp | 9 | ||||
-rw-r--r-- | queen/talk.cpp | 90 | ||||
-rw-r--r-- | queen/talk.h | 8 | ||||
-rw-r--r-- | queen/walk.cpp | 24 | ||||
-rw-r--r-- | queen/xref.txt | 4 |
15 files changed, 50 insertions, 214 deletions
diff --git a/queen/command.cpp b/queen/command.cpp index 861f7628d6..45366f69d3 100644 --- a/queen/command.cpp +++ b/queen/command.cpp @@ -613,18 +613,11 @@ void Command::grabSelectedItem() { } void Command::grabSelectedNoun() { - // if the NOUN has been selected from screen then it is positive - // otherwise it has been selected from inventory and is negative - // set PARSE to TRUE, default FALSE if command half complete - // click object without a command, if DEFAULT then - // do that, otherwise do a WALK! - ObjectData *od = findObjectData(_state.noun); if (od == NULL || od->name <= 0) { // selected a turned off object, so just walk clear(true); _state.noun = 0; -// _vm->logic()->newRoom(0); _vm->logic()->joeWalk(JWM_EXECUTE); return; } @@ -633,15 +626,12 @@ void Command::grabSelectedNoun() { if (_mouseKey == Input::MOUSE_LBUTTON) { if ((_state.commandLevel != 2 && _state.action == VERB_NONE) || (_state.commandLevel == 2 && _parse)) { - // action2 > 0 only if command has been constructed - // lmb pressed, just walk _state.verb = VERB_WALK_TO; _state.action = VERB_WALK_TO; _cmdText.setVerb(VERB_WALK_TO); } } else if (_mouseKey == Input::MOUSE_RBUTTON) { if (_cmdText.isEmpty()) { - // Ensures that Right Mkey will select correct default _state.verb = State::findDefaultVerb(od->state); _state.selAction = (_state.verb == VERB_NONE) ? VERB_WALK_TO : _state.verb; _cmdText.setVerb(_state.selAction); @@ -906,7 +896,6 @@ void Command::openOrCloseAssociatedObject(Verb action, int16 otherObj) { if (cmdList->match(action, otherObj, 0)) { if (cmdList->setConditions) { CmdGameState *cmdGs = _cmdGameState; - warning("Command::openOrCloseAssociatedObject() setConditions slot=%d", cmdGs[i].gameStateSlot); uint16 j; for (j = 1; j <= _numCmdGameState; ++j) { if (cmdGs[j].id == i && cmdGs[j].gameStateSlot > 0) { diff --git a/queen/cutaway.cpp b/queen/cutaway.cpp index 1b0c760b5b..e0d26e992c 100644 --- a/queen/cutaway.cpp +++ b/queen/cutaway.cpp @@ -345,11 +345,6 @@ void Cutaway::changeRooms(CutawayObject &object) { } } - /*debug(6, "Person '%s' (%i) is %s", - _vm->logic()->objectName(objectData->name), - objectData->name, - on ? "on" : "off");*/ - if (on) { // It is needed, so ensure it's ON objectData->name = ABS(objectData->name); @@ -668,10 +663,6 @@ byte *Cutaway::handleAnimation(byte *ptr, CutawayObject &object) { // Unpack animation, but do not unpack moving people if (!((objAnim[i].mx > 0 || objAnim[i].my > 0) && inRange(objAnim[i].object, 1, 3))) { - /*debug(6, "Animation - bankUnpack(%i, %i, %i);", - objAnim[i].unpackFrame, - objAnim[i].originalFrame, - objAnim[i].bank);*/ _vm->bankMan()->unpack( objAnim[i].unpackFrame, objAnim[i].originalFrame, @@ -773,7 +764,7 @@ void Cutaway::handlePersonRecord( _vm->walk()->movePerson( &p, object.moveToX, object.moveToY, - _currentImage + 1, // XXX CI+1 + _currentImage + 1, _vm->logic()->objectData(object.objectNumber)->image ); } @@ -1133,9 +1124,7 @@ void Cutaway::stop() { } if (joeRoom == _temporaryRoom && - joeRoom != 37 && // XXX hard coded room number - joeRoom != 105 && // XXX hard coded room number - joeRoom != 106 && // XXX hard coded room number + joeRoom != 37 && joeRoom != 105 && joeRoom != 106 && (joeX || joeY)) { BobSlot *joeBob = _vm->graphics()->bob(0); @@ -1175,8 +1164,6 @@ void Cutaway::updateGameState() { if (update) { - // Show or hide an object - if (objectIndex > 0) { // Show the object ObjectData *objectData = _vm->logic()->objectData(objectIndex); objectData->name = ABS(objectData->name); @@ -1209,7 +1196,6 @@ void Cutaway::updateGameState() { } // for() } -// XXX this function could probably be useful at other places too static char *right(char *str, int count) { // This function does _not_ use static data (the implementation in talk.c does!) int length = strlen(str); @@ -1239,7 +1225,6 @@ void Cutaway::talk(char *nextFilename) { } int Cutaway::makeComplexAnimation(int16 currentImage, Cutaway::CutawayAnim *objAnim, int frameCount) { - // function MAKE_COMPLEX_ANIM, lines 816-883 in cutaway.c int frameIndex[256]; int i; int bobNum = objAnim[0].object; diff --git a/queen/cutaway.h b/queen/cutaway.h index 5c44a731a5..04d2c236ee 100644 --- a/queen/cutaway.h +++ b/queen/cutaway.h @@ -237,7 +237,7 @@ class Cutaway { CutawayObject &object, const char *sentence); - //! Restore QueenLogic::_objectData from _personData + //! Restore Logic::_objectData from _personData void restorePersonData(); //! Stop the cutaway diff --git a/queen/debug.cpp b/queen/debug.cpp index 81e75ba194..c718275bce 100644 --- a/queen/debug.cpp +++ b/queen/debug.cpp @@ -35,7 +35,6 @@ namespace Queen { - Debugger::Debugger(QueenEngine *vm) : _drawAreas(false), _vm(vm) { @@ -52,24 +51,18 @@ Debugger::Debugger(QueenEngine *vm) DCmd_Register("song", &Debugger::Cmd_Song); } - void Debugger::preEnter() { - // XXX mute all sounds } - void Debugger::postEnter() { - // XXX un-mute all sounds _vm->graphics()->setupMouseCursor(); } - bool Debugger::Cmd_Exit(int argc, const char **argv) { _detach_now = true; return false; } - bool Debugger::Cmd_Help(int argc, const char **argv) { // console normally has 39 line width // wrap around nicely @@ -91,7 +84,6 @@ bool Debugger::Cmd_Help(int argc, const char **argv) { return true; } - bool Debugger::Cmd_Asm(int argc, const char **argv) { if (argc == 2) { uint16 sm = atoi(argv[1]); @@ -103,14 +95,12 @@ bool Debugger::Cmd_Asm(int argc, const char **argv) { return true; } - bool Debugger::Cmd_Areas(int argc, const char **argv) { _drawAreas = !_drawAreas; DebugPrintf("Room areas display %s\n", _drawAreas ? "on" : "off"); return true; } - bool Debugger::Cmd_Bob(int argc, const char **argv) { if (argc >= 3) { int bobNum = atoi(argv[1]); @@ -144,7 +134,6 @@ bool Debugger::Cmd_Bob(int argc, const char **argv) { return true; } - bool Debugger::Cmd_GameState(int argc, const char **argv) { uint16 slot; switch (argc) { @@ -167,14 +156,12 @@ bool Debugger::Cmd_GameState(int argc, const char **argv) { return true; } - bool Debugger::Cmd_Info(int argc, const char **argv) { DebugPrintf("Version: %s\n", _vm->resource()->JASVersion()); DebugPrintf("Audio compression: %d\n", _vm->resource()->compression()); return true; } - bool Debugger::Cmd_Items(int argc, const char **argv) { int n = _vm->logic()->itemDataCount(); ItemData *item = _vm->logic()->itemData(1); @@ -186,7 +173,6 @@ bool Debugger::Cmd_Items(int argc, const char **argv) { return true; } - bool Debugger::Cmd_PrintBobs(int argc, const char**argv) { int i; BobSlot *bob = _vm->graphics()->bob(0); @@ -204,7 +190,6 @@ bool Debugger::Cmd_PrintBobs(int argc, const char**argv) { return true; } - bool Debugger::Cmd_Room(int argc, const char **argv) { if (argc == 2) { uint16 roomNum = atoi(argv[1]); diff --git a/queen/graphics.cpp b/queen/graphics.cpp index e845b4e6c8..d16889dc63 100644 --- a/queen/graphics.cpp +++ b/queen/graphics.cpp @@ -163,6 +163,16 @@ void BobSlot::animNormal(uint16 firstFrame, uint16 lastFrame, uint16 spd, bool r xflip = flip; } +void BobSlot::scaleWalkSpeed(uint16 ms) { + if (!xmajor) { + ms /= 2; + } + speed = scale * ms / 100; + if (speed == 0) { + speed = 1; + } +} + void BobSlot::clear() { active = false; xflip = false; @@ -423,14 +433,10 @@ void Graphics::setBobText( const char *text, int textX, int textY, int color, int flags) { - // function MAKE_SPEAK_BOB, lines 335-457 in talk.c if (text[0] == '\0') return; - // debug(0, "makeSpeakBob('%s', (%i,%i), %i, %i, %i, %i);", - // text, bob->x, bob->y, textX, textY, color, flags); - // Duplicate string and append zero if needed char textCopy[MAX_STRING_SIZE]; @@ -476,10 +482,6 @@ void Graphics::setBobText( } } - // Plan: write each line to Screen 2, put black outline around lines and - // pick them up as a BOB. - - // Find width of widest line int maxLineWidth = 0; @@ -537,7 +539,7 @@ void Graphics::setBobText( for (i = 0; i < lineCount; i++) { int lineX = x + (maxLineWidth - _vm->display()->textWidth(lines[i])) / 2; - //debug(0, "Setting text '%s' at (%i, %i)", lines[i], lineX, y + 9 * i); + debug(7, "Setting text '%s' at (%i, %i)", lines[i], lineX, y + 9 * i); _vm->display()->setText(lineX, y + 9 * i, lines[i]); } } @@ -572,7 +574,7 @@ void Graphics::handleParallax(uint16 roomNum) { case ROOM_FINAL_FIGHT: _vm->bam()->updateFightAnimation(); break; - case ROOM_INTRO_RITA_JOE_HEADS: // CR 2 - CD-Rom pan right while Rita talks... + case ROOM_INTRO_RITA_JOE_HEADS: _cameraBob = -1; if (screenScroll < 80) { _vm->display()->horizontalScroll(screenScroll + 4); @@ -584,7 +586,7 @@ void Graphics::handleParallax(uint16 roomNum) { _bobs[21].x -= 2; } break; - case ROOM_INTRO_EXPLOSION: // CR 2 - CD-Rom the guys move off screen + case ROOM_INTRO_EXPLOSION: _bobs[21].x += 2; _bobs[21].y += 2; break; @@ -870,12 +872,6 @@ void Graphics::setupRoomFurniture(int16 *furniture, uint16 furnitureCount) { uint16 i; uint16 curImage = 36 + FRAMES_JOE_XTRA; - // unpack the furniture from bank 15 - // there are 3 kinds : - // - static (bobs), gamestate range = ]0;5000] - // - animated (bobs), gamestate range = ]0;5000] - // - static (paste downs), gamestate range = [5000; [ - // unpack the static bobs _numFurnitureStatic = 0; for (i = 1; i <= furnitureCount; ++i) { @@ -977,7 +973,6 @@ void Graphics::setupRoomObjects() { rebound = true; } if (pgd->firstFrame < 0) { - // XXX if(TEMPA[1]<0) bobs[CURRBOB].xflip=1; curBob = 5 + _numFurnitureAnimated; setupObjectAnim(pgd, curImage + 1, curBob + numObjectAnimated, pod->name > 0); curImage += pgd->lastFrame; diff --git a/queen/graphics.h b/queen/graphics.h index 16d536a1f8..0d755a81dd 100644 --- a/queen/graphics.h +++ b/queen/graphics.h @@ -82,6 +82,8 @@ struct BobSlot { void animString(const AnimFrame *animBuf); void animNormal(uint16 firstFrame, uint16 lastFrame, uint16 speed, bool rebound, bool xflip); + + void scaleWalkSpeed(uint16 ms); void clear(); }; diff --git a/queen/input.h b/queen/input.h index 0e27879b93..c2a8207d8f 100644 --- a/queen/input.h +++ b/queen/input.h @@ -123,13 +123,13 @@ class Input { bool _fastMode; //! The current verb received from keyboard - Verb _keyVerb; // KEYVERB + Verb _keyVerb; //! set if a cutaway is running - bool _cutawayRunning; // CUTON + bool _cutawayRunning; //! set this if we can quit - bool _canQuit; // inverse of CANTQUIT + bool _canQuit; //! moved Cutaway::_quit here bool _cutawayQuit; @@ -138,7 +138,7 @@ class Input { bool _dialogueRunning; //! moved Talk::_quit here - bool _talkQuit; // TALKQUIT + bool _talkQuit; //! Set if quicksave requested bool _quickSave; diff --git a/queen/journal.cpp b/queen/journal.cpp index ea86470d18..fd8aff06f8 100644 --- a/queen/journal.cpp +++ b/queen/journal.cpp @@ -52,7 +52,6 @@ void Journal::use() { memset(_saveDescriptions, 0, sizeof(_saveDescriptions)); _vm->findGameStateDescriptions(_saveDescriptions); - _panelTextCount = 0; _vm->display()->palFadeOut(0, 255, JOURNAL_ROOM); prepare(); @@ -289,8 +288,6 @@ void Journal::handleYesNoMode(int16 zoneNum) { _vm->music()->stopSong(); _vm->loadGameState(currentSlot); _vm->display()->clearTexts(0, GAME_SCREEN_HEIGHT - 1); - // XXX panelflag=1; - // XXX walkgameload=1; _quit = true; _quitCleanly = false; } else { diff --git a/queen/logic.cpp b/queen/logic.cpp index fa58d8b009..3afd30be76 100644 --- a/queen/logic.cpp +++ b/queen/logic.cpp @@ -64,8 +64,6 @@ Logic::~Logic() { void Logic::initialise() { int16 i; - // Step 1 : read queen.jas file and 'unserialize' some arrays - uint8 *jas = _vm->resource()->loadFile("QUEEN.JAS", 20); uint8 *ptr = jas; @@ -74,14 +72,12 @@ void Logic::initialise() { _numObjects = READ_BE_UINT16(ptr); ptr += 2; _numDescriptions = READ_BE_UINT16(ptr); ptr += 2; - // Object data _objectData = new ObjectData[_numObjects + 1]; memset(&_objectData[0], 0, sizeof(ObjectData)); for (i = 1; i <= _numObjects; i++) { _objectData[i].readFromBE(ptr); } - // Room data _roomData = new uint16[_numRooms + 2]; _roomData[0] = 0; for (i = 1; i <= (_numRooms + 1); i++) { @@ -89,8 +85,6 @@ void Logic::initialise() { } _roomData[_numRooms + 1] = _numObjects; - // SFX Name - // the following table isn't available in demo version if (_vm->resource()->isDemo()) { _sfxName = NULL; } else { @@ -101,18 +95,15 @@ void Logic::initialise() { } } - // Item information - _numItems = READ_BE_UINT16(ptr); ptr += 2; + _numItems = READ_BE_UINT16(ptr); ptr += 2; _itemData = new ItemData[_numItems + 1]; memset(&_itemData[0], 0, sizeof(ItemData)); for (i = 1; i <= _numItems; i++) { _itemData[i].readFromBE(ptr); } - // Graphic Image Data _numGraphics = READ_BE_UINT16(ptr); ptr += 2; - _graphicData = new GraphicData[_numGraphics + 1]; memset(&_graphicData[0], 0, sizeof(GraphicData)); for (i = 1; i <= _numGraphics; i++) { @@ -121,18 +112,14 @@ void Logic::initialise() { _vm->grid()->readDataFrom(_numObjects, _numRooms, ptr); - // Walk OFF Data _numWalkOffs = READ_BE_UINT16(ptr); ptr += 2; - _walkOffData = new WalkOffData[_numWalkOffs + 1]; memset(&_walkOffData[0], 0, sizeof(WalkOffData)); for (i = 1; i <= _numWalkOffs; i++) { _walkOffData[i].readFromBE(ptr); } - // Special Object Descriptions _numObjDesc = READ_BE_UINT16(ptr); ptr += 2; - _objectDescription = new ObjectDescription[_numObjDesc + 1]; memset(&_objectDescription[0], 0, sizeof(ObjectDescription)); for (i = 1; i <= _numObjDesc; i++) { @@ -143,9 +130,7 @@ void Logic::initialise() { _entryObj = READ_BE_UINT16(ptr); ptr += 2; - // Furniture DATA _numFurniture = READ_BE_UINT16(ptr); ptr += 2; - _furnitureData = new FurnitureData[_numFurniture + 1]; memset(&_furnitureData[0], 0, sizeof(_furnitureData)); for (i = 1; i <= _numFurniture; i++) { @@ -186,8 +171,6 @@ void Logic::initialise() { delete[] jas; - // Step 2 : read queen2.jas and grab all description texts - _queen2jas = new LineReader( (char *)_vm->resource()->loadFile("QUEEN2.JAS"), _vm->resource()->fileSize("QUEEN2.JAS")); @@ -238,8 +221,6 @@ void Logic::initialise() { _aFile[i] = _queen2jas->nextLine(); - // Step 3 : initialise game state / variables - _vm->command()->clear(false); _scene = 0; memset(_gameState, 0, sizeof(_gameState)); @@ -857,8 +838,6 @@ void Logic::playCutaway(const char *cutFile, char *next) { } void Logic::makeJoeSpeak(uint16 descNum, bool objectType) { - // makeJoeSpeak(k, false) == SPEAK(JOE_RESPstr[k],"JOE",find_cd_desc(k)) - // makeJoeSpeak(k, true) == SPEAK(OBJECT_DESCRstr[k],"JOE",find_cd_desc(JOERESPMAX+k)) const char *text = objectType ? _objDescription[descNum] : _joeResponse[descNum]; if (objectType) { descNum += JOE_RESPONSE_MAX; @@ -909,7 +888,6 @@ void Logic::inventoryRefresh() { } x += 35; } - // XXX OLDVERB=VERB; _vm->update(); } @@ -1011,10 +989,8 @@ void Logic::removeHotelItemsFromInventory() { } void Logic::objectCopy(int dummyObjectIndex, int realObjectIndex) { - // P3_COPY_FROM function in cutaway.c - /* Copy data from Dummy (D) object to object (K) - If COPY_FROM Object images are greater than COPY_TO Object - images then swap the objects around. */ + // copy data from dummy object to real object, if COPY_FROM object + // images are greater than COPY_TO Object images then swap the objects around. ObjectData *dummyObject = objectData(dummyObjectIndex); ObjectData *realObject = objectData(realObjectIndex); @@ -1057,8 +1033,6 @@ void Logic::objectCopy(int dummyObjectIndex, int realObjectIndex) { if (fromState == -1) dummyObject->name = -ABS(dummyObject->name); - // Make sure that WALK_OFF_DATA is copied too! - for (int i = 1; i <= _numWalkOffs; i++) { WalkOffData *walkOff = &_walkOffData[i]; if (walkOff->entryObj == (int16)dummyObjectIndex) { @@ -2117,7 +2091,6 @@ void LogicGame::useJournal() { _vm->command()->clear(false); _journal->use(); _vm->walk()->stopJoe(); - // XXX TALKQUIT=CUTQUIT=0; Make sure that we turn off cut stuff in case we use Journal during cutaways } bool LogicGame::preChangeRoom() { @@ -2129,8 +2102,6 @@ bool LogicGame::preChangeRoom() { playCutaway("copy.cut"); playCutaway("clogo.cut"); - // XXX enable talking for talkie version - if (ConfMan.getBool("alt_intro") && _vm->resource()->isCD()) { playCutaway("cintr.cut"); } else { diff --git a/queen/sound.cpp b/queen/sound.cpp index af78a852a9..5443885f01 100644 --- a/queen/sound.cpp +++ b/queen/sound.cpp @@ -159,15 +159,12 @@ void Sound::playSong(int16 songNum) { void Sound::saveState(byte *&ptr) { WRITE_BE_UINT16(ptr, _lastOverride); ptr += 2; - // XXX lastmerge, lastalter, altmrgpri } void Sound::loadState(uint32 ver, byte *&ptr) { _lastOverride = (int16)READ_BE_UINT16(ptr); ptr += 2; - // XXX lastmerge, lastalter, altmrgpri } - void SBSound::playSound(byte *sound, uint32 size, bool isSpeech) { byte flags = SoundMixer::FLAG_UNSIGNED | SoundMixer::FLAG_AUTOFREE; _mixer->playRaw(isSpeech ? &_speechHandle : &_sfxHandle, sound, size, 11025, flags); diff --git a/queen/state.cpp b/queen/state.cpp index 7cbbbc058e..36b199210b 100644 --- a/queen/state.cpp +++ b/queen/state.cpp @@ -24,7 +24,6 @@ namespace Queen { - Direction State::findDirection(uint16 state) { static const Direction sd[] = { DIR_BACK, @@ -35,12 +34,10 @@ Direction State::findDirection(uint16 state) { return sd[(state >> 2) & 3]; } - StateTalk State::findTalk(uint16 state) { return (state & (1 << 9)) ? STATE_TALK_TALK : STATE_TALK_MUTE; } - StateGrab State::findGrab(uint16 state) { static const StateGrab sg[] = { STATE_GRAB_NONE, @@ -51,12 +48,10 @@ StateGrab State::findGrab(uint16 state) { return sg[state & 3]; } - StateOn State::findOn(uint16 state) { return (state & (1 << 8)) ? STATE_ON_ON : STATE_ON_OFF; } - Verb State::findDefaultVerb(uint16 state) { static const Verb sdv[] = { VERB_NONE, @@ -82,12 +77,10 @@ Verb State::findDefaultVerb(uint16 state) { return sdv[(state >> 4) & 0xF]; } - StateUse State::findUse(uint16 state) { return (state & (1 << 10)) ? STATE_USE : STATE_USE_ON; } - void State::alterOn(uint16 *objState, StateOn state) { switch (state) { case STATE_ON_ON: @@ -99,7 +92,6 @@ void State::alterOn(uint16 *objState, StateOn state) { } } - void State::alterDefaultVerb(uint16 *objState, Verb v) { uint16 val; switch (v) { @@ -134,5 +126,4 @@ void State::alterDefaultVerb(uint16 *objState, Verb v) { *objState = (*objState & ~0xF0) | (val << 4); } - } // End of namespace Queen diff --git a/queen/talk.cpp b/queen/talk.cpp index 1d0223f19b..b4f3e2c822 100644 --- a/queen/talk.cpp +++ b/queen/talk.cpp @@ -81,8 +81,6 @@ void Talk::talk(const char *filename, int personInRoom, char *cutawayFilename) { cutawayFilename[0] = '\0'; - // XXX S=SUBJECT[1]; - int roomStart = _vm->logic()->currentRoomData(); ObjectData *data = _vm->logic()->objectData(roomStart + personInRoom); @@ -109,7 +107,7 @@ void Talk::talk(const char *filename, int personInRoom, char *cutawayFilename) { } int16 oldLevel = 0; - bool personWalking = false; // OWALK in talk.c + bool personWalking = false; // Lines 828-846 in talk.c for (i = 1; i <= 4; i++) { @@ -268,9 +266,7 @@ void Talk::talk(const char *filename, int personInRoom, char *cutawayFilename) { _vm->logic()->gameState(index, _dialogueTree[oldLevel][selectedSentence].gameStateValue); - // if(RETVAL = -1, then before we exit, check to see if(person - // has something final to say! - + // check to see if person has something final to say if (-1 == retval) { findDialogueString(_person1Ptr, head, _pMax, _talkString[0]); if (_talkString[0][0] != '\0') { @@ -351,7 +347,6 @@ void Talk::disableSentence(int oldLevel, int selectedSentence) { } // Cancel selected dialogue line, so that its no longer displayed - _dialogueTree[oldLevel][selectedSentence].head = -1; _dialogueTree[oldLevel][selectedSentence].dialogueNodeValue1 = -1; } @@ -646,8 +641,6 @@ bool Talk::speak(const char *sentence, Person *person, const char *voiceFilePref else _talkHead = false; - // XXX CLEAR_COMMAND(false) - for (i = 0; i < strlen(sentence); ) { if (sentence[i] == '*') { int segmentLength = i - segmentStart; @@ -786,12 +779,6 @@ void Talk::stringAnimation(const SpeechParameters *parameters, int startFrame, i _vm->update(); } - - // XXX #ifdef __DOS__ - // XXX if (VOICETOGGLE && (sfxflag==0)) - // XXX while (sfxbusy() && KEYVERB!=101) - // XXX update(); - // XXX #endif } void Talk::defaultAnimation( @@ -814,20 +801,6 @@ void Talk::defaultAnimation( if (segment[0] != 0) { - // XXX #ifdef __DOS__ - // XXX // 02-21-95 03:44pm DOn't talk until sfx finished - // XXX if(SFXTOGGLE && VOICETOGGLE) { - // XXX if(TEXTTOGGLE==0) - // XXX blanktexts(0,150); - // XXX while(sfxbusy() && KEYVERB!=101) - // XXX update(); - // XXX } - - // XXX sfxflag=VOICETOGGLE ? sfxplay(SPKstr) : 1; - // XXX if((sfxflag==0) && (TEXTTOGGLE==0)) - // XXX blanktexts(0,150); - // XXX #endif - // Why on earth would someone name a variable qzx? short qzx = 0; @@ -835,10 +808,6 @@ void Talk::defaultAnimation( int i; for (i = 0; i < (spaces + 1) /* || sfxflag == 0*/; i++) { - // XXX #ifdef __DOS__ - // XXX if(sfxflag==0 && sfxbusy()) - // XXX break; - // XXX #endif if (parameters != NULL) { @@ -1097,12 +1066,6 @@ void Talk::speakSegment( _vm->update(); } - /* A12 = the frame pointer for the full body frame, well use this */ - /* for Hot Spot reference, before we have to set up a Torso frame. */ - /* This way the hot spot is at bottom of body */ - - // XXX A12=A1; - if (-1 == parameters->rf) { // Setup the Torso frames _vm->bankMan()->overpack(parameters->bf, startFrame, bankNum); @@ -1174,7 +1137,6 @@ const Talk::SpeechParameters *Talk::findSpeechParameters( const char *name, int state, int faceDirection) { - // function FIND_SACTION in queen.c const SpeechParameters *iterator = _speechParameters; if (faceDirection == DIR_RIGHT) faceDirection = DIR_LEFT; @@ -1276,7 +1238,6 @@ static char *removeStar(char *str) { } int16 Talk::selectSentence() { - // Function TALK_BOB (lines 577-739) in talk.c int selectedSentence = 0; int startOption = 1; @@ -1285,8 +1246,6 @@ int16 Talk::selectSentence() { int talkZone[5]; int i; - // Change NORMAL_INK -> TALK_NORMAL_INK - _vm->display()->textCurrentColor(INK_TALK_NORMAL); _vm->graphics()->setupArrows(); @@ -1460,49 +1419,59 @@ const Talk::SpeechParameters Talk::_speechParameters[] = { { "JOE",0,1,1,10,2,3,"",0}, { "JOE",0,3,3,28,2,3,"",0}, { "JOE",0,4,5,38,1,0,"",0}, + { "JOE",1,1,1,45,-1,0,"",0}, { "JOE",1,3,3,28,2,3,"",0}, { "JOE",1,4,5,38,1,0,"",0}, + { "JOE",2,1,1,46,-1,0,"",0}, { "JOE",2,3,3,28,2,3,"",0}, { "JOE",2,4,5,38,1,0,"",0}, + { "JOE",3,1,1,47,-1,0,"",0}, { "JOE",3,3,3,28,2,3,"",0}, { "JOE",3,4,5,38,1,0,"",0}, + { "JOE",4,1,1,50,-1,0,"",0}, { "JOE",4,3,3,28,2,3,"",0}, { "JOE",4,4,5,38,1,0,"",0}, + { "JOE",5,1,2,0,0,0,"",0}, { "JOE",5,3,4,0,0,0,"",0}, { "JOE",5,4,6,0,0,0,"",0}, - //CR - Change 48,1,0 -> 48,0,1 + { "JOE",6,1,1,48,0,1,"",0}, { "JOE",6,3,3,28,2,3,"",0}, { "JOE",6,4,5,38,1,0,"",0}, - //CR - Change 51,1,0 -> 51,0,1 + { "JOE",7,1,1,51,0,1,"",0}, { "JOE",7,3,3,28,2,3,"",0}, { "JOE",7,4,5,38,1,0,"",0}, + { "JOE",8,1,1,26,0,0,"",0}, { "JOE",8,3,3,28,2,3,"",0}, { "JOE",8,4,5,38,1,0,"",0}, + { "JOE",9,1,1,29,0,0,"",0}, { "JOE",9,3,3,28,0,0,"",0}, { "JOE",9,4,5,38,0,0,"",0}, - // - Look down, sad. 10,12,46 + { "JOE",10,1,1,12,0,0,"T046,010,010,010,012,012,012,012,012,012,012,012,012,012,012,012,012,012,010,000",0}, { "JOE",10,3,3,18,0,0,"",0}, { "JOE",10,4,5,44,0,0,"",0}, + { "JOE",11,1,1,53,-1,0,"",0}, { "JOE",11,3,3,28,2,3,"",0}, { "JOE",11,4,5,38,1,0,"",0}, + { "JOE",12,1,1,10,2,3,"",0}, { "JOE",12,3,3,28,2,0,"",0}, { "JOE",12,4,5,38,1,0,"",0}, + { "JOE",13,1,1,10,2,3,"T012,013,019,019,019,019,019,019,019,019,019,019,013,010,000",0}, { "JOE",13,3,3,28,2,3,"",0}, { "JOE",13,4,5,38,1,0,"",0}, - // - 7/11/94, Make Joe look front + { "JOE",14,1,1,16,2,3,"",16}, { "JOE",14,3,3,28,2,3,"",0}, { "JOE",14,4,5,38,1,0,"",0}, @@ -1561,7 +1530,6 @@ const Talk::SpeechParameters Talk::_speechParameters[] = { { "LOLA",1,0,9,10,2,3,"",33}, { "LOLA",2,0,30,33,2,3,"",33}, { "LOLA",3,0,32,33,2,3,"",33}, - //CR 2 - 22/2/95, { "LOLA",4,0,8,0,0,0,"",33}, { "LOLA",5,0,31,0,0,0,"",0}, { "LOLA",6,0,31,0,0,0,"047,048,049,050,000",33}, @@ -1575,14 +1543,10 @@ const Talk::SpeechParameters Talk::_speechParameters[] = { { "LOLA_SHOWER",6,0,64,10,2,3,"",0}, { "LOLA_SHOWER",7,0,31,0,0,0,"062,063,064,000",0}, - // { "SECRETARY",0,0,1,12,2,0,"",12}, - // Change Secretary { "SECRETARY",0,0,1,12,2,3,"",12}, { "SECRETARY",1,0,1,12,2,0,"",12}, { "SECRETARY",2,0,1,12,2,0,"",12}, - // { "SPARKY",0,0,21,23,5,0,"",23}, - // Change Sparky talk code { "SPARKY",0,0,21,23,2,3,"",23}, { "SPARKY",1,0,21,22,0,0,"",0}, { "SPARKY",2,0,21,22,0,0,"021,042,043,000",0}, @@ -1649,8 +1613,6 @@ const Talk::SpeechParameters Talk::_speechParameters[] = { { "WEDGEWOOD",0,0,8,1,2,0,"",8}, { "WEDGEWOOD",1,0,1,1,3,0,"",1}, - // { "BUD",0,0,1,2,4,2,"",2}, - // Change Buds talk code { "BUD",0,0,1,2,3,2,"",2}, { "BUD",1,0,1,2,4,2,"T017,018,000",2}, { "BUD",2,0,1,21,-1,0,"",2}, @@ -1662,7 +1624,6 @@ const Talk::SpeechParameters Talk::_speechParameters[] = { { "BUD",8,0,1,17,-1,0,"",2}, { "BUD",9,0,1,14,-1,0,"T014,008,008,003,003,008,008,003,003,010,010,012,012,000",2}, - //CR 2 - Change 4,2 -> 2,3, End Frames 8 -> 2 { "LOU",0,0,1,2,2,3,"",2}, { "LOU",1,0,1,2,4,2,"013,014,015,016,017,018,000",2}, { "LOU",2,0,1,2,4,2,"018,017,016,015,014,013,000",2}, @@ -1748,12 +1709,10 @@ const Talk::SpeechParameters Talk::_speechParameters[] = { { "KLUNK",0,0,1,2,2,3,"",2}, { "KLUNK",1,0,1,2,2,3,"019,020,021,022,001,000",2}, - //CR 4 - 22/2/95, Change 017 -> 517 { "KLUNK",2,0,1,2,2,3,"001,022,021,020,019,016,517,000",2}, { "KLUNK",3,0,1,2,2,3,"T010,011,010,011,010,011,009,000",2}, { "FRANK",0,0,13,14,2,3,"",14}, - //CR 2 - 21/2/95, Change from Torso to normal { "FRANK",1,0,13,20,0,1,"",14}, { "FRANK",2,0,13,14,2,3,"025,026,027,027,027,026,026,026,027,027,026,026,027,025,013,000",14}, { "FRANK",3,0,28,14,2,3,"",14}, @@ -1761,7 +1720,6 @@ const Talk::SpeechParameters Talk::_speechParameters[] = { { "DEATH",0,0,1,2,2,3,"",2}, { "DEATH",1,0,1,2,2,3,"013,014,015,016,017,001,000",0}, { "DEATH",2,0,1,2,2,3,"001,017,016,015,014,013,000",0}, - //CR 2 - Change 024 -> 524 { "DEATH",3,0,1,2,2,3,"T018,019,020,021,021,022,022,020,021,022,020,021,022,023,024,524,000",2}, { "DEATH",4,0,1,2,2,3,"T025,026,027,028,028,028,028,028,028,028,028,028,029,035,000",2}, { "DEATH",5,0,1,2,2,3,"T030,031,032,033,033,033,033,033,033,033,033,033,034,035,000",2}, @@ -1837,8 +1795,6 @@ const Talk::SpeechParameters Talk::_speechParameters[] = { { "ANDSON-E",0,0,1,3,4,1,"",1}, { "ANDSON-E",1,0,1,3,4,1,"002,001,000",1}, -//#ifdef __DOS__ - { "JOE-H",0,0,1,1,4,4,"",1}, { "JOE-H",1,0,1,1,2,3,"012,013,014,000",14}, { "JOE-H",2,0,1,1,2,3,"010,011,000",11}, @@ -1860,16 +1816,12 @@ const Talk::SpeechParameters Talk::_speechParameters[] = { { "HUGH",0,0,1,1,2,3,"",1}, { "HUGH",1,0,7,7,2,3,"",7}, - // New CD-Rom intro persons - // *01 Blink { "X2_JOE",0,0,1,1,2,3,"",1}, { "X2_JOE",1,0,1,1,2,3,"001,007,008,008,007,001,000",1}, - // *01 Blink { "X2_RITA",0,0,1,1,2,3,"",1}, { "X2_RITA",1,0,1,1,2,3,"001,007,008,008,007,001,000",1}, - // *01 Smile, *02 Blink, *03 Raise Eyebrow, *04 Anger, *05 Surprise { "X3_RITA",0,0,1,1,4,1,"",1}, { "X3_RITA",1,0,1,1,4,1,"007,000",7}, { "X3_RITA",2,0,1,1,4,1,"009,010,011,009,001,000",1}, @@ -1877,47 +1829,37 @@ const Talk::SpeechParameters Talk::_speechParameters[] = { { "X3_RITA",4,0,1,1,4,1,"E015,000",1}, { "X3_RITA",5,0,1,1,4,1,"E014,000",1}, - // *01 Talk to Sparky, *02 Turn to Sparky, *03 Turn to Rita, *04 Close Eyes { "X4_JOE",0,0,1,1,3,4,"",1}, { "X4_JOE",1,0,1,13,2,3,"",13}, { "X4_JOE",2,0,1,1,3,4,"009,010,011,012,013,000",13}, { "X4_JOE",3,0,1,1,3,4,"012,011,010,009,000",9}, { "X4_JOE",4,0,1,1,3,4,"001,019,000",19}, - // *01 Talk to Sparky, *02 Turn to Sparky, *03 Turn to Joe, *04 Close Eyes { "X4_RITA",0,0,1,1,0,1,"",1}, { "X4_RITA",1,0,1,7,0,1,"",7}, { "X4_RITA",2,0,1,1,3,4,"004,005,006,006,006,006,007,000",7}, { "X4_RITA",3,0,1,1,3,4,"005,004,001,000",1}, { "X4_RITA",4,0,1,1,3,4,"001,003,000",3}, - // *01 Blink, *02 Look Right { "X5_SPARKY",0,0,1,1,2,3,"",1}, { "X5_SPARKY",1,0,1,1,2,3,"001,010,011,011,001,000",1}, { "X5_SPARKY",2,0,1,1,2,3,"001,007,008,009,000",9}, - // *01 Eyes Bulge Once, *02 Eyes Bulge Big Time { "X6_HUGH",0,0,1,1,2,3,"",1}, { "X6_HUGH",1,0,1,1,2,3,"007,007,007,007,,001,000",1}, { "X6_HUGH",2,0,1,1,2,3,"008,008,008,008,008,009,009,008,008,008,009,008,000",8}, - // *01 Talk to Sparky, Rub Head { "X10_JOE",0,0,1,2,2,3,"",2}, { "X10_JOE",1,0,1,8,2,3,"",8}, - //CR 2 - 21/2/95, Cut down rub head anim { "X10_JOE",2,0,1,2,2,3,"014,014,014,015,015,014,014,015,015,000",2}, { "X10_RITA",0,0,1,2,2,3,"",2}, { "X11_JOE",0,0,1,2,0,1,"",2}, - // *01 Look at Joe { "X11_RITA",0,0,1,2,0,1,"",2}, { "X11_RITA",1,0,1,2,1,0,"003,004,000",4}, -//#endif - - // Interview { "JOHN", 0, 0, 1, 2, 2, 3, "", 1 }, { "JOHN", 1, 0, 1, 15, -1, 0, "", 1 }, { "JOHN", 2, 0, 1, 16, -1, 0, "", 1 }, diff --git a/queen/talk.h b/queen/talk.h index 1cd2da1f0f..e996140eea 100644 --- a/queen/talk.h +++ b/queen/talk.h @@ -85,10 +85,10 @@ private: }; struct SpeechParameters { - const char *name; // Nstr - signed char state,faceDirection; // S,F + const char *name; + signed char state,faceDirection; signed char body,bf,rf,af; - const char *animation; // SANIMstr + const char *animation; signed char ff; }; @@ -221,7 +221,7 @@ private: const SpeechParameters *findSpeechParameters( const char *name, int state, - int faceDirection); // FIND_SACTION + int faceDirection); int splitOption(const char *str, char optionText[5][MAX_STRING_SIZE]); diff --git a/queen/walk.cpp b/queen/walk.cpp index 8c6957e81e..686d028510 100644 --- a/queen/walk.cpp +++ b/queen/walk.cpp @@ -126,14 +126,7 @@ void Walk::animateJoe() { // adjust Joe's movespeed according to scale pbs->scale = pwd->area->calcScale(pbs->y); _vm->logic()->joeScale(pbs->scale); - if (pbs->xmajor) { - pbs->speed = pbs->scale * 6 / 100; - } else { - pbs->speed = pbs->scale * 3 / 100; - } - if (pbs->speed == 0) { - pbs->speed = 1; - } + pbs->scaleWalkSpeed(6); _vm->update(true); if (_vm->input()->cutawayQuit() || _vm->logic()->joeWalk() == JWM_EXECUTE) { stopJoe(); @@ -252,16 +245,8 @@ void Walk::animatePerson(const MovePersonData *mpd, uint16 image, uint16 bobNum, while (pbs->moving) { _vm->update(); - uint16 scale = pwd->area->calcScale(pbs->y); - pbs->scale = scale; - if (pbs->xmajor) { - pbs->speed = scale * mpd->moveSpeed / 100; - } else { - pbs->speed = scale * (mpd->moveSpeed / 2) / 100; - } - if (pbs->speed == 0) { - pbs->speed = 1; - } + pbs->scale = pwd->area->calcScale(pbs->y); + pbs->scaleWalkSpeed(mpd->moveSpeed); if (_vm->input()->cutawayQuit()) { stopPerson(bobNum); break; @@ -306,9 +291,6 @@ int16 Walk::moveJoe(int direction, int16 endx, int16 endy, bool inCutaway) { } _vm->graphics()->bob(0)->animating = false; - // cyx: the NEW_ROOM = 0 is done in Command::grabCurrentSelection() - // XXX if ((CAN==-1) && (walkgameload==0)) NEW_ROOM=0; - // XXX walkgameload=0; if (_joeMoveBlock) { can = -2; _joeMoveBlock = false; diff --git a/queen/xref.txt b/queen/xref.txt index 87b597599e..5c0bdf2414 100644 --- a/queen/xref.txt +++ b/queen/xref.txt @@ -366,7 +366,7 @@ OWALK PERstr PKEYstr TALKHEAD -TALKQUIT +TALKQUIT Input::_talkQuit TALKstr TALK_SELECTED Logic::_talkSelected @@ -452,7 +452,7 @@ CH, OLDG,S2,S1,ITEM,TYPE,C, NAME,TL,TI,TS,WC,IMAGE, D,P,LI,R -CANTQUIT +CANTQUIT !Input::_canQuit (NO NEED TO BE GLOBAL) |