1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-20 20:23:03 +02:00

Added palette colors for neutral "player" (Thx to Dru). Support for using them via blueToPlayersAdv(surface, 255).

This commit is contained in:
Michał W. Urbańczyk 2009-06-30 15:36:12 +00:00
parent 1cac083239
commit 9aff190899
4 changed files with 33 additions and 2 deletions

View File

@ -1514,11 +1514,12 @@ void CPlayerInterface::openHeroWindow(const CGHeroInstance *hero)
void CPlayerInterface::heroArtifactSetChanged(const CGHeroInstance*hero)
{
boost::unique_lock<boost::recursive_mutex> un(*pim);
if(adventureInt->heroWindow->curHero)
if(adventureInt->heroWindow->curHero) //hero window is opened
{
adventureInt->heroWindow->deactivate();
adventureInt->heroWindow->setHero(adventureInt->heroWindow->curHero);
adventureInt->heroWindow->activate();
return;
}
CExchangeWindow* cew = dynamic_cast<CExchangeWindow*>(listInt.front());
if(cew) //exchange window is open

View File

@ -117,6 +117,19 @@ void Graphics::loadPaletteAndColors()
col.unused = pals[startPoint++];
playerColorPalette[i] = col;
}
neutralColorPalette = new SDL_Color[32];
std::ifstream ncp;
ncp.open("config/NEUTRAL.PAL", std::ios::binary);
for(int i=0; i<32; ++i)
{
ncp.read((char*)&neutralColorPalette[i].r,1);
ncp.read((char*)&neutralColorPalette[i].g,1);
ncp.read((char*)&neutralColorPalette[i].b,1);
ncp.read((char*)&neutralColorPalette[i].unused,1);
}
//colors initialization
int3 kolory[] = {int3(0xff,0,0),int3(0x31,0x52,0xff),int3(0x9c,0x73,0x52),int3(0x42,0x94,0x29),
int3(0xff,0x84,0x0),int3(0x8c,0x29,0xa5),int3(0x09,0x9c,0xa5),int3(0xc6,0x7b,0x8c)};
@ -472,9 +485,24 @@ void Graphics::blueToPlayersAdv(SDL_Surface * sur, int player)
return;
if(sur->format->BitsPerPixel == 8)
{
SDL_Color *palette = NULL;
if(player < PLAYER_LIMIT)
{
palette = playerColorPalette + 32*player;
}
else if(player == 255)
{
palette = neutralColorPalette;
}
else
{
tlog1 << "Wrong player id in blueToPlayersAdv (" << player << ")!\n";
return;
}
for(int i=0; i<32; ++i)
{
sur->format->palette->colors[224+i] = playerColorPalette[32*player+i];
sur->format->palette->colors[224+i] = palette[i];
}
}
else if(sur->format->BitsPerPixel == 24) //should never happen in general

View File

@ -28,6 +28,8 @@ public:
SDL_Color * playerColors; //array [8]
SDL_Color * neutralColor;
SDL_Color * playerColorPalette; //palette to make interface colors good - array of size [256]
SDL_Color * neutralColorPalette;
SDL_Surface * hInfo, *tInfo; //hero and town infobox bgs
SDL_Surface *heroInGarrison; //icon for town infobox
std::vector<std::pair<int, int> > slotsPos; //creature slot positions in infoboxes

BIN
config/NEUTRAL.PAL Normal file

Binary file not shown.