136 lines
3.6 KiB
C++
136 lines
3.6 KiB
C++
#include "qvectorhelper.h"
|
|
#include <qvector.h>
|
|
|
|
int QVectorHelper::minSec1; // set by database
|
|
int QVectorHelper::minSec2; // set by database
|
|
int QVectorHelper::minSec3; // set by database
|
|
int QVectorHelper::minTrackTime; // set by database
|
|
|
|
QVectorHelper::QVectorHelper() {
|
|
}
|
|
|
|
int QVectorHelper::getCurTime(const QVector<int> x) {
|
|
if (x.size() >= 3) {
|
|
return x.at(0) + x.at(1) + x.at(2);
|
|
}
|
|
else {
|
|
return 9999;
|
|
}
|
|
}
|
|
|
|
int QVectorHelper::getMinSec1(const QVector<QVector<int>> x) {
|
|
int min = 9999;
|
|
if (x.size() > 0) {
|
|
for (auto vec : x) {
|
|
if (vec.size() >= 4) {
|
|
if (vec.at(0) >= minSec1 && vec.at(3) >= minTrackTime) {
|
|
min = vec.at(0);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
return 9999;
|
|
}
|
|
|
|
for (int i = 1; i < x.size(); i++) {
|
|
if (x.at(i).size() >= 4) { // entire lap
|
|
if (x.at(i).at(0) < min) {
|
|
if (x.at(i).at(0) >= minSec1 && x.at(i).at(3) >= minTrackTime) {
|
|
min = x.at(i).at(0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return min;
|
|
}
|
|
int QVectorHelper::getMinSec2(const QVector<QVector<int>> x) {
|
|
int min = 9999;
|
|
if (x.size() > 0) {
|
|
for (auto vec : x) {
|
|
if (vec.size() >= 4) {
|
|
if (vec.at(1) >= minSec2 && vec.at(3) >= minTrackTime) {
|
|
min = vec.at(1);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
return 9999;
|
|
}
|
|
|
|
for (int i = 1; i < x.size(); i++) {
|
|
if (x.at(0).size() >= 4) { // entire lap
|
|
if (x.at(i).at(1) < min) {
|
|
if (x.at(0).at(1) >= minSec2 && x.at(i).at(3) >= minTrackTime) {
|
|
min = x.at(i).at(1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return min;
|
|
}
|
|
int QVectorHelper::getMinSec3(const QVector<QVector<int>> x) {
|
|
int min = 9999;
|
|
if (x.size() > 0) {
|
|
for (auto vec : x) {
|
|
if (vec.size() >= 4) {
|
|
if (vec.at(2) >= minSec3 && vec.at(3) >= minTrackTime) {
|
|
min = vec.at(2);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
// no times set
|
|
return 9999;
|
|
}
|
|
|
|
for (int i = 1; i < x.size(); i++) {
|
|
if (x.at(i).size() >= 4) { // entire lap
|
|
if (x.at(i).at(2) < min) {
|
|
if (x.at(0).at(2) >= minSec3 && x.at(i).at(3) >= minTrackTime) {
|
|
min = x.at(i).at(2);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return min;
|
|
}
|
|
|
|
int QVectorHelper::getMin(const QVector<QVector<int>> x) {
|
|
int min = 9999;
|
|
if (x.size() > 0) { // at least one lap is available
|
|
|
|
for (auto vec : x) {
|
|
if (vec.size() >= 3) { // check if 3 sectors are available
|
|
if (getCurTime(x.at(0)) >= minTrackTime &&
|
|
vec.at(0) > QVectorHelper::minSec1 &&
|
|
vec.at(1) > QVectorHelper::minSec2 &&
|
|
vec.at(2) >
|
|
QVectorHelper::minSec3) { // check if lap is valid
|
|
min = getCurTime(vec);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
return 9999;
|
|
}
|
|
for (int i = 1; i < x.size(); i++) {
|
|
if (getCurTime(x.at(i)) < min) {
|
|
if (getCurTime(x.at(i)) >= minTrackTime &&
|
|
x.at(i).at(0) > QVectorHelper::minSec1 &&
|
|
x.at(i).at(1) > QVectorHelper::minSec2 &&
|
|
x.at(i).at(2) > QVectorHelper::minSec3) {
|
|
min = getCurTime(x.at(i));
|
|
}
|
|
}
|
|
}
|
|
return min;
|
|
}
|