示例#1
0
void Module::enter() {
	if (!_hasModule)
		throw Common::Exception("Module::enter(): Lacking a module?!?");

	if (!_pc)
		throw Common::Exception("Module::enter(): Lacking a PC?!?");

	_console->printf("Entering module \"%s\"", _name.c_str());

	Common::UString startMovie = _ifo.getStartMovie();
	if (!startMovie.empty())
		playVideo(startMovie);

	float entryX, entryY, entryZ, entryAngle;
	if (!getEntryObjectLocation(entryX, entryY, entryZ, entryAngle))
		getEntryIFOLocation(entryX, entryY, entryZ, entryAngle);

	// Roughly head position
	CameraMan.setPosition(entryX, entryY, entryZ + 1.8f);
	CameraMan.setOrientation(90.0f, 0.0f, entryAngle);
	CameraMan.update();

	enterArea();

	_running = true;
	_exit    = false;
}
示例#2
0
void Module::run() {
	enter();
	_running = true;

	EventMan.enableKeyRepeat();

	try {

		EventMan.flushEvents();

		while (!EventMan.quitRequested() && !_exit && !_newArea.empty()) {
			replaceModule();
			enterArea();
			if (_exit)
				break;

			handleEvents();

			if (!EventMan.quitRequested() && !_exit && !_newArea.empty())
				EventMan.delay(10);
		}

	} catch (Common::Exception &e) {
		_running = false;

		e.add("Failed running module \"%s\"", _ifo.getName().getString().c_str());
		throw e;
	}

	EventMan.enableKeyRepeat(0);

	_running = false;
}
示例#3
0
void Module::processEventQueue() {
	if (!isRunning())
		return;

	replaceModule();
	enterArea();

	if (!isRunning())
		return;

	handleEvents();
	handleActions();
}
示例#4
0
文件: module.cpp 项目: jbowtie/xoreos
void Module::processEventQueue() {
	if (!isRunning())
		return;

	replaceModule();
	enterArea();

	if (!isRunning())
		return;

	handleEvents();
	handleActions();

	_ingameGUI->updatePartyMember(0, *_pc);
}
示例#5
0
void Module::enter() {
	if (!_hasModule || !_area)
		throw Common::Exception("Module::enter(): Lacking a module?!?");

	if (!_pc)
		throw Common::Exception("Module::enter(): Lacking a PC?!?");

	_console->printf("Entering module \"%s\"", _module.c_str());

	CameraMan.reset();
	CameraMan.setOrientation(90.0f, 0.0f, 0.0f);
	CameraMan.update();

	enterArea();

	_running = true;
	_exit    = false;
}
示例#6
0
文件: module.cpp 项目: strand/xoreos
void Module::run() {
	enter();
	_running = true;

	EventMan.enableKeyRepeat();

	_ingameGUI->show();

	try {

		EventMan.flushEvents();

		while (!EventMan.quitRequested() && !_exit && !_newArea.empty()) {
			replaceModule();
			enterArea();
			if (_exit)
				break;

			handleEvents();
			handleActions();

			_ingameGUI->updatePartyMember(0, *_pc);

			if (!EventMan.quitRequested() && !_exit && !_newArea.empty())
				EventMan.delay(10);
		}

	} catch (Common::Exception &e) {
		_running = false;

		e.add("Failed running module \"%s\"", _ifo.getName().getString().c_str());
		throw e;
	}

	_ingameGUI->stopConversation();
	_ingameGUI->hide();

	EventMan.enableKeyRepeat(0);

	_running = false;
}