(svn r27707) -Fix: Make the result of NewGRF's CARGO_NAME string code reliably print...
[openttd.git] / src / table / control_codes.h
blobd6b1ad6f4eb4d2dbc5406d0cceced64ff732ab69
1 /* $Id$ */
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 */
10 /** @file control_codes.h Control codes that are embedded in the translation strings. */
12 #ifndef CONTROL_CODES_H
13 #define CONTROL_CODES_H
15 /**
16 * List of string control codes used for string formatting, displaying, and
17 * by strgen to generate the language files.
19 enum StringControlCode {
20 SCC_CONTROL_START = 0xE000,
21 SCC_CONTROL_END = 0xE1FF,
23 SCC_SPRITE_START = 0xE200,
24 SCC_SPRITE_END = SCC_SPRITE_START + 0xFF,
26 /* This must be the first entry. It's encoded in strings that are saved. */
27 SCC_ENCODED = SCC_CONTROL_START,
29 /* Display control codes */
30 SCC_TINYFONT, ///< Switch to small font
31 SCC_BIGFONT, ///< Switch to large font
33 /* Formatting control codes */
34 SCC_REVISION,
35 SCC_COMPANY_NUM,
36 SCC_STATION_FEATURES,
37 SCC_INDUSTRY_NAME,
38 SCC_WAYPOINT_NAME,
39 SCC_STATION_NAME,
40 SCC_DEPOT_NAME,
41 SCC_TOWN_NAME,
42 SCC_GROUP_NAME,
43 SCC_VEHICLE_NAME,
44 SCC_SIGN_NAME,
45 SCC_COMPANY_NAME,
46 SCC_PRESIDENT_NAME,
47 SCC_ENGINE_NAME,
49 SCC_CURRENCY_SHORT,
50 SCC_CURRENCY_LONG,
52 SCC_CARGO_LONG,
53 SCC_CARGO_SHORT,
54 SCC_CARGO_TINY,
55 SCC_CARGO_LIST,
56 SCC_POWER,
57 SCC_VOLUME_LONG,
58 SCC_VOLUME_SHORT,
59 SCC_WEIGHT_LONG,
60 SCC_WEIGHT_SHORT,
61 SCC_FORCE,
62 SCC_VELOCITY,
63 SCC_HEIGHT,
65 SCC_DATE_TINY,
66 SCC_DATE_SHORT,
67 SCC_DATE_LONG,
68 SCC_DATE_ISO,
70 /* Must be consecutive */
71 SCC_STRING1,
72 SCC_STRING2,
73 SCC_STRING3,
74 SCC_STRING4,
75 SCC_STRING5,
76 SCC_STRING6,
77 SCC_STRING7,
80 SCC_STRING,
81 SCC_COMMA,
82 SCC_DECIMAL,
83 SCC_NUM,
84 SCC_ZEROFILL_NUM,
85 SCC_HEX,
86 SCC_BYTES,
88 SCC_RAW_STRING_POINTER,
89 SCC_PLURAL_LIST,
90 SCC_GENDER_LIST,
91 SCC_GENDER_INDEX,
92 SCC_ARG_INDEX,
93 SCC_SET_CASE,
94 SCC_SWITCH_CASE,
96 /* Colour codes */
97 SCC_BLUE,
98 SCC_SILVER,
99 SCC_GOLD,
100 SCC_RED,
101 SCC_PURPLE,
102 SCC_LTBROWN,
103 SCC_ORANGE,
104 SCC_GREEN,
105 SCC_YELLOW,
106 SCC_DKGREEN,
107 SCC_CREAM,
108 SCC_BROWN,
109 SCC_WHITE,
110 SCC_LTBLUE,
111 SCC_GRAY,
112 SCC_DKBLUE,
113 SCC_BLACK,
114 SCC_PREVIOUS_COLOUR,
117 * The next variables are part of a NewGRF subsystem for creating text strings.
118 * It uses a "stack" of bytes and reads from there.
120 SCC_NEWGRF_FIRST,
121 SCC_NEWGRF_PRINT_DWORD_SIGNED = SCC_NEWGRF_FIRST, ///< 7B: Read 4 bytes from the stack
122 SCC_NEWGRF_PRINT_WORD_SIGNED, ///< 7C: Read 2 bytes from the stack as signed value
123 SCC_NEWGRF_PRINT_BYTE_SIGNED, ///< 7D: Read 1 byte from the stack as signed value
124 SCC_NEWGRF_PRINT_WORD_UNSIGNED, ///< 7E: Read 2 bytes from the stack as unsigned value
125 SCC_NEWGRF_PRINT_DWORD_CURRENCY, ///< 8F: Read 4 bytes from the stack as currency
126 SCC_NEWGRF_PRINT_WORD_STRING_ID, ///< 81: Read 2 bytes from the stack as String ID
127 SCC_NEWGRF_PRINT_WORD_DATE_LONG, ///< 82: Read 2 bytes from the stack as base 1920 date
128 SCC_NEWGRF_PRINT_WORD_DATE_SHORT, ///< 83: Read 2 bytes from the stack as base 1920 date
129 SCC_NEWGRF_PRINT_WORD_SPEED, ///< 84: Read 2 bytes from the stack as signed speed
130 SCC_NEWGRF_PRINT_WORD_VOLUME_LONG, ///< 87: Read 2 bytes from the stack as long signed volume
131 SCC_NEWGRF_PRINT_WORD_WEIGHT_LONG, ///< 9A 0D: Read 2 bytes from the stack as long unsigned weight
132 SCC_NEWGRF_PRINT_WORD_STATION_NAME, ///< 9A 0C: Read 2 bytes from the stack as station name
133 SCC_NEWGRF_PRINT_QWORD_CURRENCY, ///< 9A 01: Read 8 bytes from the stack as currency
134 SCC_NEWGRF_PRINT_BYTE_HEX, ///< 9A 06: Read 1 byte from the stack and print it as hex
135 SCC_NEWGRF_PRINT_WORD_HEX, ///< 9A 07: Read 2 bytes from the stack and print it as hex
136 SCC_NEWGRF_PRINT_DWORD_HEX, ///< 9A 08: Read 4 bytes from the stack and print it as hex
137 SCC_NEWGRF_PRINT_QWORD_HEX, ///< 9A 0B: Read 8 bytes from the stack and print it as hex
138 SCC_NEWGRF_PRINT_DWORD_DATE_LONG, ///< 9A 16: Read 4 bytes from the stack as base 0 date
139 SCC_NEWGRF_PRINT_DWORD_DATE_SHORT, ///< 9A 17: Read 4 bytes from the stack as base 0 date
140 SCC_NEWGRF_PRINT_WORD_POWER, ///< 9A 18: Read 2 bytes from the stack as unsigned power
141 SCC_NEWGRF_PRINT_WORD_VOLUME_SHORT, ///< 9A 19: Read 2 bytes from the stack as short signed volume
142 SCC_NEWGRF_PRINT_WORD_WEIGHT_SHORT, ///< 9A 1A: Read 2 bytes from the stack as short unsigned weight
143 SCC_NEWGRF_PRINT_WORD_CARGO_LONG, ///< 9A 1B: Read 2 + 2 bytes from the stack as cargo type (translated) and unsigned cargo amount
144 SCC_NEWGRF_PRINT_WORD_CARGO_SHORT, ///< 9A 1C: Read 2 + 2 bytes from the stack as cargo type (translated) and unsigned cargo amount
145 SCC_NEWGRF_PRINT_WORD_CARGO_TINY, ///< 9A 1D: Read 2 + 2 bytes from the stack as cargo type (translated) and unsigned cargo amount
146 SCC_NEWGRF_PRINT_WORD_CARGO_NAME, ///< 9A 1E: Read 2 bytes from the stack as cargo name
147 SCC_NEWGRF_PUSH_WORD, ///< 9A 03: Pushes 2 bytes onto the stack
148 SCC_NEWGRF_UNPRINT, ///< 9A 04: "Unprints" the given number of bytes from the string
149 SCC_NEWGRF_DISCARD_WORD, ///< 85: Discard the next two bytes
150 SCC_NEWGRF_ROTATE_TOP_4_WORDS, ///< 86: Rotate the top 4 words of the stack (W4 W1 W2 W3)
151 SCC_NEWGRF_LAST = SCC_NEWGRF_ROTATE_TOP_4_WORDS,
153 SCC_NEWGRF_STRINL, ///< Inline another string at the current position, StringID is encoded in the string
155 /* Special printable symbols.
156 * These are mapped to the original glyphs */
157 SCC_LESS_THAN = SCC_SPRITE_START + 0x3C,
158 SCC_GREATER_THAN = SCC_SPRITE_START + 0x3E,
159 SCC_UP_ARROW = SCC_SPRITE_START + 0xA0,
160 SCC_DOWN_ARROW = SCC_SPRITE_START + 0xAA,
161 SCC_CHECKMARK = SCC_SPRITE_START + 0xAC,
162 SCC_CROSS = SCC_SPRITE_START + 0xAD,
163 SCC_RIGHT_ARROW = SCC_SPRITE_START + 0xAF,
164 SCC_TRAIN = SCC_SPRITE_START + 0xB4,
165 SCC_LORRY = SCC_SPRITE_START + 0xB5,
166 SCC_BUS = SCC_SPRITE_START + 0xB6,
167 SCC_PLANE = SCC_SPRITE_START + 0xB7,
168 SCC_SHIP = SCC_SPRITE_START + 0xB8,
169 SCC_SUPERSCRIPT_M1 = SCC_SPRITE_START + 0xB9,
170 SCC_SMALL_UP_ARROW = SCC_SPRITE_START + 0xBC,
171 SCC_SMALL_DOWN_ARROW = SCC_SPRITE_START + 0xBD,
174 #endif /* CONTROL_CODES_H */