aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/parsingtoolbox.cpp
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2016-04-28 07:51:07 +0200
committerRenaud G <renaud@rolisteam.org>2016-04-28 07:51:07 +0200
commitb5f0f2bfb2602a0cb3c19bed6772359f48eff428 (patch)
tree863a0d5e77ec9e23ba7b348eb3da76622913162d /parsingtoolbox.cpp
parent7e41a91dfd78485ab94a064b8633dcbca28efe6e (diff)
downloadOneRoll-b5f0f2bfb2602a0cb3c19bed6772359f48eff428.tar.gz
OneRoll-b5f0f2bfb2602a0cb3c19bed6772359f48eff428.zip
Fix percentage value for List operator.
Diffstat (limited to 'parsingtoolbox.cpp')
-rw-r--r--parsingtoolbox.cpp49
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;
+ }
}
}
-
-
}