コード例 #1
0
//Stick
bool Scene710::Object5::startAction(CursorType action, Event &event) {
	Scene710 *scene = (Scene710 *)BF_GLOBALS._sceneManager._scene;

	switch (action) {
	case CURSOR_LOOK:
		if (scene->_v1D64 <= 2)
			return NamedObject::startAction(action, event);
		else {
			SceneItem::display(710, 3);
			scene->_v1D66 = 1;
			return true;
		}
	case CURSOR_USE:
		if ((scene->_kid._position.x < 0) && (scene->_v1D62 == 1)) {
			scene->_v1D64++;
			if (scene->_v1D66 == 0) {
				BF_GLOBALS._player.disableControl();
				scene->_v1D62 = 0;
				scene->_sceneMode = 7105;
				scene->setAction(&scene->_sequenceManager1, scene, 7105, &BF_GLOBALS._player, &scene->_stick, &scene->_dog, NULL);
			} else {
				BF_GLOBALS._player.disableControl();
				scene->_sceneMode = 7101;
				scene->setAction(&scene->_sequenceManager1, scene, 7101, &BF_GLOBALS._player, &scene->_dog, &scene->_stick, NULL);
			}
			return true;
		}
		// No break on purpose
	default:
		return NamedObject::startAction(action, event);
	}
}
コード例 #2
0
//Stick
bool Scene710::Object5::startAction(CursorType action, Event &event) {
	Scene710 *scene = (Scene710 *)BF_GLOBALS._sceneManager._scene;

	switch (action) {
	case CURSOR_LOOK:
		if (scene->_stickThrowCount <= 2)
			return NamedObject::startAction(action, event);
		else {
			SceneItem::display2(710, 3);
			scene->_watchCrate = true;
			return true;
		}
	case CURSOR_USE:
		if ((scene->_kid._position.x < 0) && (scene->_dogLying)) {
			scene->_stickThrowCount++;
			if (!scene->_watchCrate) {
				BF_GLOBALS._player.disableControl();
				scene->_dogLying = false;
				scene->_sceneMode = 7105;
				scene->setAction(&scene->_sequenceManager1, scene, 7105, &BF_GLOBALS._player, &scene->_stick, &scene->_dog, NULL);
			} else {
				BF_GLOBALS._player.disableControl();
				scene->_sceneMode = 7101;
				scene->setAction(&scene->_sequenceManager1, scene, 7101, &BF_GLOBALS._player, &scene->_dog, &scene->_stick, NULL);
			}
			return true;
		}
		// fall through
	default:
		return NamedObject::startAction(action, event);
	}
}
コード例 #3
0
void Scene710::Action1::signal() {
	Scene710 *scene = (Scene710 *)BF_GLOBALS._sceneManager._scene;

	switch (_actionIndex++) {
	case 0:
		BF_GLOBALS._player.disableControl();
		_state = 7104;
		if (BF_INVENTORY.getObjectScene(INV_CRATE1) == 1)
			_state = 7105;
		setDelay(3);
		break;
	case 1: {
		PlayerMover *mover = new PlayerMover();
		BF_GLOBALS._player.addMover(mover, &scene->_laura._position, scene);
		break;
		}
	case 2:
		BF_GLOBALS._player._strip = 2;
		scene->_stripManager.start(_state, this);
		break;
	case 3:
		if (_state == 7105)
			BF_GLOBALS._player.enableControl();
		else {
			BF_GLOBALS._player.disableControl();
			scene->_sceneMode = 7106;
			scene->setAction(&scene->_sequenceManager1, scene, 7106, &BF_GLOBALS._player, &scene->_laura, &scene->_kid, &scene->_dog, NULL);
		}
		if (_state < 7104) {
			_state++;
			if ((_state != 7104) && (BF_INVENTORY.getObjectScene(INV_CRATE1) == 1))
					_state = 7105;
		}
		remove();
		break;
	default:
		break;
	}
}