Rev 10 | Rev 81 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 10 | Rev 11 | ||
|---|---|---|---|
| Line 17... | Line 17... | ||
| 17 | theme_count = 0; |
17 | theme_count = 0; |
| 18 | 18 | ||
| 19 | // the selected them isn't known yet |
19 | // the selected them isn't known yet |
| 20 | selectedtheme_index = -1; |
20 | selectedtheme_index = -1; |
| 21 | 21 | ||
| 22 | // build the search pattern string out of the path |
22 | // build the search pattern string out of the path and initiate the search from that point |
| 23 | swprintf_s (search_pattern, WCHAR_SIZEOF (search_pattern), L"%s\\themes\\*.*", app_path); |
23 | swprintf_s (search_pattern, WCHAR_SIZEOF (search_pattern), L"%s\\themes\\*.*", app_path); |
| 24 | - | ||
| 25 | // initiate the search from that point |
- | |
| 26 | hFind = FindFirstFile (search_pattern, &wfd); |
24 | hFind = FindFirstFile (search_pattern, &wfd); |
| 27 | if (hFind != INVALID_HANDLE_VALUE) |
25 | if (hFind != INVALID_HANDLE_VALUE) |
| 28 | { |
26 | { |
| 29 | // start doing this... |
27 | // start doing this... |
| 30 | do |
28 | do |
| Line 51... | Line 49... | ||
| 51 | } while (FindNextFile (hFind, &wfd)); // ...and don't stop as long as there are files to go |
49 | } while (FindNextFile (hFind, &wfd)); // ...and don't stop as long as there are files to go |
| 52 | 50 | ||
| 53 | FindClose (hFind); // close the search handle |
51 | FindClose (hFind); // close the search handle |
| 54 | } |
52 | } |
| 55 | 53 | ||
| 56 | // consistency check |
54 | // consistency check: we need at least one theme |
| 57 | if (theme_count == 0) |
55 | if (theme_count == 0) |
| 58 | { |
56 | { |
| 59 | MessageBox (NULL, LOCALIZE (L" |
57 | MessageBox (NULL, LOCALIZE (L"Error_UnableToLoadThemes"), LOCALIZE (L"FatalError"), MB_ICONERROR | MB_OK); |
| 60 | return (false); // if none of these extensions match, bomb out |
58 | return (false); // if none of these extensions match, bomb out |
| 61 | } |
59 | } |
| 62 | 60 | ||
| 63 | // have we found the selected theme ? |
61 | // have we found the selected theme ? |
| 64 | if (selectedtheme_index != -1) |
62 | if (selectedtheme_index != -1) |
| Line 105... | Line 103... | ||
| 105 | 103 | ||
| 106 | void Theme_Load (theme_t *theme, bool want_all) |
104 | void Theme_Load (theme_t *theme, bool want_all) |
| 107 | { |
105 | { |
| 108 | // this function loads a particular theme out of a theme subdirectory's files |
106 | // this function loads a particular theme out of a theme subdirectory's files |
| 109 | 107 | ||
| - | 108 | #define THEME_LOAD_STEP(id) if ((theme->load_index == (id)) || (want_all && (theme->load_index < ((id) + 1)))) |
|
| - | 109 | #define THEME_LOAD_TEXTURE(varname,texture_name) \ |
|
| - | 110 | { \ |
|
| - | 111 | theme->varname = Render_LoadTexture (L"%s/themes/%s/" texture_name L".*", app_path, theme->name); \ |
|
| - | 112 | if (theme->varname == -1) \ |
|
| - | 113 | MessageBox (NULL, LOCALIZE (L"Error_UnableToAddTextureD3DXCreateTextureFromFileFailed"), LOCALIZE (L"FatalError"), MB_ICONERROR | MB_OK); \ |
|
| - | 114 | } |
|
| 110 | #define THEME_LOAD_MESH(varname,mesh_name) \ |
115 | #define THEME_LOAD_MESH(varname,mesh_name) \ |
| 111 | { \ |
116 | { \ |
| 112 | theme->varname = Render_LoadMesh (L"themes/%s |
117 | theme->varname = Render_LoadMesh (L"%s/themes/%s/" mesh_name L".*", app_path, theme->name); \ |
| 113 | if (theme->varname == -1) \ |
118 | if (theme->varname == -1) \ |
| 114 | MessageBox (NULL, LOCALIZE (L"Error_UnableToAddMeshD3DXLoadMeshFromXFailed"), LOCALIZE (L"FatalError"), MB_ICONERROR | MB_OK); \ |
119 | MessageBox (NULL, LOCALIZE (L"Error_UnableToAddMeshD3DXLoadMeshFromXFailed"), LOCALIZE (L"FatalError"), MB_ICONERROR | MB_OK); \ |
| - | 120 | } |
|
| - | 121 | #define THEME_LOAD_SPRITE(varname,sprite_name) \ |
|
| - | 122 | { \ |
|
| - | 123 | theme->varname = Render_LoadSprite (L"%s/themes/%s/" sprite_name L".*", app_path, theme->name); \ |
|
| - | 124 | if (theme->varname == -1) \ |
|
| - | 125 | MessageBox (NULL, LOCALIZE (L"Error_UnableToAddSpriteD3DXCreateSpriteFailed"), LOCALIZE (L"FatalError"), MB_ICONERROR | MB_OK); \ |
|
| 115 | } |
126 | } |
| 116 | #define THEME_LOAD_PART(part_id,part_name) \ |
127 | #define THEME_LOAD_PART(part_id,part_name) \ |
| 117 | { \ |
128 | { \ |
| 118 | theme->part_meshes[part_id] = -1; \ |
129 | theme->part_meshes[part_id] = -1; \ |
| 119 | if (options.want_hiquality) \ |
130 | if (options.want_hiquality) \ |
| 120 | theme->part_meshes[part_id] = Render_LoadMesh (L"themes/%s |
131 | theme->part_meshes[part_id] = Render_LoadMesh (L"%s/themes/%s/" part_name L"-hidef.*", app_path, theme->name); \ |
| 121 | if (theme->part_meshes[part_id] == -1) \ |
132 | if (theme->part_meshes[part_id] == -1) \ |
| 122 | theme->part_meshes[part_id] = Render_LoadMesh (L"themes/%s |
133 | theme->part_meshes[part_id] = Render_LoadMesh (L"%s/themes/%s/" part_name L".*", app_path, theme->name); \ |
| 123 | if (theme->part_meshes[part_id] == -1) \ |
134 | if (theme->part_meshes[part_id] == -1) \ |
| 124 | MessageBox (NULL, LOCALIZE (L"Error_UnableToAddMeshD3DXLoadMeshFromXFailed"), LOCALIZE (L"FatalError"), MB_ICONERROR | MB_OK); \ |
135 | MessageBox (NULL, LOCALIZE (L"Error_UnableToAddMeshD3DXLoadMeshFromXFailed"), LOCALIZE (L"FatalError"), MB_ICONERROR | MB_OK); \ |
| 125 | } |
136 | } |
| 126 | 137 | ||
| 127 | struct _stat fileinfo; |
138 | struct _stat fileinfo; |
| Line 137... | Line 148... | ||
| 137 | int green; |
148 | int green; |
| 138 | int blue; |
149 | int blue; |
| 139 | FILE *fp; |
150 | FILE *fp; |
| 140 | 151 | ||
| 141 | // allocate space for and load its description |
152 | // allocate space for and load its description |
| 142 | swprintf_s (filename, WCHAR_SIZEOF (filename), L"themes/%s/readme.txt", theme->name); |
153 | swprintf_s (filename, WCHAR_SIZEOF (filename), L"%s/themes/%s/readme.txt", app_path, theme->name); |
| 143 | if (_wstat (filename, &fileinfo) == 0) |
154 | if (_wstat (filename, &fileinfo) == 0) |
| 144 | { |
155 | { |
| 145 | desc_buffer = (char *) SAFE_malloc (fileinfo.st_size, sizeof (char), false); |
156 | desc_buffer = (char *) SAFE_malloc (fileinfo.st_size, sizeof (char), false); |
| 146 | _wfopen_s (&fp, filename, L"rb"); |
157 | _wfopen_s (&fp, filename, L"rb"); |
| 147 | fread (desc_buffer, fileinfo.st_size, 1, fp); // read file in whole in ASCII form |
158 | fread (desc_buffer, fileinfo.st_size, 1, fp); // read file in whole in ASCII form |
| Line 152... | Line 163... | ||
| 152 | } |
163 | } |
| 153 | else |
164 | else |
| 154 | theme->description = NULL; // this theme has no description |
165 | theme->description = NULL; // this theme has no description |
| 155 | 166 | ||
| 156 | // load its background image |
167 | // load its background image |
| 157 | if ((theme->load_index == 0) || (want_all && (theme->load_index < 1))) |
- | |
| 158 | { |
- | |
| 159 |
|
168 | THEME_LOAD_STEP (0) Background_LoadImage (&theme->bg, L"%s/themes/%s/background/background.*", app_path, theme->name); |
| 160 | Background_LoadImage (&theme->bg, filename); |
- | |
| 161 | } |
- | |
| 162 | 169 | ||
| 163 | // load board meshes |
170 | // load board meshes |
| 164 | if ((theme->load_index == 1) || (want_all && (theme->load_index < 2))) |
- | |
| 165 |
|
171 | THEME_LOAD_STEP (1) THEME_LOAD_MESH (board_meshindex, L"models/board"); |
| 166 | if ((theme->load_index == 2) || (want_all && (theme->load_index < 3))) |
- | |
| 167 |
|
172 | THEME_LOAD_STEP (2) THEME_LOAD_MESH (table_meshindex, L"models/table"); |
| 168 | if ((theme->load_index == 3) || (want_all && (theme->load_index < 4))) |
- | |
| 169 |
|
173 | THEME_LOAD_STEP (3) THEME_LOAD_MESH (trim_meshindex, L"models/trim"); |
| 170 | if ((theme->load_index == 4) || (want_all && (theme->load_index < 5))) |
- | |
| 171 |
|
174 | THEME_LOAD_STEP (4) THEME_LOAD_MESH (tile_meshindex, L"models/tile"); |
| 172 | 175 | ||
| 173 | // load part meshes |
176 | // load part meshes |
| 174 | if ((theme->load_index == 5) || (want_all && (theme->load_index < 6))) |
- | |
| 175 |
|
177 | THEME_LOAD_STEP (5) THEME_LOAD_PART (PART_KING, L"models/king"); |
| 176 | if ((theme->load_index == 6) || (want_all && (theme->load_index < 7))) |
- | |
| 177 |
|
178 | THEME_LOAD_STEP (6) THEME_LOAD_PART (PART_QUEEN, L"models/queen"); |
| 178 | if ((theme->load_index == 7) || (want_all && (theme->load_index < 8))) |
- | |
| 179 |
|
179 | THEME_LOAD_STEP (7) THEME_LOAD_PART (PART_BISHOP, L"models/bishop"); |
| 180 | if ((theme->load_index == 8) || (want_all && (theme->load_index < 9))) |
- | |
| 181 |
|
180 | THEME_LOAD_STEP (8) THEME_LOAD_PART (PART_KNIGHT, L"models/knight"); |
| 182 | if ((theme->load_index == 9) || (want_all && (theme->load_index < 10))) |
- | |
| 183 |
|
181 | THEME_LOAD_STEP (9) THEME_LOAD_PART (PART_ROOK, L"models/rook"); |
| 184 | if ((theme->load_index == 10) || (want_all && (theme->load_index < 11))) |
- | |
| 185 |
|
182 | THEME_LOAD_STEP (10) THEME_LOAD_PART (PART_PAWN, L"models/pawn"); |
| 186 | 183 | ||
| 187 | // load part textures |
184 | // load part textures |
| 188 | if ((theme->load_index == 11) || (want_all && (theme->load_index < 12))) |
- | |
| 189 |
|
185 | THEME_LOAD_STEP (11) THEME_LOAD_TEXTURE (part_colors[COLOR_BLACK].texture, L"models/part-black"); |
| 190 | if ((theme->load_index == 12) || (want_all && (theme->load_index < 13))) |
- | |
| 191 |
|
186 | THEME_LOAD_STEP (12) THEME_LOAD_TEXTURE (part_colors[COLOR_WHITE].texture, L"models/part-white"); |
| 192 | 187 | ||
| 193 | // load board, table, grid and trim textures |
188 | // load board, table, grid and trim textures |
| 194 | if ((theme->load_index == 13) || (want_all && (theme->load_index < 14))) |
- | |
| 195 |
|
189 | THEME_LOAD_STEP (13) THEME_LOAD_TEXTURE (board_texture, L"models/board"); |
| 196 | if ((theme->load_index == 14) || (want_all && (theme->load_index < 15))) |
- | |
| 197 |
|
190 | THEME_LOAD_STEP (14) THEME_LOAD_TEXTURE (table_texture, L"models/table"); |
| 198 | if ((theme->load_index == 15) || (want_all && (theme->load_index < 16))) |
- | |
| 199 |
|
191 | THEME_LOAD_STEP (15) THEME_LOAD_TEXTURE (trim_texture, L"models/trim"); |
| 200 | if ((theme->load_index == 16) || (want_all && (theme->load_index < 17))) |
- | |
| 201 |
|
192 | THEME_LOAD_STEP (16) THEME_LOAD_TEXTURE (grid_texture, L"models/grid"); |
| 202 | 193 | ||
| 203 | // load overlay textures |
194 | // load overlay textures |
| 204 |
|
195 | THEME_LOAD_STEP (17) THEME_LOAD_TEXTURE (shadow_textureindex, L"shadow"); |
| 205 | theme->shadow_textureindex = Render_LoadTexture (L"themes/%s/shadow.*", theme->name); |
- | |
| 206 |
|
196 | THEME_LOAD_STEP (18) THEME_LOAD_TEXTURE (hovered_textureindex, L"hovered"); |
| 207 | theme->hovered_textureindex = Render_LoadTexture (L"themes/%s/hovered.*", theme->name); |
- | |
| 208 |
|
197 | THEME_LOAD_STEP (19) THEME_LOAD_TEXTURE (check_textureindex, L"check"); |
| 209 | theme->check_textureindex = Render_LoadTexture (L"themes/%s/check.*", theme->name); |
- | |
| 210 |
|
198 | THEME_LOAD_STEP (20) THEME_LOAD_TEXTURE (threat_textureindex, L"takeable"); |
| 211 | theme->threat_textureindex = Render_LoadTexture (L"themes/%s/takeable.*", theme->name); |
- | |
| 212 | if ((theme->load_index == 21) || (want_all && (theme->load_index < 22))) |
- | |
| 213 |
|
199 | THEME_LOAD_STEP (21) THEME_LOAD_TEXTURE (lastmovesource_textureindex, L"lastmovesource"); |
| 214 | if ((theme->load_index == 22) || (want_all && (theme->load_index < 23))) |
- | |
| 215 |
|
200 | THEME_LOAD_STEP (22) THEME_LOAD_TEXTURE (lastmovetarget_textureindex, L"lastmovetarget"); |
| 216 | if ((theme->load_index == 23) || (want_all && (theme->load_index < 24))) |
- | |
| 217 |
|
201 | THEME_LOAD_STEP (23) THEME_LOAD_TEXTURE (selected_textureindex, L"selected"); |
| 218 | if ((theme->load_index == 24) || (want_all && (theme->load_index < 25))) |
- | |
| 219 |
|
202 | THEME_LOAD_STEP (24) THEME_LOAD_TEXTURE (possiblemove_textureindex, L"possiblemove"); |
| 220 |
|
203 | THEME_LOAD_STEP (25) THEME_LOAD_TEXTURE (takeable_textureindex, L"takeable"); |
| 221 | theme->takeable_textureindex = Render_LoadTexture (L"themes/%s/takeable.*", theme->name); |
- | |
| 222 | 204 | ||
| 223 | // load sprites |
205 | // load sprites |
| 224 | if ((theme->load_index == 26) || (want_all && (theme->load_index < 27))) |
- | |
| 225 |
|
206 | THEME_LOAD_STEP (26) THEME_LOAD_SPRITE (flatsprites[COLOR_WHITE][PART_PAWN], L"parts/pawn-white"); |
| 226 | if ((theme->load_index == 27) || (want_all && (theme->load_index < 28))) |
- | |
| 227 |
|
207 | THEME_LOAD_STEP (27) THEME_LOAD_SPRITE (flatsprites[COLOR_WHITE][PART_ROOK], L"parts/rook-white"); |
| 228 | if ((theme->load_index == 28) || (want_all && (theme->load_index < 29))) |
- | |
| 229 |
|
208 | THEME_LOAD_STEP (28) THEME_LOAD_SPRITE (flatsprites[COLOR_WHITE][PART_KNIGHT], L"parts/knight-white"); |
| 230 | if ((theme->load_index == 29) || (want_all && (theme->load_index < 30))) |
- | |
| 231 |
|
209 | THEME_LOAD_STEP (29) THEME_LOAD_SPRITE (flatsprites[COLOR_WHITE][PART_BISHOP], L"parts/bishop-white"); |
| 232 | if ((theme->load_index == 30) || (want_all && (theme->load_index < 31))) |
- | |
| 233 |
|
210 | THEME_LOAD_STEP (30) THEME_LOAD_SPRITE (flatsprites[COLOR_WHITE][PART_QUEEN], L"parts/queen-white"); |
| 234 | if ((theme->load_index == 31) || (want_all && (theme->load_index < 32))) |
- | |
| 235 |
|
211 | THEME_LOAD_STEP (31) THEME_LOAD_SPRITE (flatsprites[COLOR_WHITE][PART_KING], L"parts/king-white"); |
| 236 | if ((theme->load_index == 32) || (want_all && (theme->load_index < 33))) |
- | |
| 237 |
|
212 | THEME_LOAD_STEP (32) THEME_LOAD_SPRITE (flatsprites[COLOR_BLACK][PART_PAWN], L"parts/pawn-black"); |
| 238 | if ((theme->load_index == 33) || (want_all && (theme->load_index < 34))) |
- | |
| 239 |
|
213 | THEME_LOAD_STEP (33) THEME_LOAD_SPRITE (flatsprites[COLOR_BLACK][PART_ROOK], L"parts/rook-black"); |
| 240 | if ((theme->load_index == 34) || (want_all && (theme->load_index < 35))) |
- | |
| 241 |
|
214 | THEME_LOAD_STEP (34) THEME_LOAD_SPRITE (flatsprites[COLOR_BLACK][PART_KNIGHT], L"parts/knight-black"); |
| 242 | if ((theme->load_index == 35) || (want_all && (theme->load_index < 36))) |
- | |
| 243 |
|
215 | THEME_LOAD_STEP (35) THEME_LOAD_SPRITE (flatsprites[COLOR_BLACK][PART_BISHOP], L"parts/bishop-black"); |
| 244 | if ((theme->load_index == 36) || (want_all && (theme->load_index < 37))) |
- | |
| 245 |
|
216 | THEME_LOAD_STEP (36) THEME_LOAD_SPRITE (flatsprites[COLOR_BLACK][PART_QUEEN], L"parts/queen-black"); |
| 246 | if ((theme->load_index == 37) || (want_all && (theme->load_index < 38))) |
- | |
| 247 |
|
217 | THEME_LOAD_STEP (37) THEME_LOAD_SPRITE (flatsprites[COLOR_BLACK][PART_KING], L"parts/king-black"); |
| 248 | if ((theme->load_index == 38) || (want_all && (theme->load_index < 39))) |
- | |
| 249 |
|
218 | THEME_LOAD_STEP (38) THEME_LOAD_SPRITE (lastmovesource_spriteindex, L"lastmovesource"); |
| 250 | if ((theme->load_index == 39) || (want_all && (theme->load_index < 40))) |
- | |
| 251 |
|
219 | THEME_LOAD_STEP (39) THEME_LOAD_SPRITE (lastmovetarget_spriteindex, L"lastmovetarget"); |
| 252 | 220 | ||
| 253 | // load the flat pieces textures |
221 | // load the flat pieces textures |
| 254 | if ((theme->load_index == 40) || (want_all && (theme->load_index < 41))) |
- | |
| 255 |
|
222 | THEME_LOAD_STEP (40) THEME_LOAD_TEXTURE (flattextures[COLOR_WHITE][PART_PAWN], L"parts/pawn-white"); |
| 256 | if ((theme->load_index == 41) || (want_all && (theme->load_index < 42))) |
- | |
| 257 |
|
223 | THEME_LOAD_STEP (41) THEME_LOAD_TEXTURE (flattextures[COLOR_WHITE][PART_ROOK], L"parts/rook-white"); |
| 258 | if ((theme->load_index == 42) || (want_all && (theme->load_index < 43))) |
- | |
| 259 |
|
224 | THEME_LOAD_STEP (42) THEME_LOAD_TEXTURE (flattextures[COLOR_WHITE][PART_KNIGHT], L"parts/knight-white"); |
| 260 | if ((theme->load_index == 43) || (want_all && (theme->load_index < 44))) |
- | |
| 261 |
|
225 | THEME_LOAD_STEP (43) THEME_LOAD_TEXTURE (flattextures[COLOR_WHITE][PART_BISHOP], L"parts/bishop-white"); |
| 262 | if ((theme->load_index == 44) || (want_all && (theme->load_index < 45))) |
- | |
| 263 |
|
226 | THEME_LOAD_STEP (44) THEME_LOAD_TEXTURE (flattextures[COLOR_WHITE][PART_QUEEN], L"parts/queen-white"); |
| 264 | if ((theme->load_index == 45) || (want_all && (theme->load_index < 46))) |
- | |
| 265 |
|
227 | THEME_LOAD_STEP (45) THEME_LOAD_TEXTURE (flattextures[COLOR_WHITE][PART_KING], L"parts/king-white"); |
| 266 | if ((theme->load_index == 46) || (want_all && (theme->load_index < 47))) |
- | |
| 267 |
|
228 | THEME_LOAD_STEP (46) THEME_LOAD_TEXTURE (flattextures[COLOR_BLACK][PART_PAWN], L"parts/pawn-black"); |
| 268 | if ((theme->load_index == 47) || (want_all && (theme->load_index < 48))) |
- | |
| 269 |
|
229 | THEME_LOAD_STEP (47) THEME_LOAD_TEXTURE (flattextures[COLOR_BLACK][PART_ROOK], L"parts/rook-black"); |
| 270 | if ((theme->load_index == 48) || (want_all && (theme->load_index < 49))) |
- | |
| 271 |
|
230 | THEME_LOAD_STEP (48) THEME_LOAD_TEXTURE (flattextures[COLOR_BLACK][PART_KNIGHT], L"parts/knight-black"); |
| 272 | if ((theme->load_index == 49) || (want_all && (theme->load_index < 50))) |
- | |
| 273 |
|
231 | THEME_LOAD_STEP (49) THEME_LOAD_TEXTURE (flattextures[COLOR_BLACK][PART_BISHOP], L"parts/bishop-black"); |
| 274 | if ((theme->load_index == 50) || (want_all && (theme->load_index < 51))) |
- | |
| 275 |
|
232 | THEME_LOAD_STEP (50) THEME_LOAD_TEXTURE (flattextures[COLOR_BLACK][PART_QUEEN], L"parts/queen-black"); |
| 276 | if ((theme->load_index == 51) || (want_all && (theme->load_index < 52))) |
- | |
| 277 |
|
233 | THEME_LOAD_STEP (51) THEME_LOAD_TEXTURE (flattextures[COLOR_BLACK][PART_KING], L"parts/king-black"); |
| 278 | 234 | ||
| 279 | ////////////////////////////// |
235 | ////////////////////////////// |
| 280 | // read scene lights from file |
236 | // read scene lights from file |
| 281 | 237 | ||
| 282 |
|
238 | THEME_LOAD_STEP (52) |
| 283 | { |
239 | { |
| 284 | theme->illum.lights = NULL; // no lights for the scene so far |
240 | theme->illum.lights = NULL; // no lights for the scene so far |
| 285 | theme->illum.light_count = 0; // reset the known lights count |
241 | theme->illum.light_count = 0; // reset the known lights count |
| 286 | 242 | ||
| 287 | // open the INI file |
243 | // open the INI file |
| 288 | swprintf_s (filename, WCHAR_SIZEOF (filename), L"themes/%s/lights.ini", theme->name); |
244 | swprintf_s (filename, WCHAR_SIZEOF (filename), L"%s/themes/%s/lights.ini", app_path, theme->name); |
| 289 | inifile = INIFile_LoadINIFile (filename); |
245 | inifile = INIFile_LoadINIFile (filename); |
| 290 | 246 | ||
| 291 | // read the global light values and the parts illumination values |
247 | // read the global light values and the parts illumination values |
| 292 | swscanf_s (INIFile_ReadEntryAsString (inifile, L"global", L"ambient light", L"50, 50, 50"), L"%d , %d , %d", &red, &green, &blue); |
248 | swscanf_s (INIFile_ReadEntryAsString (inifile, L"global", L"ambient light", L"50, 50, 50"), L"%d , %d , %d", &red, &green, &blue); |
| 293 | theme->illum.ambient_light = RGB_TO_RGBACOLOR (red, green, blue); |
249 | theme->illum.ambient_light = RGB_TO_RGBACOLOR (red, green, blue); |
| Line 340... | Line 296... | ||
| 340 | theme->is_loaded = true; // when everything has been loaded, remember this theme is now usable |
296 | theme->is_loaded = true; // when everything has been loaded, remember this theme is now usable |
| 341 | 297 | ||
| 342 | return; // finished, theme data is loaded a bit more |
298 | return; // finished, theme data is loaded a bit more |
| 343 | 299 | ||
| 344 | #undef THEME_LOAD_PART |
300 | #undef THEME_LOAD_PART |
| - | 301 | #undef THEME_LOAD_SPRITE |
|
| 345 | #undef THEME_LOAD_MESH |
302 | #undef THEME_LOAD_MESH |
| - | 303 | #undef THEME_LOAD_TEXTURE |
|
| - | 304 | #undef THEME_LOAD_STEP |
|
| 346 | } |
305 | } |
| 347 | 306 | ||
| 348 | 307 | ||
| 349 | void Background_LoadImage (backgroundsprite_t *bg, const wchar_t * |
308 | void Background_LoadImage (backgroundsprite_t *bg, const wchar_t *fmt, ...) |
| 350 | { |
309 | { |
| 351 | // this function loads the specified background image for the specified theme |
310 | // this function loads the specified background image for the specified theme |
| 352 | 311 | ||
| - | 312 | static wchar_t bgimage_pathname[MAX_PATH]; |
|
| - | 313 | va_list argptr; |
|
| 353 | int width; |
314 | int width; |
| 354 | int height; |
315 | int height; |
| - | 316 | ||
| - | 317 | // concatenate all the arguments in one string |
|
| - | 318 | va_start (argptr, fmt); |
|
| - | 319 | wvsprintf (bgimage_pathname, fmt, argptr); |
|
| - | 320 | va_end (argptr); |
|
| 355 | 321 | ||
| 356 | // does the background file look like an image we can comprehend ? try to get its width and height |
322 | // does the background file look like an image we can comprehend ? try to get its width and height |
| 357 | if (GetImageSize ( |
323 | if (GetImageSize (bgimage_pathname, &width, &height)) |
| 358 | { |
324 | { |
| 359 | // yes it is, so load it as our background and round its size to the highest multiple of two |
325 | // yes it is, so load it as our background and round its size to the highest multiple of two |
| 360 | bg->sprite_width = 2; |
326 | bg->sprite_width = 2; |
| 361 | while (bg->sprite_width < width) |
327 | while (bg->sprite_width < width) |
| 362 | bg->sprite_width *= 2; // save them rounded to the next power of two |
328 | bg->sprite_width *= 2; // save them rounded to the next power of two |
| 363 | bg->sprite_height = 2; |
329 | bg->sprite_height = 2; |
| 364 | while (bg->sprite_height < height) |
330 | while (bg->sprite_height < height) |
| 365 | bg->sprite_height *= 2; // save them rounded to the next power of two |
331 | bg->sprite_height *= 2; // save them rounded to the next power of two |
| 366 | 332 | ||
| 367 | bg->sprite_index = Render_LoadSprite ( |
333 | bg->sprite_index = Render_LoadSprite (bgimage_pathname); // load texture as sprite |
| 368 | } |
334 | } |
| 369 | else |
335 | else |
| 370 | { |
336 | { |
| 371 | // no it's not, so load a default texture |
337 | // no it's not, so load a default texture |
| 372 | bg->sprite_index = Render_LoadSprite (L"data/notexture.png"); |
338 | bg->sprite_index = Render_LoadSprite (L"%s/data/notexture.png", app_path); |
| 373 | bg->sprite_width = 2; |
339 | bg->sprite_width = 2; |
| 374 | bg->sprite_height = 2; |
340 | bg->sprite_height = 2; |
| 375 | } |
341 | } |
| 376 | 342 | ||
| 377 | return; // finished, theme background image is loaded |
343 | return; // finished, theme background image is loaded |