예제 #1
0
bool CSuccUBus::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
    if (!_field1D8) {
        Rect tempRect = _rect1;
        tempRect.translate(_bounds.left, _bounds.top);

        if (!_enabled || (_field188 && tempRect.contains(msg->_mousePos))) {
            CTurnOn onMsg;
            onMsg.execute(this);
            _enabled = true;
        } else if (getRandomNumber(256) < 130) {
            _enabled = false;
            CTurnOff offMsg;
            offMsg.execute(this);
        } else {
            switch (getRandomNumber(2)) {
            case 0:
                startTalking(this, 230055, findView());
                break;
            case 1:
                startTalking(this, 230067, findView());
                break;
            case 2:
                startTalking(this, 230045, findView());
                break;
            default:
                break;
            }
        }
    }

    return true;
}
예제 #2
0
bool CBilgeSuccUBus::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
	if (_enabled) {
		switch (getRandomNumber(4)) {
		case 0:
		case 4: {
			_enabled = false;
			CTurnOff offMsg;
			offMsg.execute(this);
			break;
		}

		case 1:
			startTalking(this, 230055);
			break;

		case 2:
			startTalking(this, 230067);
			break;

		case 3:
			startTalking(this, 230045);
			break;

		default:
			break;
		}
	} else {
		CTurnOn onMsg;
		onMsg.execute(this);
		_enabled = true;
	}

	return true;
}
예제 #3
0
bool CSeasonalAdjustment::TurnOn(CTurnOn *msg) {
	if (_fieldE0) {
		_fieldE0 = false;
		CTurnOn onMsg;
		onMsg.execute("LeftPanExit");
		onMsg.execute("RightPanExit");
	}

	return true;
}
예제 #4
0
bool CAutoSoundPlayer::LoadSuccessMsg(CLoadSuccessMsg *msg) {
	if (_active) {
		_soundHandle = -1;
		_active = false;

		CTurnOn onMsg;
		onMsg.execute(this);
	}

	return true;
}
예제 #5
0
bool CSuccUBus::SignalObject(CSignalObject *msg) {
    if (msg->_numValue == 1) {
        _string2 = msg->_strValue;
        _field15C = 1;
        setVisible(true);
        CTurnOn onMsg;
        onMsg.execute(this);
    }

    return true;
}
예제 #6
0
bool CSuccUBus::SignalObject(CSignalObject *msg) {
	if (msg->_numValue == 1) {
		_signalTarget = msg->_strValue;
		_signalFlag = true;
		setVisible(true);
		CTurnOn onMsg;
		onMsg.execute(this);
	}

	return true;
}
예제 #7
0
bool CSeasonBackground::MovieEndMsg(CMovieEndMsg *msg) {
    if (msg->_endFrame == _defaultFrame) {
        CTurnOn onMsg;
        onMsg.execute("SeasonalAdjust");
    }

    if (msg->_endFrame == 91 && !_flag) {
        CStatusChangeMsg changeMsg;
        changeMsg.execute("PickUpSpeechCentre");
    }

    return true;
}
예제 #8
0
파일: deskbot.cpp 프로젝트: 86400/scummvm
bool CDeskbot::MovieEndMsg(CMovieEndMsg *msg) {
    bool flag = false;
    if (_npcFlags & NPCFLAG_10000) {
        if (_classNum) {
            petSetArea(PET_ROOMS);
            dec54();
            unlockMouse();
            playSound("z#47.wav");
            _classNum = NO_CLASS;
        }

        _npcFlags &= ~NPCFLAG_10000;
        flag = true;
    }

    if (_npcFlags & NPCFLAG_40000) {
        _deskbotActive = false;
        _npcFlags &= ~(NPCFLAG_40000 | NPCFLAG_20000);

        if (_npcFlags & NPCFLAG_80000) {
            CTurnOn turnOn;
            turnOn.execute("EmbBellbotTrigger");
            unlockMouse();
            changeView("EmbLobby.Node 4.N", "");
        } else if (_npcFlags & NPCFLAG_100000) {
            CTurnOn turnOn;
            turnOn.execute("EmbDoorBotTrigger");
            unlockMouse();
            changeView("EmbLobby.Node 4.N", "");
        }

        _npcFlags &= ~(NPCFLAG_80000 | NPCFLAG_100000);
        flag = true;
    }

    if (_npcFlags & NPCFLAG_20000) {
        _npcFlags &= ~(NPCFLAG_40000 | NPCFLAG_20000);
        setTalking(this, true, findView());

        _npcFlags |= NPCFLAG_START_IDLING;
        flag = true;
    }

    if (!flag)
        CTrueTalkNPC::MovieEndMsg(msg);

    return true;
}
예제 #9
0
bool CSGTStateRoom::ActMsg(CActMsg *msg) {
	CPetControl *pet = getPetControl();
	uint roomFlags = pet->getRoomFlags();
	uint assignedRoom = pet->getAssignedRoomFlags();

	if (roomFlags != assignedRoom) {
		petDisplayMessage(NOT_YOUR_ASSIGNED_ROOM);
	} else if (_isClosed) {
		CTurnOn onMsg;
		onMsg.execute(this);
	} else {
		CTurnOff offMsg;
		offMsg.execute(this);
	}

	return true;
}
예제 #10
0
bool CLightSwitch::PETActivateMsg(CPETActivateMsg *msg) {
	if (msg->_name == "Light") {
		if (_flag) {
			CTurnOff offMsg;
			offMsg.execute("1stClassState", CLight::_type, MSGFLAG_CLASS_DEF | MSGFLAG_SCAN);

		} else {
			CTurnOn onMsg;
			onMsg.execute("1stClassState", CLight::_type, MSGFLAG_CLASS_DEF | MSGFLAG_SCAN);
			_flag = false;
			if (_turnOnTV)
				CTelevision::_turnOn = false;
		}
	}

	return true;
}
예제 #11
0
bool CShipSetting::AddHeadPieceMsg(CAddHeadPieceMsg *msg) {
	_cursorId = CURSOR_HAND;

	if (msg->_value == "Enable") {
		CTurnOn onMsg;
		onMsg.execute(_target);

		if (isEquals("ChickenSetting")) {
			CActMsg actMsg("DecreaseQuantity");
			actMsg.execute("ChickenDispenser");
		}
	} else {
		CTurnOff offMsg;
		offMsg.execute(_target);
	}

	return true;
}
예제 #12
0
bool CNodeAutoSoundPlayer::EnterNodeMsg(CEnterNodeMsg *msg) {
	CNodeItem *node = findNode();
	CRoomItem *room = findRoom();

	if (node == msg->_newNode) {
		CTurnOn onMsg;
		onMsg.execute(this);

		if (_enabled) {
			CChangeMusicMsg changeMsg;
			changeMsg._action = MUSIC_STOP;
			changeMsg.execute(room, CAutoMusicPlayer::_type,
				MSGFLAG_CLASS_DEF | MSGFLAG_BREAK_IF_HANDLED | MSGFLAG_SCAN);
		}
	}

	return true;
}
예제 #13
0
bool CViewAutoSoundPlayer::EnterViewMsg(CEnterViewMsg *msg) {
	CViewItem *view = findView();
	CRoomItem *room = findRoom();

	if (view == msg->_newView) {
		CTurnOn onMsg;
		onMsg.execute(this);

		if (_enabled) {
			CChangeMusicMsg changeMsg;
			changeMsg._action = MUSIC_STOP;
			changeMsg.execute(room, CAutoMusicPlayer::_type,
				MSGFLAG_CLASS_DEF |MSGFLAG_BREAK_IF_HANDLED | MSGFLAG_SCAN);
		}
	}

	return true;
}
예제 #14
0
bool CPickUpBarGlass::MouseDragStartMsg(CMouseDragStartMsg *msg) {
	if (checkStartDragging(msg) && _enabled) {
		CTurnOn onMsg;
		onMsg.execute("BeerGlass");
		CVisibleMsg visibleMsg;
		visibleMsg.execute("BeerGlass");
		CPassOnDragStartMsg passMsg(msg->_mousePos, 1, 3);
		passMsg.execute("BeerGlass");

		msg->_dragItem = getRoot()->findByName("BeerGlass");

		CActMsg actMsg("PlayerTakesGlass");
		actMsg.execute("Barbot");
		return true;
	} else {
		return false;
	}
}
예제 #15
0
bool CArboretumGate::ActMsg(CActMsg *msg) {
	if (msg->_action == "PlayerGetsSpeechCentre") {
		_v1 = 1;
		CVisibleMsg visibleMsg(true);
		visibleMsg.execute("SpCtrOverlay");
	} else if (msg->_action == "ExitLFrozen") {
		if (_v3) {
			_viewName2 = "FrozenArboretum.Node 2.W";
			CTurnOn onMsg;
			onMsg.execute(this);
		} else {
			changeView("FrozenArboretum.Node 2.W");
		}
	} else if (msg->_action == "ExitRFrozen") {
		if (_v3) {
			_viewName2 = "FrozenArboretum.Node 2.E";
			CTurnOn onMsg;
			onMsg.execute(this);
		} else {
			changeView("FrozenArboretum.Node 2.E");
		}
	} else if (msg->_action == "ExitLNormal") {
		if (_v3) {
			_viewName2 = "Arboretum.Node 2.W";
			CTurnOn onMsg;
			onMsg.execute(this);
		} else {
			changeView("Arboretum.Node 2.W");
		}
	} else if (msg->_action == "ExitRNormal") {
		if (_v3) {
			_viewName2 = "Arboretum.Node 2.E";
			CTurnOn onMsg;
			onMsg.execute(this);
		}
		else {
			changeView("Arboretum.Node 2.E");
		}
	}

	return true;
}