- Fixed: The save percentage for Doom's green armor was slightly too low

which caused roundoff errors that made it less than 1/3 effective.
- Added support for "RRGGBB" strings to V_GetColor.
- Fixed: Desaturation maps for the TEXTURES lump were calculated incorrectly.
- Changed GetSpriteIndex to cache the last used sprite name so that the code
  using this function doesn't have to do it itself.
- Moved some more code for the state parser into p_states.cpp.
- Fixed: TDeletingArray should not try to delete NULL pointers.

SVN r1312 (trunk)
This commit is contained in:
Christoph Oelckers 2008-12-07 12:11:59 +00:00
commit 081658d3d5
24 changed files with 1978 additions and 1901 deletions

View file

@ -454,33 +454,48 @@ int V_GetColorFromString (const DWORD *palette, const char *cstr)
}
else
{
// Treat it as a space-delemited hexadecimal string
for (i = 0; i < 3; ++i)
if (strlen(cstr) == 6)
{
// Skip leading whitespace
while (*cstr <= ' ' && *cstr != '\0')
char *p;
int color = strtol(cstr, &p, 16);
if (*p == 0)
{
cstr++;
// RRGGBB string
c[0] = (color & 0xff0000) >> 16;
c[1] = (color & 0xff00) >> 8;
c[2] = (color & 0xff);
}
// Extract a component and convert it to eight-bit
for (p = 0; *cstr > ' '; ++p, ++cstr)
}
else
{
// Treat it as a space-delemited hexadecimal string
for (i = 0; i < 3; ++i)
{
if (p < 2)
// Skip leading whitespace
while (*cstr <= ' ' && *cstr != '\0')
{
val[p] = *cstr;
cstr++;
}
}
if (p == 0)
{
c[i] = 0;
}
else
{
if (p == 1)
// Extract a component and convert it to eight-bit
for (p = 0; *cstr > ' '; ++p, ++cstr)
{
val[1] = val[0];
if (p < 2)
{
val[p] = *cstr;
}
}
if (p == 0)
{
c[i] = 0;
}
else
{
if (p == 1)
{
val[1] = val[0];
}
c[i] = ParseHex (val);
}
c[i] = ParseHex (val);
}
}
}