Exemplo n.º 1
0
bool CShipSetting::MouseDragStartMsg(CMouseDragStartMsg *msg) {
	if (!checkStartDragging(msg))
		return false;
	if (_itemName == "NULL")
		return true;

	CTurnOff offMsg;
	offMsg.execute(_target);

	if (isEquals("ChickenSetting") || _itemName == "ChickenBridge") {
		CActMsg actMsg("IncreaseQuantity");
		actMsg.execute("ChickenDispenser");
	}

	if (_itemName != "NULL") {
		CPassOnDragStartMsg passMsg(msg->_mousePos, 1);
		passMsg.execute(_itemName);

		msg->_dragItem = getRoot()->findByName(_itemName);

		CVisibleMsg visibleMsg(true);
		visibleMsg.execute(_itemName);
	}

	CSetFrameMsg frameMsg(0);
	frameMsg.execute(_frameTarget);
	_itemName = "NULL";
	_cursorId = CURSOR_ARROW;
	return true;
}
Exemplo n.º 2
0
void CGameManager::updateMovies() {
	// Initial iteration to mark all the movies as not yet handled
	for (CMovieList::iterator i = CMovie::_playingMovies->begin();
			i != CMovie::_playingMovies->end(); ++i)
		(*i)->_handled = false;

	bool repeatFlag;
	do {
		repeatFlag = false;

		// Scan for a movie to process
		for (CMovieList::iterator i = CMovie::_playingMovies->begin();
				i != CMovie::_playingMovies->end(); ++i) {
			CMovie *movie = *i;
			if (movie->_handled)
				continue;

			CMovieEventList eventsList;
			if (!movie->handleEvents(eventsList))
				movie->removeFromPlayingMovies();

			while (!eventsList.empty()) {
				CMovieEvent *movieEvent = eventsList.front();

				switch (movieEvent->_type) {
				case MET_MOVIE_END: {
					CMovieEndMsg endMsg(movieEvent->_startFrame, movieEvent->_endFrame);
					endMsg.execute(movieEvent->_gameObject);
					break;
				}

				case MET_FRAME: {
					CMovieFrameMsg frameMsg(movieEvent->_initialFrame, 0);
					frameMsg.execute(movieEvent->_gameObject);
					break;
				}

				default:
					break;
				}

				eventsList.remove(movieEvent);
			}

			// Flag the movie as having been handled
			movie->_handled = true;
			repeatFlag = true;
			break;
		}
	} while (repeatFlag);
}
Exemplo n.º 3
0
void CGameManager::frameMessage(CRoomItem *room) {
	if (room) {
		// Signal the next frame
		CFrameMsg frameMsg(g_vm->_events->getTicksCount());
		frameMsg.execute(room, nullptr, MSGFLAG_SCAN);

		if (!_soundMaker) {
			// Check for a sound maker in the room
			_soundMaker = dynamic_cast<CBackgroundSoundMaker *>(
				_project->findByName("zBackgroundSoundMaker"));
		}

		// If there's a sound maker, dispatch the event to it as well
		if (_soundMaker)
			frameMsg.execute(_soundMaker);
	}
}
Exemplo n.º 4
0
void OSMovie::addEvent(int frameNumber, CGameObject *obj) {
	if (_aviSurface.addEvent(frameNumber, obj)) {
		CMovieFrameMsg frameMsg(frameNumber, 0);
		frameMsg.execute(obj);
	}
}