void OnlineRaceLogic::onRaceStart( const CL_Pointf &p_carPosition, const CL_Angle &p_carRotation ) { cl_log_event(LOG_RACE, "race is starting"); Car &car = Game::getInstance().getPlayer().getCar(); car.reset(); car.setPosition(p_carPosition); car.setAngle(p_carRotation); car.setLocked(true); // reset progress data getProgress().reset(car); // send current state CL_NetGameEvent serialData(""); car.serialize(&serialData); Net::CarState carState; carState.setSerializedData(serialData); m_client->sendCarState(carState); // FIXME: where to store lap count? startRace(3, CL_System::get_time() + RACE_START_DELAY); }
bool CTournamentRace::onEvent(IIrrOdeEvent *pEvent) { bool bRet=false; printf("CTournamentRace::onEvent\n"); if (!m_pNetAdapter->isServer() && pEvent->getType()==eNetServerMessage) { CEventServerMessage *p=(CEventServerMessage *)pEvent; switch (p->getCode()) { case eNetStartRace: startRace(); break; case eNetBackToStart: m_iSelect=m_iReturnState; break; } } return bRet; }
bool CTournamentRace::OnEvent (const SEvent &event) { bool bRet=false; if (event.EventType==EET_KEY_INPUT_EVENT && !event.KeyInput.PressedDown) { if (event.KeyInput.Key==KEY_ESCAPE && !event.KeyInput.PressedDown) { if (m_pSndEngine) m_pSndEngine->play2D("data/sounds/menuback.ogg"); m_iSelect=m_iReturnState; if (m_pNetAdapter) { CEventServerMessage cMsg(eNetBackToStart); m_pNetAdapter->sendPacket(&cMsg); } bRet=true; } if (event.KeyInput.Key==KEY_RETURN && (!m_pNetAdapter || m_pNetAdapter->isServer())) bRet=startRace(); } if (event.EventType==EET_GUI_EVENT) { if (event.GUIEvent.EventType==EGET_TAB_CHANGED && m_pSndEngine) m_pSndEngine->play2D("data/sounds/menuchange.ogg"); if (event.GUIEvent.EventType==EGET_BUTTON_CLICKED) { u32 id=event.GUIEvent.Caller->getID(); if (id==1 && (!m_pNetAdapter || m_pNetAdapter->isServer())) bRet=startRace(); if (id==2) { m_pSndEngine->play2D("data/sounds/menuback.ogg"); m_iSelect=m_iReturnState; if (m_pNetAdapter) { CEventServerMessage cMsg(eNetBackToStart); m_pNetAdapter->sendPacket(&cMsg); } bRet=true; } if (id==3) { m_pSndEngine->play2D("data/sounds/menuchange.ogg"); m_iSelect=1; bRet=true; } } } return bRet; }
void ServerImpl::onVoteSystemFinished() { // voting finished, send event VoteEnd voteEnd; voteEnd.setResult(m_voteSystem.getResult()); sendToAll(voteEnd.buildEvent()); // check if I should take action if (m_voteSystem.getResult() == VOTE_PASSED) { switch (m_voteSystem.getType()) { case VOTE_RESTART_RACE: startRace(); break; default: assert(0 && "unknown VoteType"); } } }