/** Called when a soccer game is restarted. */ void SoccerWorld::reset() { WorldWithRank::reset(); if(race_manager->hasTimeTarget()) { WorldStatus::setClockMode(WorldStatus::CLOCK_COUNTDOWN, race_manager->getTimeTarget()); m_count_down_reached_zero = false; } else WorldStatus::setClockMode(CLOCK_CHRONO); m_can_score_points = true; m_red_goal = 0; m_blue_goal = 0; m_red_scorers.clear(); m_red_score_times.clear(); m_blue_scorers.clear(); m_blue_score_times.clear(); m_ball_hitter = -1; m_ball = NULL; m_red_defender = -1; m_blue_defender = -1; m_ball_invalid_timer = 0.0f; TrackObjectManager* tom = getTrack()->getTrackObjectManager(); assert(tom); PtrVector<TrackObject>& objects = tom->getObjects(); for (unsigned int i = 0; i < objects.size(); i++) { TrackObject* obj = objects.get(i); if(!obj->isSoccerBall()) continue; m_ball = obj; // Handle one ball only break; } if (!m_ball) Log::fatal("SoccerWorld","Ball is missing in soccer field, abort."); if (m_goal_sound != NULL && m_goal_sound->getStatus() == SFXBase::SFX_PLAYING) { m_goal_sound->stop(); } initKartList(); resetAllPosition(); resetBall(); } // reset
/** Called when a soccer game is restarted. */ void SoccerWorld::reset() { WorldWithRank::reset(); if (race_manager->hasTimeTarget()) { WorldStatus::setClockMode(WorldStatus::CLOCK_COUNTDOWN, race_manager->getTimeTarget()); } else { WorldStatus::setClockMode(CLOCK_CHRONO); } m_count_down_reached_zero = false; m_red_scorers.clear(); m_red_score_times.clear(); m_blue_scorers.clear(); m_blue_score_times.clear(); m_ball_hitter = -1; m_red_kdm.clear(); m_blue_kdm.clear(); m_ball_heading = 0.0f; m_ball_invalid_timer = 0; if (m_goal_sound != NULL && m_goal_sound->getStatus() == SFXBase::SFX_PLAYING) { m_goal_sound->stop(); } if (Track::getCurrentTrack()->hasNavMesh()) { m_ball_track_sector->reset(); } initKartList(); m_ball->reset(); m_bgd.reset(); // Make the player kart in profiling mode up // ie make this kart less likely to affect gaming result if (UserConfigParams::m_arena_ai_stats) getKart(8)->flyUp(); } // reset
/** Called when a battle is restarted. */ void SoccerWorld::reset() { WorldWithRank::reset(); if(race_manager->hasTimeTarget()) { WorldStatus::setClockMode(WorldStatus::CLOCK_COUNTDOWN, race_manager->getTimeTarget()); countDownReachedZero = false; } else WorldStatus::setClockMode(CLOCK_CHRONO); m_can_score_points = true; memset(m_team_goals, 0, sizeof(m_team_goals)); // Reset original positions for the soccer balls TrackObjectManager* tom = getTrack()->getTrackObjectManager(); assert(tom); m_redScorers.clear(); m_redScoreTimes.clear(); m_blueScorers.clear(); m_blueScoreTimes.clear(); m_lastKartToHitBall = -1; PtrVector<TrackObject>& objects = tom->getObjects(); for(unsigned int i=0; i<objects.size(); i++) { TrackObject* obj = objects.get(i); if(!obj->isSoccerBall()) continue; obj->reset(); obj->getPhysicalObject()->reset(); } if (m_goal_sound != NULL && m_goal_sound->getStatus() == SFXBase::SFX_PLAYING) { m_goal_sound->stop(); } initKartList(); } // reset