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,23 +246,20 @@ 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);
/* sonst ist construction:: size nicht ship_type::maxsize */
assert(!sh->type->construction || sh->type->construction->improvement==NULL);
if (sh->type->construction && sh->size!=sh->type->construction->maxsize)
return 0;
if (sh->type->construction && sh->size!=sh->type->construction->maxsize)
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;
return i;
}
void