rounding error calculating ship damage
This commit is contained in:
Enno Rehling 2009-10-12 18:24:38 +00:00
parent bd8a4d7e77
commit f5800c7831
1 changed files with 9 additions and 12 deletions

View File

@ -246,7 +246,7 @@ shipname(const ship * sh)
int
shipcapacity (const ship * sh)
{
int i;
int i = sh->type->cargo;
/* sonst ist construction:: size nicht ship_type::maxsize */
assert(!sh->type->construction || sh->type->construction->improvement==NULL);
@ -255,12 +255,9 @@ shipcapacity (const ship * sh)
return 0;
#ifdef SHIPDAMAGE
i = ((sh->size * DAMAGE_SCALE - sh->damage) / DAMAGE_SCALE)
* sh->type->cargo / sh->size;
i += ((sh->size * DAMAGE_SCALE - sh->damage) % DAMAGE_SCALE)
* sh->type->cargo / (sh->size*DAMAGE_SCALE);
#else
i = sh->type->cargo;
if (sh->damage) {
i = (int)ceil(i * (1.0 - sh->damage / sh->size / (double)DAMAGE_SCALE));
}
#endif
return i;
}