diff options
| author | Gregory Montoir | 2003-11-26 20:40:43 +0000 | 
|---|---|---|
| committer | Gregory Montoir | 2003-11-26 20:40:43 +0000 | 
| commit | 871c4f8342ed4063a18a5ed4cb1f2e8b78b9dee2 (patch) | |
| tree | 5950ff38f2760c56bf2199573e6f483973eb7d4e | |
| parent | a5d8cacdad4930a12e380ddaaf1b6a9108efae87 (diff) | |
| download | scummvm-rg350-871c4f8342ed4063a18a5ed4cb1f2e8b78b9dee2.tar.gz scummvm-rg350-871c4f8342ed4063a18a5ed4cb1f2e8b78b9dee2.tar.bz2 scummvm-rg350-871c4f8342ed4063a18a5ed4cb1f2e8b78b9dee2.zip  | |
rename some methods (purely cosmetic) and fix some walking problems when closing Journal screen
svn-id: r11373
| -rw-r--r-- | queen/command.cpp | 11 | ||||
| -rw-r--r-- | queen/cutaway.cpp | 5 | ||||
| -rw-r--r-- | queen/journal.cpp | 8 | ||||
| -rw-r--r-- | queen/logic.cpp | 21 | ||||
| -rw-r--r-- | queen/walk.cpp | 41 | ||||
| -rw-r--r-- | queen/walk.h | 12 | ||||
| -rw-r--r-- | queen/xref.txt | 36 | 
7 files changed, 78 insertions, 56 deletions
diff --git a/queen/command.cpp b/queen/command.cpp index 5577c6f5b7..1561f7ac41 100644 --- a/queen/command.cpp +++ b/queen/command.cpp @@ -563,7 +563,7 @@ int16 Command::makeJoeWalkTo(int16 x, int16 y, int16 objNum, const Verb &v, bool  			_logic->joeFace();  		}  		else { -			p = _walk->joeMove(facing, x, y, false); // XXX inCutaway parameter +			p = _walk->moveJoe(facing, x, y, false); // XXX inCutaway parameter  			// XXX if(P != 0) P = FIND_VERB  		}  	} @@ -843,7 +843,8 @@ bool Command::executeIfCutaway(const char *description) {  	if (strlen(description) > 4 &&   		scumm_stricmp(description + strlen(description) - 4, ".cut") == 0) { -		_graphics->textClear(CmdText::COMMAND_Y_POS, CmdText::COMMAND_Y_POS); +//		_graphics->textClear(CmdText::COMMAND_Y_POS, CmdText::COMMAND_Y_POS); +		clear(true);  		char nextCutaway[20];  		memset(nextCutaway, 0, sizeof(nextCutaway)); @@ -863,7 +864,8 @@ bool Command::executeIfDialog(const char *description) {  			scumm_stricmp(description + strlen(description) - 4, ".dog") == 0) {  		char cutaway[20]; -		_graphics->textClear(CmdText::COMMAND_Y_POS, CmdText::COMMAND_Y_POS); +//		_graphics->textClear(CmdText::COMMAND_Y_POS, CmdText::COMMAND_Y_POS); +		clear(true);  		_logic->dialogue(description, _selCmd.noun, cutaway); @@ -891,7 +893,8 @@ bool Command::handleBadCommand(bool walk) {  		if (_selCmd.action.isNone()) {  			_graphics->textClear(CmdText::COMMAND_Y_POS, CmdText::COMMAND_Y_POS);  		} -		_walk->joeMove(0, _selPosX, _selPosY, false); // XXX inCutaway parameter +debug(0, "_walk->moveJoe(%d, %d)", _selPosX, _selPosY); +		_walk->moveJoe(0, _selPosX, _selPosY, false); // XXX inCutaway parameter  		return true;  	}  	// check to see if one of the objects is hidden diff --git a/queen/cutaway.cpp b/queen/cutaway.cpp index 8592f2b54e..15d0a831c1 100644 --- a/queen/cutaway.cpp +++ b/queen/cutaway.cpp @@ -1129,7 +1129,7 @@ void Cutaway::handlePersonRecord(  	if (object.objectNumber == OBJECT_JOE) {  		if (object.moveToX || object.moveToY) { -			_walk->joeMove(0, object.moveToX, object.moveToY, true); +			_walk->moveJoe(0, object.moveToX, object.moveToY, true);  		}   	}  	else { @@ -1145,7 +1145,7 @@ void Cutaway::handlePersonRecord(  		}  		if (object.moveToX || object.moveToY) -			_walk->personMove( +			_walk->movePerson(  					&p,   					object.moveToX, object.moveToY,  					_currentImage + 1, 		// XXX CI+1 @@ -1181,6 +1181,7 @@ void Cutaway::handlePersonRecord(  			char voiceFilePrefix[MAX_STRING_SIZE];  			findCdCut(_basename, index, voiceFilePrefix); +			  			Talk::speak(sentence, (object.objectNumber == OBJECT_JOE) ? NULL : &p, voiceFilePrefix,  				_graphics, _input, _logic, _resource, _sound);  		} diff --git a/queen/journal.cpp b/queen/journal.cpp index 0046bf5ab7..7502710b84 100644 --- a/queen/journal.cpp +++ b/queen/journal.cpp @@ -32,7 +32,6 @@ namespace Queen {  // - misc  //   * better Journal integration in Logic  //   * get rid of g_engine global -//   * walking issues (try to get rid of walkgameload)  // - save/load code related  //   * new format (SCVM [ver]32 [flags]32) all BE  //   * move code from Resource to Journal @@ -92,6 +91,8 @@ void Journal::use() {  		g_system->delay_msecs(20);  	} +	_graphics->textClear(0, GAME_SCREEN_HEIGHT - 1); +	_graphics->cameraBob(0);  	if (_quitCleanly) {  		restore();  	} @@ -145,12 +146,7 @@ void Journal::prepare() {  void Journal::restore() { -	_graphics->textClear(0, GAME_SCREEN_HEIGHT - 1); - -    // XXX in_journal=0; -  	_display->fullscreen(false); -	_graphics->cameraBob(0);  	_logic->joeX(_prevJoeX);  	_logic->joeY(_prevJoeY); diff --git a/queen/logic.cpp b/queen/logic.cpp index 5ce1995a65..7b20e4c593 100644 --- a/queen/logic.cpp +++ b/queen/logic.cpp @@ -1244,7 +1244,7 @@ void Logic::roomDisplay(const char *room, RoomDisplayMode mode, uint16 scale, in  		}  //	}  	if (pod != NULL) { -		_walk->joeMove(0, pod->x, pod->y, inCutaway); +		_walk->moveJoe(0, pod->x, pod->y, inCutaway);  	}  } @@ -2556,15 +2556,26 @@ void Logic::useJournal() {  		Talk::speak("This is a demo, so I can't load or save games*14", NULL, "", _graphics, _input, this, _resource, _sound);  	}  	else { -		// XXX (execute.c l.428-437 & queen.c l.350-365) +  		// XXX save some vars +		//  +		// XXX tmpbamflag=bamflag; +		// XXX bamflag=0; +		// XXX in_journal=1; + +		_cmd->clear(false); +  		Journal j(this, _graphics, _display, _sound, &_settings);  		j.use(); + +		_walk->stopJoe(); +  		// XXX restore vars +		//  +		// XXX in_journal=0; +		// XXX bamflag=tmpbamflag; +		// XXX TALKQUIT=CUTQUIT=0; Make sure that we turn off cut stuff in case we use Journal during cutaways -		// _graphics->bob(0)->moving = false; -		// joeWalk(JWM_EXECUTE); // make sure we exit Move_Joe() -		// XXX _walk->stopJoe();  	}  } diff --git a/queen/walk.cpp b/queen/walk.cpp index 6e938e41e4..583040c8df 100644 --- a/queen/walk.cpp +++ b/queen/walk.cpp @@ -101,7 +101,7 @@ void Walk::animateJoePrepare() {  } -bool Walk::animateJoe() { +void Walk::animateJoe() {  	// queen.c l.2789-2835  	uint16 lastDirection = 0;  	uint16 i; @@ -109,8 +109,7 @@ bool Walk::animateJoe() {  	_logic->joeFacing(_walkData[1].anim.facing);  	_logic->joeScale(_walkData[1].area->calcScale(pbs->y));  	_logic->joeFace(); -	bool interrupted = false; -	for (i = 1; i <= _walkDataCount && !interrupted; ++i) { +	for (i = 1; i <= _walkDataCount && !_joeInterrupted; ++i) {  		WalkData *pwd = &_walkData[i]; @@ -119,7 +118,7 @@ bool Walk::animateJoe() {  			// queen.c l.2838-2911  			_logic->customMoveJoe(pwd->anim.facing, pwd->areaNum, i);  			_joeMoveBlock = true; -			return interrupted; +			return;  		}  		if (lastDirection != pwd->anim.facing) {  			_graphics->bobAnimNormal(0, pwd->anim.firstFrame, pwd->anim.lastFrame, 1, false, false); @@ -142,16 +141,17 @@ bool Walk::animateJoe() {  				pbs->speed = 1;  			}  			_logic->checkPlayer(); +			// FIXME it would nice to be able to get rid of these 3 lines +			// as stopJoe() should be do the same...  			if (_logic->joeWalk() == JWM_EXECUTE) { // XXX || cutQuit   				// we are about to do something else, so stop walking -				interrupted = true; +				_joeInterrupted = true;  				pbs->moving = false;  			}  		}  		lastDirection = pwd->anim.facing;  	}  	_logic->joeFacing(lastDirection); -	return interrupted;  } @@ -290,12 +290,14 @@ void Walk::animatePerson(const MovePersonData *mpd, uint16 image, uint16 bobNum,  } -int16 Walk::joeMove(int direction, int16 endx, int16 endy, bool inCutaway) { +int16 Walk::moveJoe(int direction, int16 endx, int16 endy, bool inCutaway) {  	_joeMoveBlock = false;  	int16 can = 0;  	initWalkData(); +	_joeInterrupted = false; +  	uint16 oldx = _graphics->bob(0)->x;  	uint16 oldy = _graphics->bob(0)->y; @@ -304,7 +306,7 @@ int16 Walk::joeMove(int direction, int16 endx, int16 endy, bool inCutaway) {  	uint16 oldPos = _logic->zoneInArea(ZONE_ROOM, oldx, oldy);  	uint16 newPos = _logic->zoneInArea(ZONE_ROOM, endx, endy); -	debug(9, "Walk::joeMove(%d, %d, %d, %d, %d) - old = %d, new = %d", direction, oldx, oldy, endx, endy, oldPos, newPos); +	debug(9, "Walk::moveJoe(%d, %d, %d, %d, %d) - old = %d, new = %d", direction, oldx, oldy, endx, endy, oldPos, newPos);  	// if in cutaway, allow Joe to walk anywhere  	if(newPos == 0 && inCutaway) { @@ -314,7 +316,8 @@ int16 Walk::joeMove(int direction, int16 endx, int16 endy, bool inCutaway) {  		if (calc(oldPos, newPos, oldx, oldy, endx, endy)) {  			if (_walkDataCount > 0) {  				animateJoePrepare(); -				if(animateJoe()) { +				animateJoe();  +				if (_joeInterrupted) {  					can = -1;  				}  			} @@ -343,14 +346,10 @@ int16 Walk::joeMove(int direction, int16 endx, int16 endy, bool inCutaway) {  } -int16 Walk::personMove(const Person *pp, int16 endx, int16 endy, uint16 curImage, int direction) { - -	if (curImage > MAX_FRAMES_NUMBER) { -		error("[Walk::personMove] curImage is invalid: %i", curImage); -	} +int16 Walk::movePerson(const Person *pp, int16 endx, int16 endy, uint16 curImage, int direction) {  	if (endx == 0 && endy == 0) { -		warning("Walk::personMove() - endx == 0 && endy == 0"); +		warning("Walk::movePerson() - endx == 0 && endy == 0");  		return 0;  	} @@ -373,7 +372,7 @@ int16 Walk::personMove(const Person *pp, int16 endx, int16 endy, uint16 curImage  	uint16 oldPos = _logic->zoneInArea(ZONE_ROOM, oldx, oldy);  	uint16 newPos = _logic->zoneInArea(ZONE_ROOM, endx, endy); -	debug(9, "Walk::personMove(%d, %d, %d, %d, %d) - old = %d, new = %d", direction, oldx, oldy, endx, endy, oldPos, newPos); +	debug(9, "Walk::movePerson(%d, %d, %d, %d, %d) - old = %d, new = %d", direction, oldx, oldy, endx, endy, oldPos, newPos);  	// find MovePersonData associated to Person  	const MovePersonData *mpd = _moveData; @@ -399,7 +398,7 @@ int16 Walk::personMove(const Person *pp, int16 endx, int16 endy, uint16 curImage  		standingFrame = 29 + FRAMES_JOE_XTRA + bobNum;  	}  	else { -		warning("Walk::personMove() - Wrong bob number : %d", bobNum); +		warning("Walk::movePerson() - Wrong bob number : %d", bobNum);  	}  	// make other person face the right direction  	BobSlot *pbs = _graphics->bob(bobNum); @@ -427,6 +426,14 @@ int16 Walk::personMove(const Person *pp, int16 endx, int16 endy, uint16 curImage  } +void Walk::stopJoe() { + +	_graphics->bob(0)->moving = false; +	_joeInterrupted = true; + +} + +  bool Walk::calc(uint16 oldPos, uint16 newPos, int16 oldx, int16 oldy, int16 x, int16 y) {  	// if newPos is outside of an AREA then traverse Y axis until an AREA is found diff --git a/queen/walk.h b/queen/walk.h index 879e81364f..b503270c4a 100644 --- a/queen/walk.h +++ b/queen/walk.h @@ -71,18 +71,20 @@ public:  	Walk(Logic *logic, Graphics *graphics); -	int16 joeMove(int direction, int16 endx, int16 endy, bool inCutaway); -	 -	int16 personMove(const Person *pp, int16 endx, int16 endy, uint16 curImage, int direction); +	int16 moveJoe(int direction, int16 endx, int16 endy, bool inCutaway); +	int16 movePerson(const Person *pp, int16 endx, int16 endy, uint16 curImage, int direction); + +	void stopJoe();  	enum {  		MAX_WALK_DATA = 16  	}; +  private:  	void animateJoePrepare(); -	bool animateJoe(); +	void animateJoe();  	void animatePersonPrepare(const MovePersonData *mpd, int direction);  	void animatePerson(const MovePersonData *mpd, uint16 image, uint16 bobNum, uint16 bankNum, int direction); @@ -121,6 +123,8 @@ private:  	uint16 _areaList[MAX_WALK_DATA];  	uint16 _areaListCount; +	bool _joeInterrupted; +  	//! set if customMoveJoe() is called in joeAnimate()  	bool _joeMoveBlock; diff --git a/queen/xref.txt b/queen/xref.txt index c38083b770..44d754da0e 100644 --- a/queen/xref.txt +++ b/queen/xref.txt @@ -74,13 +74,12 @@ Czone  CUTAWAY  ======= -action_special_move			Cutaway::actionSpecialMove +action_special_move()		Cutaway::actionSpecialMove  CUTAWAY()					Cutaway::run  MAKE_COMPLEX_ANIM()			Cutaway::makeComplexAnimation  SCENE_START()				Logic::sceneStart  SCENE_END()					Logic::sceneStop  - -CUTJOEF  CUTON						Input::_cutawayRunning  CUTQUIT						Input::_cutawayQuit  FINAL_ROOM					Cutaway::_finalRoom @@ -130,7 +129,7 @@ freeframes()				Graphics::frameEraseAll(false)  invbob()					Graphics::bobDrawInventoryItem  loadbackdrop()				Graphics::loadBackdrop  loadpanel()					Graphics::loadPanel -MAKE_SPEAK_BOB				Graphics::bobSetText +MAKE_SPEAK_BOB()			Graphics::bobSetText  makeanim()					Graphics::bobAnimNormal  movebob()					Graphics::bobMove  pastebob()					Graphics::bobPaste @@ -181,9 +180,10 @@ USE_UNDERWEAR()				Logic::joeUseUnderwear  USE_CLOTHES()				Logic::joeUseClothes  USE_DRESS()					Logic::joeUseDress  - +CUTJOEF  JOE_RESPstr 				Logic::_joeResponse  JOEF,JX,JY,JDIR				Logic::_joe.* -JOEWALK						Logic::_joe.walk (legal values = 0,1,2,3) +JOEWALK						Logic::_joe.walk  JOURNAL @@ -199,9 +199,9 @@ waitmousezone()				*not needed*  -  choice						Journal::_currentSaveSlot  decbase						Journal::_currentSavePage -in_journal					*not needed ?* +in_journal					*not needed* (the hack in puttext() seems useless and CHECK_PARALLAX() is never called)  save_descriptions			Journal::_saveDescriptions -walkgameload +walkgameload				*not needed ?*  LOGIC @@ -270,11 +270,11 @@ WALK_OFF_MAX				Logic::_numWalkOffs  PERSONS  ======= -ALLOCATE_PERSON				Logic::personAllocate +ALLOCATE_PERSON()			Logic::personAllocate  CREATE_ANIM()				Logic::animCreate -SET_PERSON_DATA				Logic::personSetData -SETUP_PERSON				Logic::personSetup -OBJ_PERSON					Logic::objectForPerson +SET_PERSON_DATA()			Logic::personSetData +SETUP_PERSON()				Logic::personSetup +OBJ_PERSON()				Logic::objectForPerson  -  PERSON_FACE  PERSON_FACE_MAX @@ -358,11 +358,11 @@ FIND_STATE()				State::findState*  TALK  ====  FIND_SACTION()				Talk::findSpeechParameters -MOVE_SPEAK -SPEAK						Talk::speak -SPEAK_SUB					Talk::speakSegment -talk						Talk::talk -TALK_PROC					Talk::talk +MOVE_SPEAK() +SPEAK()						Talk::speak +SPEAK_SUB()					Talk::speakSegment +talk()						Talk::talk +TALK_PROC()					Talk::talk  -  A1,A12  actiondata					Talk::_speechParameters @@ -405,8 +405,8 @@ CALCSCALE()					Area::calcScale  FIND_FREE_AREA				Walk::findFreeArea  FIND_NEWP()					Walk::findAreaPosition  FIND_OLDP()					Walk::findAreaPosition -MOVE_JOE()					Walk::joeMove -MOVE_OTHER()				Walk::personMove +MOVE_JOE()					Walk::moveJoe +MOVE_OTHER()				Walk::movePerson  -  AREALIST					Walk::_areaList  AREASTRIKE					Walk::_areaStrike @@ -430,7 +430,7 @@ zones						Logic::_zones  ==========  in()						defs.h InRange() macro  find_cd_cut()				findCdCut -find_cd_desc()				*not needed, see Logic::joeSpeak()* +find_cd_desc()				*not needed* (see Logic::joeSpeak())  -  Kstr				  bank9  | 
