Example #1
0
void DreamWebEngine::talk() {
	_talkPos = 0;
	_inMapArea = 0;
	_character = _command;
	createPanel();
	showPanel();
	showMan();
	showExit();
	underTextLine();
	convIcons();
	startTalk();
	_commandType = 255;
	readMouse();
	showPointer();
	workToScreen();

	RectWithCallback<DreamWebEngine> talkList[] = {
		{ 273,320,157,198,&DreamWebEngine::getBack1 },
		{ 240,290,2,44,&DreamWebEngine::moreTalk },
		{ 0,320,0,200,&DreamWebEngine::blank },
		{ 0xFFFF,0,0,0,0 }
	};

	do {
		delPointer();
		readMouse();
		animPointer();
		showPointer();
		vSync();
		dumpPointer();
		dumpTextLine();
		_getBack = 0;
		checkCoords(talkList);
		if (_quitRequested)
			break;
	} while (!_getBack);

	if (_talkPos >= 4)
		_personData->b7 |= 128;

	redrawMainScrn();
	workToScreenM();
	if (_speechLoaded) {
		cancelCh1();
		_volumeDirection = -1;
		_volumeTo = 0;
	}
}
Example #2
0
bool DreamWebEngine::hangOnPQ() {
	_getBack = 0;

	RectWithCallback<DreamWebEngine> quitList[] = {
		{ 273,320,157,198,&DreamWebEngine::getBack1 },
		{ 0,320,0,200,&DreamWebEngine::blank },
		{ 0xFFFF,0,0,0,0 }
	};

	uint16 speechFlag = 0;

	do {
		delPointer();
		readMouse();
		animPointer();
		showPointer();
		vSync();
		dumpPointer();
		dumpTextLine();
		checkCoords(quitList);

		if (_getBack == 1 || _quitRequested) {
			// Quit conversation
			delPointer();
			_pointerMode = 0;
			cancelCh1();
			return true;
		}

		if (_speechLoaded && _channel1Playing == 255) {
			speechFlag++;
			if (speechFlag == 40)
				break;
		}
	} while (!_mouseButton || _oldButton);

	delPointer();
	_pointerMode = 0;
	return false;
}
Example #3
0
void DreamWebEngine::selectLocation() {
	_inMapArea = 0;
	clearBeforeLoad();
	_getBack = 0;
	_pointerFrame = 22;
	readCityPic();
	showCity();
	_cityGraphics.clear();
	readDestIcon();
	loadTravelText();
	showPanel();
	showMan();
	showArrows();
	showExit();
	locationPic();
	underTextLine();
	_commandType = 255;
	readMouse();
	_pointerFrame = 0;
	showPointer();
	workToScreen();
	_sound->playChannel0(9, 255);
	_newLocation = 255;

	while (_newLocation == 255) {
		if (_quitRequested)
			break;

		delPointer();
		readMouse();
		showPointer();
		waitForVSync();
		dumpPointer();
		dumpTextLine();

		if (_getBack == 1)
			break;

		RectWithCallback destList[] = {
			{ 238,258,4,44,&DreamWebEngine::nextDest },
			{ 104,124,4,44,&DreamWebEngine::lastDest },
			{ 280,308,4,44,&DreamWebEngine::lookAtPlace },
			{ 104,216,138,192,&DreamWebEngine::destSelect },
			{ 273,320,157,198,&DreamWebEngine::getBack1 },
			{ 0,320,0,200,&DreamWebEngine::blank },
			{ 0xFFFF,0,0,0,0 }
		};
		checkCoords(destList);
	}

	if (_quitRequested || _getBack == 1 || _newLocation == _vars._location) {
		_newLocation = _realLocation;
		_getBack = 0;
	}

	_newplaceGraphics.clear();
	_newplaceGraphics2.clear();
	_newplaceGraphics3.clear();

	_travelText.clear();
}
Example #4
0
void DreamWebEngine::examineOb(bool examineAgain) {
	_pointerMode = 0;
	_timeCount = 0;

	while (true) {
		if (examineAgain) {
			_inMapArea = 0;
			_examAgain = 0;
			_openedOb = 255;
			_openedType = 255;
			_invOpen = 0;
			_objectType = _commandType;
			_itemFrame = 0;
			_pointerFrame = 0;
			createPanel();
			showPanel();
			showMan();
			showExit();
			obIcons();
			obPicture();
			describeOb();
			underTextLine();
			_commandType = 255;
			readMouse();
			showPointer();
			workToScreen();
			delPointer();
			examineAgain = false;
		}

		readMouse();
		showPointer();
		waitForVSync();
		dumpPointer();
		dumpTextLine();
		delPointer();
		_getBack = 0;

		switch (_invOpen) {
		case 0: {
			RectWithCallback examList[] = {
				{ 273,320,157,198,&DreamWebEngine::getBackFromOb },
				{ 260,300,0,44,&DreamWebEngine::useObject },
				{ 210,254,0,44,&DreamWebEngine::selectOpenOb },
				{ 144,176,64,96,&DreamWebEngine::setPickup },
				{ 0,50,50,200,&DreamWebEngine::examineInventory },
				{ 0,320,0,200,&DreamWebEngine::blank },
				{ 0xFFFF,0,0,0,0 }
			};
			checkCoords(examList);
			break;
		}
		case 1: {
			// Note: This table contains the non-constant _openChangeSize!
			RectWithCallback invList1[] = {
				{ 273,320,157,198,&DreamWebEngine::getBackFromOb },
				{ 255,294,0,24,&DreamWebEngine::dropObject },
				{ kInventx+167,kInventx+167+(18*3),kInventy-18,kInventy-2,&DreamWebEngine::incRyanPage },
				{ kInventx,_openChangeSize,kInventy+100,kInventy+100+kItempicsize,&DreamWebEngine::useOpened },
				{ kInventx,kInventx+(5*kItempicsize),kInventy,kInventy+(2*kItempicsize),&DreamWebEngine::inToInv },
				{ 0,320,0,200,&DreamWebEngine::blank },
				{ 0xFFFF,0,0,0,0 }
			};
			checkCoords(invList1);
			break;
		}
		default: {
			RectWithCallback withList1[] = {
				{ 273,320,157,198,&DreamWebEngine::getBackFromOb },
				{ kInventx+167,kInventx+167+(18*3),kInventy-18,kInventy-2,&DreamWebEngine::incRyanPage },
				{ kInventx,kInventx+(5*kItempicsize), kInventy,kInventy+(2*kItempicsize),&DreamWebEngine::selectOb },
				{ 0,320,0,200,&DreamWebEngine::blank },
				{ 0xFFFF,0,0,0,0 }
			};
			checkCoords(withList1);
			break;
		}
		}

		if (_quitRequested)
			break;
		if (_examAgain != 0)
			examineAgain = true;
		else if (_getBack != 0)
			break;
	}

	_pickUp = 0;
	if (_vars._watchingTime != 0 || _newLocation == 255) {
		// isWatching
		makeMainScreen();
	}

	_invOpen = 0;
	_openedOb = 255;
}