Core::Core() : mGameRunning( false ), mGameMode( MODE_UNKNOWN ), mOutcome( OUTCOME_UNKNOWN ), mOrder( ORDER_UNKNOWN ), mOwnClass( CLASS_UNKNOWN ), mOpponentClass( CLASS_UNKNOWN ), mDuration( 0 ), mGameClientRestartRequired( false ) { mTimer = new QTimer( this ); connect( mTimer, SIGNAL( timeout() ), this, SLOT( Tick() ) ); mTimer->start( 1000 ); // Connect log connect( &mLogTracker, SIGNAL( HandleOutcome(Outcome) ), this, SLOT( HandleOutcome(Outcome) ) ); connect( &mLogTracker, SIGNAL( HandleOrder(GoingOrder) ), this, SLOT( HandleOrder(GoingOrder) ) ); connect( &mLogTracker, SIGNAL( HandleOwnClass(Class) ), this, SLOT( HandleOwnClass(Class) ) ) ; connect( &mLogTracker, SIGNAL( HandleOpponentClass(Class) ), this, SLOT( HandleOpponentClass(Class) ) ); connect( &mLogTracker, SIGNAL( HandleGameMode(GameMode) ), this, SLOT( HandleGameMode(GameMode) ) ); connect( &mLogTracker, SIGNAL( HandleMatchStart() ), this, SLOT( HandleMatchStart() ) ); connect( &mLogTracker, SIGNAL( HandleMatchEnd(const ::CardHistoryList&, bool) ), this, SLOT( HandleMatchEnd(const ::CardHistoryList&, bool) ) ); ResetResult(); }
void ResultTracker::UploadResult() { DBG( "UploadResult" ); mResult.rank = DetermineRank(); DBG( "Determined Rank: %d", mResult.rank ); mResultsQueue.Add( mResult ); ResetResult(); }
void Core::HandleMatchEnd( const ::CardHistoryList& cardHistoryList, bool wasSpectating ) { if( wasSpectating ) { LOG( "Ignore spectated match" ); ResetResult(); return; } DEBUG( "HandleMatchEnd" ); mCardHistoryList = cardHistoryList; mDuration = mDurationTimer.elapsed() / 1000; UploadResult(); }
void ResultTracker::HandleMatchEnd( const ::CardHistoryList& cardHistoryList ) { if( mSpectating ) { LOG( "Ignore spectated match" ); ResetResult(); return; } DBG( "HandleMatchEnd" ); mResult.cardList = cardHistoryList; mResult.duration = mDurationTimer.elapsed() / 1000; mResult.mode = mCurrentGameMode; UploadResult(); }
void Core::UploadResult() { DEBUG( "UploadResult" ); Tracker::Instance()->AddResult( mGameMode, mOutcome, mOrder, mOwnClass, mOpponentClass, mLogTracker.CardHistoryList(), mDuration ); ResetResult(); }
ResultTracker::ResultTracker() : mSpectating( false ), mCurrentGameMode( MODE_UNKNOWN ) { connect( &mLogTracker, &HearthstoneLogTracker::HandleOutcome, this, &ResultTracker::HandleOutcome ); connect( &mLogTracker, &HearthstoneLogTracker::HandleOrder, this, &ResultTracker::HandleOrder ); connect( &mLogTracker, &HearthstoneLogTracker::HandleOwnClass, this, &ResultTracker::HandleOwnClass ) ; connect( &mLogTracker, &HearthstoneLogTracker::HandleOpponentClass, this, &ResultTracker::HandleOpponentClass ); connect( &mLogTracker, &HearthstoneLogTracker::HandleGameMode, this, &ResultTracker::HandleGameMode ); connect( &mLogTracker, &HearthstoneLogTracker::HandleLegend, this, &ResultTracker::HandleLegend ); connect( &mLogTracker, &HearthstoneLogTracker::HandleTurn, this, &ResultTracker::HandleTurn ); connect( &mLogTracker, &HearthstoneLogTracker::HandleSpectating, this, &ResultTracker::HandleSpectating ); connect( &mLogTracker, &HearthstoneLogTracker::HandleMatchStart, this, &ResultTracker::HandleMatchStart ); connect( &mLogTracker, &HearthstoneLogTracker::HandleMatchEnd, this, &ResultTracker::HandleMatchEnd ); ResetResult(); }