From 0a3e3de5a33405b0de1e93e5734266c48a94e126 Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Fri, 17 Feb 2017 22:01:51 +0100 Subject: [PATCH] refactor fractions a little bit. --- src/kernel/xmlreader.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/kernel/xmlreader.c b/src/kernel/xmlreader.c index 5cecc4fdb..36f003e80 100644 --- a/src/kernel/xmlreader.c +++ b/src/kernel/xmlreader.c @@ -1025,8 +1025,17 @@ static int parse_resources(xmlDocPtr doc) rdata->modifiers[k].flags = RMF_SKILL; } else if (strcmp((const char *)propValue, "material") == 0) { - rdata->modifiers[k].value.sa[0] = (short)(0.5+100*xml_fvalue(node, "value", 0)); - rdata->modifiers[k].value.sa[1] = 100; + int num, den = 100; + double fval = xml_fvalue(node, "value", 0); + // TODO: extract into a function for reading fractions? + num = (int)(fval * den + 0.5); + if (num % 10 == 0) { + // TODO: calculating a GCD would be better than this + num /= 10; + den /= 10; + } + rdata->modifiers[k].value.sa[0] = (short)num; + rdata->modifiers[k].value.sa[1] = (short)den; rdata->modifiers[k].flags = RMF_SAVEMATERIAL; } else if (strcmp((const char *)propValue, "require") == 0) {