diff options
| author | 2016-04-28 07:51:07 +0200 | |
|---|---|---|
| committer | 2016-04-28 07:51:07 +0200 | |
| commit | b5f0f2bfb2602a0cb3c19bed6772359f48eff428 (patch) | |
| tree | 863a0d5e77ec9e23ba7b348eb3da76622913162d /parsingtoolbox.cpp | |
| parent | 7e41a91dfd78485ab94a064b8633dcbca28efe6e (diff) | |
| download | OneRoll-b5f0f2bfb2602a0cb3c19bed6772359f48eff428.tar.gz OneRoll-b5f0f2bfb2602a0cb3c19bed6772359f48eff428.zip | |
Fix percentage value for List operator.
Diffstat (limited to 'parsingtoolbox.cpp')
| -rw-r--r-- | parsingtoolbox.cpp | 49 |
1 files changed, 19 insertions, 30 deletions
diff --git a/parsingtoolbox.cpp b/parsingtoolbox.cpp index 705f777..38221f9 100644 --- a/parsingtoolbox.cpp +++ b/parsingtoolbox.cpp @@ -429,18 +429,11 @@ bool ParsingToolBox::readDiceRange(QString& str,qint64& start, qint64& end) str=str.remove(0,1); return true; } - else - { - return false; - } } } - else - { - return false; - } } } + return false; } ParsingToolBox::LIST_OPERATOR ParsingToolBox::readListOperator(QString& str) @@ -497,7 +490,7 @@ void ParsingToolBox::readProbability(QStringList& str,QList<Range>& ranges) int i=0; int j=0; //range - foreach(QString line,str) + for(QString line:str) { int pos = line.indexOf('['); if(-1!=pos) @@ -515,7 +508,7 @@ void ParsingToolBox::readProbability(QStringList& str,QList<Range>& ranges) totalDistance += end-start+1; ++i; } - else + else//pourcentage { Range range; range.setStart(start); @@ -532,29 +525,25 @@ void ParsingToolBox::readProbability(QStringList& str,QList<Range>& ranges) } - qint64 totalDistPourcent = totalDistance * undefDistance / (100-undefDistance); - - if(totalDistPourcent<undefCount) + if(undefDistance!=0) { - totalDistPourcent = undefCount; - } - - for(int i = 0; i< ranges.size(); ++i) - { - Range tmp = ranges.at(i); - if(!tmp.isFullyDefined()) + qreal ratio = (qreal)100.0 / (qreal)undefDistance; + qint64 realStart=0; + for(int i = 0; i< ranges.size(); ++i) { - int dist = tmp.getStart(); - tmp.setStart(maxValue+1); - maxValue+=1; - double truc = undefDistance*1.0/dist; - - tmp.setEnd(maxValue+(truc*totalDistPourcent)); - maxValue = maxValue+(truc*totalDistPourcent); - ranges[i]=tmp; + Range tmp = ranges.at(i); + if(!tmp.isFullyDefined()) + { + int dist = tmp.getStart(); + tmp.setStart(realStart+1); + double truc = dist*ratio; + + tmp.setEnd(realStart+truc); + realStart = tmp.getEnd(); + //qDebug() <<"start:"<< tmp.getStart() << "end:"<< realStart; + ranges[i]=tmp; + } } } - - } |