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; }
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); }
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); } }
void OSMovie::addEvent(int frameNumber, CGameObject *obj) { if (_aviSurface.addEvent(frameNumber, obj)) { CMovieFrameMsg frameMsg(frameNumber, 0); frameMsg.execute(obj); } }