diff --git a/MissionEditor/Loading.cpp b/MissionEditor/Loading.cpp index 3953359..b33de42 100644 --- a/MissionEditor/Loading.cpp +++ b/MissionEditor/Loading.cpp @@ -1547,14 +1547,14 @@ void CLoading::LoadBuilding(const CString& ID) if (bibImageName.GetLength()) { LoadSingleFrameShape(art.GetStringOr(bibImageName, "Image", bibImageName)); } - + bool paletteRemappable = true; CString PaletteName = art.GetStringOr(ArtID, "Palette", "unit"); if (art.GetBool(ArtID, "TerrainPalette")) { PaletteName = "iso"; + paletteRemappable = false; } GetFullPaletteName(PaletteName, cur_theat); - CString DictName; unsigned char* pBuffer; int width, height; @@ -1564,7 +1564,7 @@ void CLoading::LoadBuilding(const CString& ID) if (!rules.GetBool(ID, "Turret")) { CString DictName; DictName.Format("%s%d", ID.operator LPCSTR(), 0); - SetImageData(pBuffer, DictName, width, height, m_palettes.LoadPalette(PaletteName)); + SetImageData(pBuffer, DictName, width, height, m_palettes.LoadPalette(PaletteName, paletteRemappable)); return; } // Has turret diff --git a/MissionEditor/Palettes.cpp b/MissionEditor/Palettes.cpp index 4584ea7..fc877d1 100644 --- a/MissionEditor/Palettes.cpp +++ b/MissionEditor/Palettes.cpp @@ -294,7 +294,7 @@ void Palettes::CreateConvTable(RGBTRIPLE* pal, int* iPal) } -Palette* Palettes::LoadPalette(const CString& palName) +Palette* Palettes::LoadPalette(const CString& palName, bool remappable) { if (LoadedPalettes.size() == 0) { Palettes::Init(); @@ -309,7 +309,7 @@ Palette* Palettes::LoadPalette(const CString& palName) HMIXFILE mixIdx = loading.FindFileInMix(palName); if (FSunPackLib::LoadTSPalette(reinterpret_cast(buffer.Data), palName, mixIdx)) { - auto pal = new Palette(buffer); + auto pal = new Palette(buffer, remappable); LoadedPalettes[palName] = pal; return pal; } diff --git a/MissionEditor/Palettes.h b/MissionEditor/Palettes.h index 0d929fc..323155e 100644 --- a/MissionEditor/Palettes.h +++ b/MissionEditor/Palettes.h @@ -63,7 +63,7 @@ public: void FetchPalettes(); void CreateConvTable(RGBTRIPLE* pal, int* iPal); - Palette* LoadPalette(const CString& palName); + Palette* LoadPalette(const CString& palName, bool remappable = false); void Clear(); HTSPALETTE m_hPalIsoTemp;