OpenTTD
palettes.h
Go to the documentation of this file.
1 /* $Id: palettes.h 24111 2012-04-10 20:16:51Z rubidium $ */
2 
3 /*
4  * This file is part of OpenTTD.
5  * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
6  * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7  * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
8  */
9 
12 #include "../core/endian_type.hpp"
13 
14 #define M(r, g, b) Colour(r, g, b)
15 
17 static const Palette _palette = {
18  {
19  /* transparent */
20  Colour(0, 0, 0, 0),
21  /* grey scale */
22  M( 16, 16, 16), M( 32, 32, 32), M( 48, 48, 48),
23  M( 65, 64, 65), M( 82, 80, 82), M( 98, 101, 98), M(115, 117, 115),
24  /* regular colours */
25  M(131, 133, 131), M(148, 149, 148), M(168, 168, 168), M(184, 184, 184),
26  M(200, 200, 200), M(216, 216, 216), M(232, 232, 232), M(252, 252, 252),
27  M( 52, 60, 72), M( 68, 76, 92), M( 88, 96, 112), M(108, 116, 132),
28  M(132, 140, 152), M(156, 160, 172), M(176, 184, 196), M(204, 208, 220),
29  M( 48, 44, 4), M( 64, 60, 12), M( 80, 76, 20), M( 96, 92, 28),
30  M(120, 120, 64), M(148, 148, 100), M(176, 176, 132), M(204, 204, 168),
31  M( 72, 44, 4), M( 88, 60, 20), M(104, 80, 44), M(124, 104, 72),
32  M(152, 132, 92), M(184, 160, 120), M(212, 188, 148), M(244, 220, 176),
33  M( 64, 0, 4), M( 88, 4, 16), M(112, 16, 32), M(136, 32, 52),
34  M(160, 56, 76), M(188, 84, 108), M(204, 104, 124), M(220, 132, 144),
35  M(236, 156, 164), M(252, 188, 192), M(252, 212, 0), M(252, 232, 60),
36  M(252, 248, 128), M( 76, 40, 0), M( 96, 60, 8), M(116, 88, 28),
37  M(136, 116, 56), M(156, 136, 80), M(176, 156, 108), M(196, 180, 136),
38  M( 68, 24, 0), M( 96, 44, 4), M(128, 68, 8), M(156, 96, 16),
39  M(184, 120, 24), M(212, 156, 32), M(232, 184, 16), M(252, 212, 0),
40  M(252, 248, 128), M(252, 252, 192), M( 32, 4, 0), M( 64, 20, 8),
41  M( 84, 28, 16), M(108, 44, 28), M(128, 56, 40), M(148, 72, 56),
42  M(168, 92, 76), M(184, 108, 88), M(196, 128, 108), M(212, 148, 128),
43  M( 8, 52, 0), M( 16, 64, 0), M( 32, 80, 4), M( 48, 96, 4),
44  M( 64, 112, 12), M( 84, 132, 20), M(104, 148, 28), M(128, 168, 44),
45  M( 28, 52, 24), M( 44, 68, 32), M( 60, 88, 48), M( 80, 104, 60),
46  M(104, 124, 76), M(128, 148, 92), M(152, 176, 108), M(180, 204, 124),
47  M( 16, 52, 24), M( 32, 72, 44), M( 56, 96, 72), M( 76, 116, 88),
48  M( 96, 136, 108), M(120, 164, 136), M(152, 192, 168), M(184, 220, 200),
49  M( 32, 24, 0), M( 56, 28, 0), M( 72, 40, 4), M( 88, 52, 12),
50  M(104, 64, 24), M(124, 84, 44), M(140, 108, 64), M(160, 128, 88),
51  M( 76, 40, 16), M( 96, 52, 24), M(116, 68, 40), M(136, 84, 56),
52  M(164, 96, 64), M(184, 112, 80), M(204, 128, 96), M(212, 148, 112),
53  M(224, 168, 128), M(236, 188, 148), M( 80, 28, 4), M(100, 40, 20),
54  M(120, 56, 40), M(140, 76, 64), M(160, 100, 96), M(184, 136, 136),
55  M( 36, 40, 68), M( 48, 52, 84), M( 64, 64, 100), M( 80, 80, 116),
56  M(100, 100, 136), M(132, 132, 164), M(172, 172, 192), M(212, 212, 224),
57  M( 40, 20, 112), M( 64, 44, 144), M( 88, 64, 172), M(104, 76, 196),
58  M(120, 88, 224), M(140, 104, 252), M(160, 136, 252), M(188, 168, 252),
59  M( 0, 24, 108), M( 0, 36, 132), M( 0, 52, 160), M( 0, 72, 184),
60  M( 0, 96, 212), M( 24, 120, 220), M( 56, 144, 232), M( 88, 168, 240),
61  M(128, 196, 252), M(188, 224, 252), M( 16, 64, 96), M( 24, 80, 108),
62  M( 40, 96, 120), M( 52, 112, 132), M( 80, 140, 160), M(116, 172, 192),
63  M(156, 204, 220), M(204, 240, 252), M(172, 52, 52), M(212, 52, 52),
64  M(252, 52, 52), M(252, 100, 88), M(252, 144, 124), M(252, 184, 160),
65  M(252, 216, 200), M(252, 244, 236), M( 72, 20, 112), M( 92, 44, 140),
66  M(112, 68, 168), M(140, 100, 196), M(168, 136, 224), M(204, 180, 252),
67  M(204, 180, 252), M(232, 208, 252), M( 60, 0, 0), M( 92, 0, 0),
68  M(128, 0, 0), M(160, 0, 0), M(196, 0, 0), M(224, 0, 0),
69  M(252, 0, 0), M(252, 80, 0), M(252, 108, 0), M(252, 136, 0),
70  M(252, 164, 0), M(252, 192, 0), M(252, 220, 0), M(252, 252, 0),
71  M(204, 136, 8), M(228, 144, 4), M(252, 156, 0), M(252, 176, 48),
72  M(252, 196, 100), M(252, 216, 152), M( 8, 24, 88), M( 12, 36, 104),
73  M( 20, 52, 124), M( 28, 68, 140), M( 40, 92, 164), M( 56, 120, 188),
74  M( 72, 152, 216), M(100, 172, 224), M( 92, 156, 52), M(108, 176, 64),
75  M(124, 200, 76), M(144, 224, 92), M(224, 244, 252), M(204, 240, 252),
76  M(180, 220, 236), M(132, 188, 216), M( 88, 152, 172),
77  /* unused pink */
78  M(212, 0, 212),
79  M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212),
80  M(212, 0, 212), M(212, 0, 212), M(212, 0, 212), M(212, 0, 212),
81  M(212, 0, 212), M(212, 0, 212), M(212, 0, 212),
82  /* Palette animated colours (filled with data from #ExtraPaletteValues) */
83  M( 0, 0, 0),
84  M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
85  M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
86  M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
87  M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
88  M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
89  M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
90  M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0),
91  /* pure white */
92  M(252, 252, 252)
93  },
94  0, // First dirty
95  256 // Dirty count
96 };
97 
99 static const uint EPV_CYCLES_DARK_WATER = 5;
100 static const uint EPV_CYCLES_LIGHTHOUSE = 4;
101 static const uint EPV_CYCLES_OIL_REFINERY = 7;
102 static const uint EPV_CYCLES_FIZZY_DRINK = 5;
103 static const uint EPV_CYCLES_GLITTER_WATER = 15;
104 
114 };
115 
118  /* dark blue water */
119  { M( 32, 68, 112), M( 36, 72, 116), M( 40, 76, 120), M( 44, 80, 124),
120  M( 48, 84, 128) },
121 
122  /* dark blue water Toyland */
123  { M( 28, 108, 124), M( 32, 112, 128), M( 36, 116, 132), M( 40, 120, 136),
124  M( 44, 124, 140) },
125 
126  /* lighthouse & stadium */
127  { M(240, 208, 0), M( 0, 0, 0), M( 0, 0, 0), M( 0, 0, 0) },
128 
129  /* oil refinery */
130  { M(252, 60, 0), M(252, 84, 0), M(252, 108, 0), M(252, 124, 0),
131  M(252, 148, 0), M(252, 172, 0), M(252, 196, 0) },
132 
133  /* fizzy drinks */
134  { M( 76, 24, 8), M(108, 44, 24), M(144, 72, 52), M(176, 108, 84),
135  M(212, 148, 128) },
136 
137  /* glittery water */
138  { M(216, 244, 252), M(172, 208, 224), M(132, 172, 196), M(100, 132, 168),
139  M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144),
140  M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144), M( 72, 100, 144),
141  M(100, 132, 168), M(132, 172, 196), M(172, 208, 224) },
142 
143  /* glittery water Toyland */
144  { M(216, 244, 252), M(180, 220, 232), M(148, 200, 216), M(116, 180, 196),
145  M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184),
146  M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184), M( 92, 164, 184),
147  M(116, 180, 196), M(148, 200, 216), M(180, 220, 232) }
148 };
149 #undef M
150 
152 static const byte _string_colourmap[17] = {
153  150, // TC_BLUE
154  12, // TC_SILVER
155  189, // TC_GOLD
156  184, // TC_RED
157  174, // TC_PURPLE
158  30, // TC_LIGHT_BROWN
159  195, // TC_ORANGE
160  209, // TC_GREEN
161  68, // TC_YELLOW
162  95, // TC_DARK_GREEN
163  79, // TC_CREAM
164  116, // TC_BROWN
165  15, // TC_WHITE
166  152, // TC_LIGHT_BLUE
167  6, // TC_GREY
168  133, // TC_DARK_BLUE
169  1, // TC_BLACK
170 };