void VotingSystem::Update() { if( g_app->GetGame()->m_winner != -1 ) { return; } m_updateTimer += SERVER_ADVANCE_PERIOD; if( m_updateTimer >= 1 ) { m_updateTimer = 0; for( int i = 0; i < m_votes.Size(); ++i ) { if( m_votes.ValidIndex(i) ) { Vote *vote = m_votes[i]; if( vote->m_result == Vote::VoteUnknown ) { vote->m_timer -= 1; int required = vote->GetVotesRequired(); int yes, no, abstain; vote->GetCurrentVote( &yes, &no, &abstain ); if( yes >= required ) { vote->Finish( Vote::VoteYes ); } else if( no >= required || abstain == 0 || vote->m_timer <= 0 ) { vote->Finish( Vote::VoteNo ); } } } } } }