diff options
author | rubidium <rubidium@openttd.org> | 2008-08-23 20:16:54 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2008-08-23 20:16:54 +0000 |
commit | 07c20252c3614e6758943817811277e8e6e7c95b (patch) | |
tree | 5286eef504f7700e89f70f223dd516dc542ba066 | |
parent | 4335c272182c2fdde399a3f9158bbd6262f96ed5 (diff) | |
download | openttd-07c20252c3614e6758943817811277e8e6e7c95b.tar.xz |
(svn r14146) -Codechange: allow palette override in both ways and remove some unneeded '(x == 0) ? 0 : 1' constructs.
-rw-r--r-- | src/blitter/32bpp_anim.cpp | 2 | ||||
-rw-r--r-- | src/gfx.cpp | 19 | ||||
-rw-r--r-- | src/gfx_func.h | 2 | ||||
-rw-r--r-- | src/gfx_type.h | 8 | ||||
-rw-r--r-- | src/gfxinit.cpp | 14 | ||||
-rw-r--r-- | src/newgrf.cpp | 4 | ||||
-rw-r--r-- | src/openttd.cpp | 6 | ||||
-rw-r--r-- | src/table/palettes.h | 86 |
8 files changed, 74 insertions, 67 deletions
diff --git a/src/blitter/32bpp_anim.cpp b/src/blitter/32bpp_anim.cpp index c989f9b2e..d9e8eea45 100644 --- a/src/blitter/32bpp_anim.cpp +++ b/src/blitter/32bpp_anim.cpp @@ -327,7 +327,7 @@ void Blitter_32bppAnim::CopyFromBuffer(void *video, const void *src, int width, } /* We update the palette (or the pixels that do animation) immediatly, to avoid graphical glitches */ - this->PaletteAnimate(PALETTE_ANIM_SIZE_START, _use_dos_palette ? PALETTE_ANIM_SIZE_DOS : PALETTE_ANIM_SIZE_WIN); + this->PaletteAnimate(PALETTE_ANIM_SIZE_START, (_use_palette == PAL_DOS) ? PALETTE_ANIM_SIZE_DOS : PALETTE_ANIM_SIZE_WIN); } void Blitter_32bppAnim::CopyToBuffer(const void *video, void *dst, int width, int height) diff --git a/src/gfx.cpp b/src/gfx.cpp index b16b810ea..4bcdab241 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -49,7 +49,6 @@ Colour _cur_palette[256]; byte _stringwidth_table[FS_END][224]; ///< Cache containing width of often used characters. @see GetCharacterWidth() DrawPixelInfo *_cur_dpi; byte _colour_gradient[COLOUR_END][8]; -bool _use_dos_palette; static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub = NULL); @@ -756,11 +755,10 @@ void DrawCharCentered(WChar c, int x, int y, uint16 real_color) { FontSize size = FS_NORMAL; byte color = real_color & 0xFF; - uint palette = _use_dos_palette ? 1 : 0; int w = GetCharacterWidth(size, c); - _string_colorremap[1] = _string_colormap[palette][color].text; - _string_colorremap[2] = _string_colormap[palette][color].shadow; + _string_colorremap[1] = _string_colormap[_use_palette][color].text; + _string_colorremap[2] = _string_colormap[_use_palette][color].shadow; _color_remap_ptr = _string_colorremap; GfxMainBlitter(GetGlyph(size, c), x - w / 2, y, BM_COLOUR_REMAP); @@ -802,11 +800,10 @@ int DoDrawString(const char *string, int x, int y, uint16 real_colour, bool pars switch_colour:; if (real_colour & IS_PALETTE_COLOR) { _string_colorremap[1] = colour; - _string_colorremap[2] = _use_dos_palette ? 1 : 215; + _string_colorremap[2] = (_use_palette == PAL_DOS) ? 1 : 215; } else { - uint palette = _use_dos_palette ? 1 : 0; - _string_colorremap[1] = _string_colormap[palette][colour].text; - _string_colorremap[2] = _string_colormap[palette][colour].shadow; + _string_colorremap[1] = _string_colormap[_use_palette][colour].text; + _string_colorremap[2] = _string_colormap[_use_palette][colour].shadow; } _color_remap_ptr = _string_colorremap; } @@ -989,7 +986,7 @@ void DoPaletteAnimations(); void GfxInitPalettes() { - memcpy(_cur_palette, _palettes[_use_dos_palette ? 1 : 0], sizeof(_cur_palette)); + memcpy(_cur_palette, _palettes[_use_palette], sizeof(_cur_palette)); DoPaletteAnimations(); _pal_first_dirty = 0; @@ -1007,7 +1004,7 @@ void DoPaletteAnimations() /* Amount of colors to be rotated. * A few more for the DOS palette, because the water colors are * 245-254 for DOS and 217-226 for Windows. */ - const int colour_rotation_amount = _use_dos_palette ? PALETTE_ANIM_SIZE_DOS : PALETTE_ANIM_SIZE_WIN; + const int colour_rotation_amount = (_use_palette == PAL_DOS) ? PALETTE_ANIM_SIZE_DOS : PALETTE_ANIM_SIZE_WIN; Colour old_val[PALETTE_ANIM_SIZE_DOS]; const int oldval_size = colour_rotation_amount * sizeof(*old_val); const uint old_tc = _palette_animation_counter; @@ -1092,7 +1089,7 @@ void DoPaletteAnimations() } /* Animate water for old DOS graphics */ - if (_use_dos_palette) { + if (_use_palette == PAL_DOS) { /* Dark blue water DOS */ s = (_settings_game.game_creation.landscape == LT_TOYLAND) ? ev->dark_water_TOY : ev->dark_water; j = EXTR(320, 5); diff --git a/src/gfx_func.h b/src/gfx_func.h index cce62b3cf..4ffc2015b 100644 --- a/src/gfx_func.h +++ b/src/gfx_func.h @@ -179,6 +179,6 @@ extern DrawPixelInfo *_cur_dpi; */ extern byte _colour_gradient[COLOUR_END][8]; -extern bool _use_dos_palette; +extern Palette _use_palette; #endif /* GFX_FUNC_H */ diff --git a/src/gfx_type.h b/src/gfx_type.h index 6128fdc9b..6682d4b59 100644 --- a/src/gfx_type.h +++ b/src/gfx_type.h @@ -235,4 +235,12 @@ enum FillRectMode { FILLRECT_RECOLOR, ///< Apply a recolor sprite to the screen content }; +/** Palettes OpenTTD supports. */ +enum Palette { + PAL_DOS, ///< Use the DOS palette. + PAL_WINDOWS, ///< Use the Windows palette. + PAL_AUTODETECT, ///< Automatically detect the palette based on the graphics pack. + MAX_PAL = 2, ///< The number of palettes. +}; + #endif /* GFX_TYPE_H */ diff --git a/src/gfxinit.cpp b/src/gfxinit.cpp index ef8a4d5b0..a13ec21a4 100644 --- a/src/gfxinit.cpp +++ b/src/gfxinit.cpp @@ -21,6 +21,8 @@ #include "table/sprites.h" +Palette _use_palette = PAL_AUTODETECT; + struct MD5File { const char * filename; ///< filename uint8 hash[16]; ///< md5 sum of the file @@ -130,7 +132,7 @@ static bool FileMD5(const MD5File file) */ static void DeterminePalette() { - if (_use_dos_palette) return; + if (_use_palette < MAX_PAL) return; /* Count of files from the different versions. */ uint dos = 0; @@ -143,11 +145,11 @@ static void DeterminePalette() for (uint i = 0; i < lengthof(files_win.landscape); i++) if (FioCheckFileExists(files_win.landscape[i].filename)) win++; if (win == 5) { - _use_dos_palette = false; + _use_palette = PAL_WINDOWS; } else if (dos == 5 || (win == 0 && dos > 0)) { - _use_dos_palette = true; + _use_palette = PAL_DOS; } else { - _use_dos_palette = false; + _use_palette = PAL_WINDOWS; } } @@ -161,7 +163,7 @@ void CheckExternalFiles() DeterminePalette(); static const size_t ERROR_MESSAGE_LENGTH = 128; - const FileList *files = _use_dos_palette ? &files_dos : &files_win; + const FileList *files = (_use_palette == PAL_DOS) ? &files_dos : &files_win; char error_msg[ERROR_MESSAGE_LENGTH * (lengthof(files->basic) + lengthof(files->landscape) + 3)]; error_msg[0] = '\0'; char *add_pos = error_msg; @@ -192,7 +194,7 @@ void CheckExternalFiles() static void LoadSpriteTables() { - const FileList *files = _use_dos_palette ? &files_dos : &files_win; + const FileList *files = (_use_palette == PAL_DOS) ? &files_dos : &files_win; uint i = FIRST_GRF_SLOT; LoadGrfFile(files->basic[0].filename, 0, i++); diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 726ab01d8..44892df0b 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -323,7 +323,7 @@ StringID MapGRFStringID(uint32 grfid, StringID str) static uint8 MapDOSColour(uint8 colour) { - if (_use_dos_palette) return colour; + if (_use_palette == PAL_DOS) return colour; if (colour < 10) { static uint8 dos_to_win_colour_map[] = { 0, 215, 216, 136, 88, 106, 32, 33, 40, 245 }; @@ -3634,7 +3634,7 @@ bool GetGlobalVariable(byte param, uint32 *value) } case 0x0D: // TTD Version, 00=DOS, 01=Windows - *value = !_use_dos_palette; + *value = _use_palette; return true; case 0x0E: // Y-offset for train sprites diff --git a/src/openttd.cpp b/src/openttd.cpp index afd5ceb6c..b28ef672e 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -189,7 +189,7 @@ static void ShowHelp() " -f = Fork into the background (dedicated only)\n" #endif #endif /* ENABLE_NETWORK */ - " -i = Force to use the DOS palette\n" + " -i = Force to use the DOS (0) or Windows (1) palette\n" " (use this if you see a lot of pink)\n" " -c config_file = Use 'config_file' instead of 'openttd.cfg'\n" " -x = Do not automatically save to config file on exit\n", @@ -406,7 +406,7 @@ int ttd_main(int argc, char *argv[]) * a letter means: it accepts that param (e.g.: -h) * a ':' behind it means: it need a param (e.g.: -m<driver>) * a '::' behind it means: it can optional have a param (e.g.: -d<debug>) */ - optformat = "m:s:v:b:hD::n::eit:d::r:g::G:c:xl:" + optformat = "m:s:v:b:hD::n::ei::t:d::r:g::G:c:xl:" #if !defined(__MORPHOS__) && !defined(__AMIGA__) && !defined(WIN32) "f" #endif @@ -455,7 +455,7 @@ int ttd_main(int argc, char *argv[]) if (mgo.opt != NULL) SetDebugString(mgo.opt); } break; case 'e': _switch_mode = SM_EDITOR; break; - case 'i': _use_dos_palette = true; break; + case 'i': _use_palette = (mgo.opt == NULL || atoi(mgo.opt) == 0) ? PAL_DOS : PAL_WINDOWS; break; case 'g': if (mgo.opt != NULL) { ttd_strlcpy(_file_to_saveload.name, mgo.opt, sizeof(_file_to_saveload.name)); diff --git a/src/table/palettes.h b/src/table/palettes.h index 794d2d1e7..d129f4191 100644 --- a/src/table/palettes.h +++ b/src/table/palettes.h @@ -11,19 +11,19 @@ #endif /* TTD_ENDIAN == TTD_BIG_ENDIAN */ static const Colour _palettes[][256] = { - /* palette 1 (TTD Windows) */ + /* palette 0 (mixed TTD DOS + TTD Windows palette */ { - { 0, 0, 0, 0 }, M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), - M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), - M(212, 0, 212), M(212, 0, 212), M(168, 168, 168), M(184, 184, 184), + { 0, 0, 0, 0 }, M( 16, 16, 16), M( 32, 32, 32), M( 48, 48, 48), + M( 65, 64, 65), M( 82, 80, 82), M( 98, 101, 98), M(115, 117, 115), + M(131, 133, 131), M(148, 149, 148), M(168, 168, 168), M(184, 184, 184), M(200, 200, 200), M(216, 216, 216), M(232, 232, 232), M(252, 252, 252), M( 52, 60, 72), M( 68, 76, 92), M( 88, 96, 112), M(108, 116, 132), M(132, 140, 152), M(156, 160, 172), M(176, 184, 196), M(204, 208, 220), M( 48, 44, 4), M( 64, 60, 12), M( 80, 76, 20), M( 96, 92, 28), M(120, 120, 64), M(148, 148, 100), M(176, 176, 132), M(204, 204, 168), - M(100, 100, 100), M(116, 116, 116), M(104, 80, 44), M(124, 104, 72), + M( 72, 44, 4), M( 88, 60, 20), M(104, 80, 44), M(124, 104, 72), M(152, 132, 92), M(184, 160, 120), M(212, 188, 148), M(244, 220, 176), - M(132, 132, 132), M( 88, 4, 16), M(112, 16, 32), M(136, 32, 52), + M( 64, 0, 4), M( 88, 4, 16), M(112, 16, 32), M(136, 32, 52), M(160, 56, 76), M(188, 84, 108), M(204, 104, 124), M(220, 132, 144), M(236, 156, 164), M(252, 188, 192), M(252, 212, 0), M(252, 232, 60), M(252, 248, 128), M( 76, 40, 0), M( 96, 60, 8), M(116, 88, 28), @@ -35,11 +35,11 @@ static const Colour _palettes[][256] = { M(168, 92, 76), M(184, 108, 88), M(196, 128, 108), M(212, 148, 128), M( 8, 52, 0), M( 16, 64, 0), M( 32, 80, 4), M( 48, 96, 4), M( 64, 112, 12), M( 84, 132, 20), M(104, 148, 28), M(128, 168, 44), - M( 64, 64, 64), M( 44, 68, 32), M( 60, 88, 48), M( 80, 104, 60), + M( 28, 52, 24), M( 44, 68, 32), M( 60, 88, 48), M( 80, 104, 60), M(104, 124, 76), M(128, 148, 92), M(152, 176, 108), M(180, 204, 124), M( 16, 52, 24), M( 32, 72, 44), M( 56, 96, 72), M( 76, 116, 88), M( 96, 136, 108), M(120, 164, 136), M(152, 192, 168), M(184, 220, 200), - M( 32, 24, 0), M( 56, 28, 0), M( 80, 80, 80), M( 88, 52, 12), + M( 32, 24, 0), M( 56, 28, 0), M( 72, 40, 0), M( 88, 52, 12), M(104, 64, 24), M(124, 84, 44), M(140, 108, 64), M(160, 128, 88), M( 76, 40, 16), M( 96, 52, 24), M(116, 68, 40), M(136, 84, 56), M(164, 96, 64), M(184, 112, 80), M(204, 128, 96), M(212, 148, 112), @@ -47,7 +47,7 @@ static const Colour _palettes[][256] = { M(120, 56, 40), M(140, 76, 64), M(160, 100, 96), M(184, 136, 136), M( 36, 40, 68), M( 48, 52, 84), M( 64, 64, 100), M( 80, 80, 116), M(100, 100, 136), M(132, 132, 164), M(172, 172, 192), M(212, 212, 224), - M( 48, 48, 48), M( 64, 44, 144), M( 88, 64, 172), M(104, 76, 196), + M( 40, 20, 112), M( 64, 44, 144), M( 88, 64, 172), M(104, 76, 196), M(120, 88, 224), M(140, 104, 252), M(160, 136, 252), M(188, 168, 252), M( 0, 24, 108), M( 0, 36, 132), M( 0, 52, 160), M( 0, 72, 184), M( 0, 96, 212), M( 24, 120, 220), M( 56, 144, 232), M( 88, 168, 240), @@ -74,24 +74,24 @@ static const Colour _palettes[][256] = { M(252, 60, 0), M(252, 80, 0), M(252, 104, 0), M(252, 128, 0), M(252, 148, 0), M(252, 172, 0), M(252, 196, 0), M(252, 0, 0), M(252, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), - M(252, 228, 0), M(148, 148, 148), M(212, 0, 212), M(212, 0, 212), - M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), - M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(252, 252, 252) + M(252, 228, 0), M(148, 148, 148), M( 16, 101, 115), M( 24, 109, 123), + M( 32, 117, 131), M( 41, 125, 139), M( 90, 165, 189), M(115, 182, 197), + M(148, 202, 222), M(180, 222, 238), M(222, 246, 255), M(252, 252, 252) }, - /* palette 2 (mixed TTD DOS + TTD Windows palette */ + /* palette 1 (TTD Windows) */ { - { 0, 0, 0, 0 }, M( 16, 16, 16), M( 32, 32, 32), M( 48, 48, 48), - M( 65, 64, 65), M( 82, 80, 82), M( 98, 101, 98), M(115, 117, 115), - M(131, 133, 131), M(148, 149, 148), M(168, 168, 168), M(184, 184, 184), + { 0, 0, 0, 0 }, M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), + M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), + M(212, 0, 212), M(212, 0, 212), M(168, 168, 168), M(184, 184, 184), M(200, 200, 200), M(216, 216, 216), M(232, 232, 232), M(252, 252, 252), M( 52, 60, 72), M( 68, 76, 92), M( 88, 96, 112), M(108, 116, 132), M(132, 140, 152), M(156, 160, 172), M(176, 184, 196), M(204, 208, 220), M( 48, 44, 4), M( 64, 60, 12), M( 80, 76, 20), M( 96, 92, 28), M(120, 120, 64), M(148, 148, 100), M(176, 176, 132), M(204, 204, 168), - M( 72, 44, 4), M( 88, 60, 20), M(104, 80, 44), M(124, 104, 72), + M(100, 100, 100), M(116, 116, 116), M(104, 80, 44), M(124, 104, 72), M(152, 132, 92), M(184, 160, 120), M(212, 188, 148), M(244, 220, 176), - M( 64, 0, 4), M( 88, 4, 16), M(112, 16, 32), M(136, 32, 52), + M(132, 132, 132), M( 88, 4, 16), M(112, 16, 32), M(136, 32, 52), M(160, 56, 76), M(188, 84, 108), M(204, 104, 124), M(220, 132, 144), M(236, 156, 164), M(252, 188, 192), M(252, 212, 0), M(252, 232, 60), M(252, 248, 128), M( 76, 40, 0), M( 96, 60, 8), M(116, 88, 28), @@ -103,11 +103,11 @@ static const Colour _palettes[][256] = { M(168, 92, 76), M(184, 108, 88), M(196, 128, 108), M(212, 148, 128), M( 8, 52, 0), M( 16, 64, 0), M( 32, 80, 4), M( 48, 96, 4), M( 64, 112, 12), M( 84, 132, 20), M(104, 148, 28), M(128, 168, 44), - M( 28, 52, 24), M( 44, 68, 32), M( 60, 88, 48), M( 80, 104, 60), + M( 64, 64, 64), M( 44, 68, 32), M( 60, 88, 48), M( 80, 104, 60), M(104, 124, 76), M(128, 148, 92), M(152, 176, 108), M(180, 204, 124), M( 16, 52, 24), M( 32, 72, 44), M( 56, 96, 72), M( 76, 116, 88), M( 96, 136, 108), M(120, 164, 136), M(152, 192, 168), M(184, 220, 200), - M( 32, 24, 0), M( 56, 28, 0), M( 72, 40, 0), M( 88, 52, 12), + M( 32, 24, 0), M( 56, 28, 0), M( 80, 80, 80), M( 88, 52, 12), M(104, 64, 24), M(124, 84, 44), M(140, 108, 64), M(160, 128, 88), M( 76, 40, 16), M( 96, 52, 24), M(116, 68, 40), M(136, 84, 56), M(164, 96, 64), M(184, 112, 80), M(204, 128, 96), M(212, 148, 112), @@ -115,7 +115,7 @@ static const Colour _palettes[][256] = { M(120, 56, 40), M(140, 76, 64), M(160, 100, 96), M(184, 136, 136), M( 36, 40, 68), M( 48, 52, 84), M( 64, 64, 100), M( 80, 80, 116), M(100, 100, 136), M(132, 132, 164), M(172, 172, 192), M(212, 212, 224), - M( 40, 20, 112), M( 64, 44, 144), M( 88, 64, 172), M(104, 76, 196), + M( 48, 48, 48), M( 64, 44, 144), M( 88, 64, 172), M(104, 76, 196), M(120, 88, 224), M(140, 104, 252), M(160, 136, 252), M(188, 168, 252), M( 0, 24, 108), M( 0, 36, 132), M( 0, 52, 160), M( 0, 72, 184), M( 0, 96, 212), M( 24, 120, 220), M( 56, 144, 232), M( 88, 168, 240), @@ -142,9 +142,9 @@ static const Colour _palettes[][256] = { M(252, 60, 0), M(252, 80, 0), M(252, 104, 0), M(252, 128, 0), M(252, 148, 0), M(252, 172, 0), M(252, 196, 0), M(252, 0, 0), M(252, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), - M(252, 228, 0), M(148, 148, 148), M( 16, 101, 115), M( 24, 109, 123), - M( 32, 117, 131), M( 41, 125, 139), M( 90, 165, 189), M(115, 182, 197), - M(148, 202, 222), M(180, 222, 238), M(222, 246, 255), M(252, 252, 252) + M(252, 228, 0), M(148, 148, 148), M(212, 0, 212), M(212, 0, 212), + M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), + M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(252, 252, 252) } }; @@ -201,25 +201,6 @@ struct StringColor { }; static const StringColor _string_colormap[][17] = { - { /* Windows palette. */ - { 150, 215 }, // TC_BLUE - { 12, 215 }, // TC_SILVER - { 189, 215 }, // TC_GOLD - { 184, 215 }, // TC_RED - { 174, 215 }, // TC_PURPLE - { 30, 215 }, // TC_LIGHT_BROWN - { 195, 215 }, // TC_ORANGE - { 209, 215 }, // TC_GREEN - { 68, 215 }, // TC_YELLOW - { 95, 215 }, // TC_DARK_GREEN - { 79, 215 }, // TC_CREAM - { 116, 215 }, // TC_BROWN - { 15, 215 }, // TC_WHITE - { 152, 215 }, // TC_LIGHT_BLUE - { 32, 215 }, // TC_GREY - { 133, 215 }, // TC_DARK_BLUE - { 215, 0 }, // TC_BLACK - }, { /* DOS palette. */ { 150, 1 }, // TC_BLUE { 12, 1 }, // TC_SILVER @@ -238,5 +219,24 @@ static const StringColor _string_colormap[][17] = { { 6, 1 }, // TC_GREY { 133, 1 }, // TC_DARK_BLUE { 1, 0 }, // TC_BLACK + }, + { /* Windows palette. */ + { 150, 215 }, // TC_BLUE + { 12, 215 }, // TC_SILVER + { 189, 215 }, // TC_GOLD + { 184, 215 }, // TC_RED + { 174, 215 }, // TC_PURPLE + { 30, 215 }, // TC_LIGHT_BROWN + { 195, 215 }, // TC_ORANGE + { 209, 215 }, // TC_GREEN + { 68, 215 }, // TC_YELLOW + { 95, 215 }, // TC_DARK_GREEN + { 79, 215 }, // TC_CREAM + { 116, 215 }, // TC_BROWN + { 15, 215 }, // TC_WHITE + { 152, 215 }, // TC_LIGHT_BLUE + { 32, 215 }, // TC_GREY + { 133, 215 }, // TC_DARK_BLUE + { 215, 0 }, // TC_BLACK } }; |