xoreos  0.0.5
kotor.cpp
Go to the documentation of this file.
1 /* xoreos - A reimplementation of BioWare's Aurora engine
2  *
3  * xoreos is the legal property of its developers, whose names
4  * can be found in the AUTHORS file distributed with this source
5  * distribution.
6  *
7  * xoreos is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 3
10  * of the License, or (at your option) any later version.
11  *
12  * xoreos is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with xoreos. If not, see <http://www.gnu.org/licenses/>.
19  */
20 
25 #include <cassert>
26 
27 #include "src/common/util.h"
28 #include "src/common/ustring.h"
29 #include "src/common/filelist.h"
30 #include "src/common/filepath.h"
31 #include "src/common/configman.h"
32 
33 #include "src/aurora/resman.h"
34 #include "src/aurora/language.h"
35 #include "src/aurora/talkman.h"
37 
38 #include "src/events/events.h"
39 
42 
47 
52 #include "src/engines/kotor/game.h"
53 
54 namespace Engines {
55 
56 namespace KotOR {
57 
58 KotOREngine::KotOREngine() : _language(Aurora::kLanguageInvalid), _hasLiveKey(false) {
59 
60  _console.reset(new Console(*this));
61 }
62 
64 }
65 
67  Aurora::Platform UNUSED(platform),
68  std::vector<Aurora::Language> &languages) const {
69  try {
70  Common::FileList files;
71  if (!files.addDirectory(target))
72  return true;
73 
74  Common::UString tlk = files.findFirst("dialog.tlk", true);
75  if (tlk.empty())
76  return true;
77 
79  if (languageID == Aurora::kLanguageInvalid)
80  return true;
81 
82  Aurora::Language language = LangMan.getLanguage(languageID);
83  if (language == Aurora::kLanguageInvalid)
84  return true;
85 
86  languages.push_back(language);
87 
88  } catch (...) {
89  }
90 
91  return true;
92 }
93 
95  language = _language;
96  return true;
97 }
98 
100  Aurora::Language language;
101  if (!evaluateLanguage(false, language) || (_language != language))
102  return false;
103 
104  return true;
105 }
106 
108  assert(_game);
109 
110  return *_game;
111 }
112 
114  init();
115  if (EventMan.quitRequested())
116  return;
117 
118  CursorMan.hideCursor();
119  CursorMan.set();
120 
121  playIntroVideos();
122  if (EventMan.quitRequested())
123  return;
124 
125  CursorMan.showCursor();
126 
127  _game.reset(new Game(*this, *_console, *_version));
128  _game->run();
129 
130  deinit();
131 }
132 
134  LoadProgress progress(19);
135 
136  progress.step("Declare languages");
138 
139  progress.step("Detecting game version");
140  detectVersion();
141 
142  if (evaluateLanguage(true, _language))
143  status("Setting the language to %s", LangMan.getLanguageName(_language).c_str());
144  else
145  warning("Failed to detect this game's language");
146 
147  LangMan.setCurrentLanguage(_language);
148 
149  progress.step("Loading user game config");
150  initConfig();
151  checkConfig();
152 
153  if (EventMan.quitRequested())
154  return;
155 
156  initResources(progress);
157 
158  if (EventMan.quitRequested())
159  return;
160 
161  progress.step("Loading game cursors");
162  initCursors();
163 
164  if (EventMan.quitRequested())
165  return;
166 
167  progress.step("Initializing internal game config");
168  initGameConfig();
169 
170  GfxMan.setPerspective(55.0, 0.1, 10000.0);
171 
172  progress.step("Successfully initialized the engine");
173 }
174 
176  _version.reset(new Version(_platform));
177 
178  if (_version->detect(_target)) {
179  status("This is Star Wars: Knights of the Old Republic %s v%s",
180  _version->getPlatformName().c_str(), _version->getVersionString().c_str());
181 
182  if (_version->isTooOld()) {
183  warning("Your version of Star Wars: Knights of the Old Republic is too old");
184  warning("Please update to v%s for optimal support", _version->getOptimumVersionString().c_str());
185  } else if (_version->isTooNew()) {
186  warning("Your version of Star Wars: Knights of the Old Republic is too new!?");
187  warning("Please contact us with detailed information about your version");
188  }
189 
190  } else {
191  warning("Failed to detect the patch version of your Star Wars: Knights of the Old Republic installation");
192  }
193 }
194 
196  static const Aurora::LanguageManager::Declaration kLanguageDeclarations[] = {
207  };
208 
209  LangMan.addLanguages(kLanguageDeclarations, ARRAYSIZE(kLanguageDeclarations));
210 }
211 
213  // In the Xbox version of KotOR, TXB textures are actually TPCs
216 
217  progress.step("Setting base directory");
218  ResMan.registerDataBase(_target);
219 
220  progress.step("Adding extra archive directories");
221  const Common::UString dataDir = (_platform == Aurora::kPlatformXbox) ? "dataxbox" : "data";
222  const Common::UString rimsDir = (_platform == Aurora::kPlatformXbox) ? "rimsxbox" : "rims";
223 
224  indexMandatoryDirectory( dataDir , 0, 0, 2);
225  indexMandatoryDirectory("lips" , 0, 0, 3);
226  indexMandatoryDirectory("modules", 0, 0, 4);
227  indexMandatoryDirectory( rimsDir , 0, 0, 5);
228 
230  indexMandatoryDirectory("texturepacks", 0, 0, 6);
231 
232  progress.step("Loading main KEY");
233  indexMandatoryArchive("chitin.key", 10);
234 
235  if (indexOptionalArchive("live1.key", 11))
236  _hasLiveKey = true;
237 
238  progress.step("Loading global auxiliary resources");
239  indexMandatoryArchive("mainmenu.rim" , 50);
240  indexMandatoryArchive("mainmenudx.rim" , 51);
241  indexMandatoryArchive("legal.rim" , 52);
242  indexMandatoryArchive("legaldx.rim" , 53);
243  indexMandatoryArchive("global.rim" , 54);
244  indexMandatoryArchive("subglobaldx.rim" , 55);
245  indexMandatoryArchive("miniglobaldx.rim", 56);
246  indexMandatoryArchive("globaldx.rim" , 57);
247  indexMandatoryArchive("chargen.rim" , 58);
248  indexMandatoryArchive("chargendx.rim" , 59);
249 
251  // The Xbox version has most of its textures in "textures.bif"
252  // Some, however, reside in "players.erf"
253  progress.step("Loading Xbox textures");
254  indexMandatoryArchive("players.erf", 60);
255  } else {
256  // The Windows/Mac versions have the GUI textures here
257  progress.step("Loading GUI textures");
258  indexMandatoryArchive("swpc_tex_gui.erf", 60);
259  }
260 
261  progress.step("Indexing extra sound resources");
262  indexMandatoryDirectory("streamsounds", 0, -1, 100);
263  progress.step("Indexing extra voice resources");
264  indexMandatoryDirectory("streamwaves" , 0, -1, 101);
265  progress.step("Indexing extra music resources");
266  indexMandatoryDirectory("streammusic" , 0, -1, 102);
267  progress.step("Indexing extra movie resources");
268  indexMandatoryDirectory("movies" , 0, -1, 103);
269 
271  progress.step("Indexing Windows-specific resources");
273  indexMandatoryArchive("swkotor.exe", 154);
274  } else if (_platform == Aurora::kPlatformMacOSX) {
275  progress.step("Indexing Mac-specific resources");
276  indexMandatoryDirectory("Knights of the Old Republic.app/Contents/Resources", 0, -1, 154);
277  indexMandatoryDirectory("Knights of the Old Republic.app/Contents/Resources/Cursors", 0, -1, 155);
278  } else if (_platform == Aurora::kPlatformXbox) {
279  progress.step("Indexing Xbox-specific resources");
280  indexMandatoryDirectory("errortex" , 0, -1, 154);
281  indexMandatoryDirectory("localvault", 0, -1, 155);
282  indexMandatoryDirectory("media" , 0, -1, 156);
283 
284  // For the DLC, we need to index the "sound" directory as well
285  if (_hasLiveKey)
286  indexMandatoryDirectory("sound", 0, -1, 157);
287  }
288 
289  // Texture packs at 400, in module.cpp
290 
291  progress.step("Indexing override files");
292  indexOptionalArchive("patch.erf", 499);
293  indexOptionalDirectory("override", 0, 0, 500);
294 
295  if (EventMan.quitRequested())
296  return;
297 
298  progress.step("Loading main talk table");
299  TalkMan.addTable("dialog", "dialogf", false, 0);
300 
301  if (_hasLiveKey)
302  TalkMan.addTable("live1", "live1f", true, 0);
303 
304  progress.step("Registering file formats");
307 
308  if (ResMan.hasResource("fnt_d16x16b", Aurora::kResourceImage))
309  FontMan.addAlias("fnt_d16x16", "fnt_d16x16b");
310 }
311 
313  std::vector<Common::UString> cursorRemap;
314 
315  cursorRemap.push_back("gui_mp_defaultu");
316  cursorRemap.push_back("gui_mp_defaultd");
317  cursorRemap.push_back("gui_mp_walku");
318  cursorRemap.push_back("gui_mp_walkd");
319  cursorRemap.push_back("gui_mp_invalidu");
320  cursorRemap.push_back("gui_mp_invalidd");
321  cursorRemap.push_back("gui_mp_bashu");
322  cursorRemap.push_back("gui_mp_bashd");
323  cursorRemap.push_back("gui_mp_bashup");
324  cursorRemap.push_back("gui_mp_bashdp");
325  cursorRemap.push_back("gui_mp_talku");
326  cursorRemap.push_back("gui_mp_talkd");
327  cursorRemap.push_back("gui_mp_notalku");
328  cursorRemap.push_back("gui_mp_notalkd");
329  cursorRemap.push_back("gui_mp_followu");
330  cursorRemap.push_back("gui_mp_followd");
331  cursorRemap.push_back("gui_mp_examineu");
332  cursorRemap.push_back("gui_mp_examined");
333  cursorRemap.push_back("gui_mp_noexamu");
334  cursorRemap.push_back("gui_mp_noexamd");
335  cursorRemap.push_back("gui_mp_transu");
336  cursorRemap.push_back("gui_mp_transd");
337  cursorRemap.push_back("gui_mp_dooru");
338  cursorRemap.push_back("gui_mp_doord");
339  cursorRemap.push_back("gui_mp_useu");
340  cursorRemap.push_back("gui_mp_used");
341  cursorRemap.push_back("gui_mp_useup");
342  cursorRemap.push_back("gui_mp_usedp");
343  cursorRemap.push_back("gui_mp_magicu");
344  cursorRemap.push_back("gui_mp_magicd");
345  cursorRemap.push_back("gui_mp_nomagicu");
346  cursorRemap.push_back("gui_mp_nomagicd");
347  cursorRemap.push_back("gui_mp_dismineu");
348  cursorRemap.push_back("gui_mp_dismined");
349  cursorRemap.push_back("gui_mp_dismineup");
350  cursorRemap.push_back("gui_mp_disminedp");
351  cursorRemap.push_back("gui_mp_recmineu");
352  cursorRemap.push_back("gui_mp_recmined");
353  cursorRemap.push_back("gui_mp_recmineup");
354  cursorRemap.push_back("gui_mp_recminedp");
355  cursorRemap.push_back("gui_mp_locku");
356  cursorRemap.push_back("gui_mp_lockd");
357  cursorRemap.push_back("gui_mp_doorup");
358  cursorRemap.push_back("gui_mp_doordp");
359  cursorRemap.push_back("gui_mp_selectu");
360  cursorRemap.push_back("gui_mp_selectd");
361  cursorRemap.push_back("gui_mp_createu");
362  cursorRemap.push_back("gui_mp_created");
363  cursorRemap.push_back("gui_mp_nocreatu");
364  cursorRemap.push_back("gui_mp_nocreatd");
365  cursorRemap.push_back("gui_mp_killu");
366  cursorRemap.push_back("gui_mp_killd");
367  cursorRemap.push_back("gui_mp_nokillu");
368  cursorRemap.push_back("gui_mp_nokilld");
369  cursorRemap.push_back("gui_mp_healu");
370  cursorRemap.push_back("gui_mp_heald");
371  cursorRemap.push_back("gui_mp_nohealu");
372  cursorRemap.push_back("gui_mp_noheald");
373  cursorRemap.push_back("gui_mp_arrun00");
374  cursorRemap.push_back("gui_mp_arrun01");
375  cursorRemap.push_back("gui_mp_arrun02");
376  cursorRemap.push_back("gui_mp_arrun03");
377  cursorRemap.push_back("gui_mp_arrun04");
378  cursorRemap.push_back("gui_mp_arrun05");
379  cursorRemap.push_back("gui_mp_arrun06");
380  cursorRemap.push_back("gui_mp_arrun07");
381  cursorRemap.push_back("gui_mp_arrun08");
382  cursorRemap.push_back("gui_mp_arrun09");
383  cursorRemap.push_back("gui_mp_arrun10");
384  cursorRemap.push_back("gui_mp_arrun11");
385  cursorRemap.push_back("gui_mp_arrun12");
386  cursorRemap.push_back("gui_mp_arrun13");
387  cursorRemap.push_back("gui_mp_arrun14");
388  cursorRemap.push_back("gui_mp_arrun15");
389  cursorRemap.push_back("gui_mp_arwalk00");
390  cursorRemap.push_back("gui_mp_arwalk01");
391  cursorRemap.push_back("gui_mp_arwalk02");
392  cursorRemap.push_back("gui_mp_arwalk03");
393  cursorRemap.push_back("gui_mp_arwalk04");
394  cursorRemap.push_back("gui_mp_arwalk05");
395  cursorRemap.push_back("gui_mp_arwalk06");
396  cursorRemap.push_back("gui_mp_arwalk07");
397  cursorRemap.push_back("gui_mp_arwalk08");
398  cursorRemap.push_back("gui_mp_arwalk09");
399  cursorRemap.push_back("gui_mp_arwalk10");
400  cursorRemap.push_back("gui_mp_arwalk11");
401  cursorRemap.push_back("gui_mp_arwalk12");
402  cursorRemap.push_back("gui_mp_arwalk13");
403  cursorRemap.push_back("gui_mp_arwalk14");
404  cursorRemap.push_back("gui_mp_arwalk15");
405  cursorRemap.push_back("gui_mp_pickupu");
406  cursorRemap.push_back("gui_mp_pickupd");
407 
408  ResMan.setCursorRemap(cursorRemap);
409 }
410 
413  return;
414 
415  CursorMan.add("gui_mp_defaultd" , "default" , "down");
416  CursorMan.add("gui_mp_defaultu" , "default" , "up" );
417 
418  CursorMan.add("gui_mp_bashd" , "bash" , "down");
419  CursorMan.add("gui_mp_bashu" , "bash" , "up" );
420  CursorMan.add("gui_mp_bashdp" , "bash+" , "down");
421  CursorMan.add("gui_mp_bashup" , "bash+" , "up" );
422  CursorMan.add("gui_mp_dismined" , "dismine" , "down");
423  CursorMan.add("gui_mp_dismineu" , "dismine" , "up" );
424  CursorMan.add("gui_mp_disminedp", "dismine+" , "down");
425  CursorMan.add("gui_mp_dismineup", "dismine+" , "up" );
426  CursorMan.add("gui_mp_doord" , "door" , "down");
427  CursorMan.add("gui_mp_dooru" , "door" , "up" );
428  CursorMan.add("gui_mp_doordp" , "door+" , "down");
429  CursorMan.add("gui_mp_doorup" , "door+" , "up" );
430  CursorMan.add("gui_mp_invalidd" , "invalid" , "down");
431  CursorMan.add("gui_mp_invalidu" , "invalid" , "up" );
432  CursorMan.add("gui_mp_killd" , "kill" , "down");
433  CursorMan.add("gui_mp_killu" , "kill" , "up" );
434  CursorMan.add("gui_mp_recmined" , "recmine" , "down");
435  CursorMan.add("gui_mp_recmineu" , "recmine" , "up" );
436  CursorMan.add("gui_mp_recminedp", "recmine+" , "down");
437  CursorMan.add("gui_mp_recmineup", "recmine+" , "up" );
438  CursorMan.add("gui_mp_selectd" , "select" , "down");
439  CursorMan.add("gui_mp_selectu" , "select" , "up" );
440  CursorMan.add("gui_mp_talkd" , "talk" , "down");
441  CursorMan.add("gui_mp_talku" , "talk" , "up" );
442  CursorMan.add("gui_mp_used" , "use" , "down");
443  CursorMan.add("gui_mp_useu" , "use" , "up" );
444  CursorMan.add("gui_mp_usedp" , "use+" , "down");
445  CursorMan.add("gui_mp_useup" , "use+" , "up" );
446 
447  CursorMan.setDefault("default", "up");
448 }
449 
451  // Gameplay
452 
453  ConfigMan.setInt(Common::kConfigRealmDefault, "difficulty", 1);
454  ConfigMan.setBool(Common::kConfigRealmDefault, "autolevelup", false);
455  ConfigMan.setBool(Common::kConfigRealmDefault, "mousemove", false);
456  ConfigMan.setBool(Common::kConfigRealmDefault, "autosave", true);
457  ConfigMan.setBool(Common::kConfigRealmDefault, "reverseminigameyaxis", false);
458  ConfigMan.setBool(Common::kConfigRealmDefault, "combatmovement", true);
459 
460  // Gameplay -> Mouse settings
461 
462  ConfigMan.setBool(Common::kConfigRealmDefault, "reversemousebuttons", false);
463 
464  // Gameplay -> Key mapping
465 
466  // Feedback
467 
468  // Auto-pause
469 
470  ConfigMan.setBool(Common::kConfigRealmDefault, "endofcombatround", false);
471  ConfigMan.setBool(Common::kConfigRealmDefault, "enemysighted", true);
472  ConfigMan.setBool(Common::kConfigRealmDefault, "minesighted", true);
473  ConfigMan.setBool(Common::kConfigRealmDefault, "partymemberdown", true);
474  ConfigMan.setBool(Common::kConfigRealmDefault, "actionmenuused", false);
475  ConfigMan.setBool(Common::kConfigRealmDefault, "newtargetselected", true);
476 
477  // Graphics
478 
479  ConfigMan.setBool(Common::kConfigRealmDefault, "shadows", true);
480  ConfigMan.setBool(Common::kConfigRealmDefault, "grass", true);
481 
482  // Graphics -> Advanced options
483 
484  ConfigMan.setInt(Common::kConfigRealmDefault, "texturepack", 2);
485  ConfigMan.setInt(Common::kConfigRealmDefault, "antialiasing", 0);
486  ConfigMan.setInt(Common::kConfigRealmDefault, "anisotropy", 0);
487  ConfigMan.setBool(Common::kConfigRealmDefault, "framebuffereffects", true);
488  ConfigMan.setBool(Common::kConfigRealmDefault, "softshadows", true);
489  ConfigMan.setBool(Common::kConfigRealmDefault, "vsync", false);
490 
491  // Sound
492 
493  // Sound -> Advanced options
494 
495  ConfigMan.setInt(Common::kConfigRealmDefault, "eax", 0);
496  ConfigMan.setBool(Common::kConfigRealmDefault, "forcesoftware", false);
497 
498  // xoreos-specific options
499 
500  // Should we disable hiding of far rooms when the fly cam is enabled?
501  ConfigMan.setBool(Common::kConfigRealmDefault, "flycamallrooms", true);
502 }
503 
505  ConfigMan.setString(Common::kConfigRealmGameTemp, "KOTOR_moduleDir",
506  Common::FilePath::findSubDirectory(_target, "modules", true));
507 }
508 
510  checkConfigInt("difficulty", 0, 2);
511 
512  checkConfigInt("texturepack", 0, 2);
513  checkConfigInt("antialiasing", 0, 3);
514  checkConfigInt("anisotropy", 0, 4);
515 
516  checkConfigInt("eax", 0, 3);
517 }
518 
521 
522  _version.reset();
523  _game.reset();
524 }
525 
527  switch (_platform) {
529  playVideo("sizzle"); // Logos and a preview of the game
530  break;
531 
532  default:
534  playVideo("leclogo"); // LucasArts
535  playVideo("biologo"); // BioWare
536  playVideo("legal"); // Legal billboard
537  break;
538 
540  playVideo("leclogo"); // LucasArts
541  playVideo("biologo"); // BioWare
542  playVideo("Aspyr_BlueDust_intro"); // Aspyr
543  playVideo("legal"); // Legal billboard
544  break;
545 
548  playVideo("leclogo"); // LucasArts
549  playVideo("biologo"); // BioWare
550  playVideo("aspyr"); // Aspyr
551  playVideo("legal"); // Legal billboard
552  break;
553  }
554 }
555 
558 }
559 
560 } // End of namespace KotOR
561 
562 } // End of namespace Engines
#define ResMan
Shortcut for accessing the sound manager.
Definition: resman.h:557
Aurora::Platform _platform
Definition: engine.h:84
void playVideo(const Common::UString &video)
Play this video resource.
Definition: util.cpp:54
Game & getGame()
Return the context running the actual game.
Definition: kotor.cpp:107
GameID
Definition: types.h:393
Generic Aurora engines resource utility functions.
#define TalkMan
Shortcut for accessing the talk manager.
Definition: talkman.h:111
A class holding an UTF-8 string.
Definition: ustring.h:48
Temporary game settings/properties.
Definition: configman.h:47
Common::ScopedPtr< Game > _game
Definition: kotor.h:70
The global config manager.
Common::ScopedPtr< Console > _console
Definition: engine.h:87
bool indexOptionalArchive(const Common::UString &file, uint32 priority, const std::vector< byte > &password, Common::ChangeID *changeID)
Definition: resources.cpp:69
bool evaluateLanguage(bool find, Aurora::Language &language) const
Definition: engine.cpp:198
#define ARRAYSIZE(x)
Macro which determines the number of entries in a fixed size array.
Definition: util.h:131
Texture.
Definition: types.h:182
Language
Definition: language.h:46
bool indexOptionalDirectory(const Common::UString &dir, const char *glob, int depth, uint32 priority, Common::ChangeID *changeID)
Add a directory to the resource manager, if it exists.
Definition: resources.cpp:133
bool changeLanguage()
Change the game&#39;s current language.
Definition: kotor.cpp:99
Android mobile phones and tablets.
Definition: types.h:437
The Aurora font manager.
UString findFirst(const UString &str, bool caseInsensitive) const
Find the first file ending with the given string.
Definition: filelist.cpp:193
void indexMandatoryArchive(const Common::UString &file, uint32 priority, const std::vector< byte > &password, Common::ChangeID *changeID)
Definition: resources.cpp:36
Aurora::Language _language
Definition: kotor.h:66
Star Wars: Knights of the Old Republic (debug) console.
#define ConfigMan
Shortcut for accessing the config manager.
Definition: configman.h:176
#define UNUSED(x)
Definition: system.h:170
Common::ScopedPtr< Version > _version
Definition: kotor.h:64
bool getLanguage(Aurora::Language &language) const
Return the game&#39;s current language.
Definition: kotor.cpp:94
Windows codepage 950 (Traditional Chinese, similar to Big5).
Definition: encoding.h:56
The context handling the gameplay in Star Wars: Knights of the Old Republic.
Utility templates and functions.
Engine class handling Star Wars: Knights of the Old Republic.
Star Wars: Knights of the Old Republic model loader.
An image resource.
Definition: types.h:408
Microsoft Xbox.
Definition: types.h:433
void unregisterModelLoader()
Definition: model.cpp:41
The global events manager.
Types and functions related to language.
Star Wars: Knights of the Old Republic installation version detection.
bool empty() const
Is the string empty?
Definition: ustring.cpp:245
Texture.
Definition: types.h:183
Handling BioWare&#39;s TLK talk tables.
void warning(const char *s,...)
Definition: util.cpp:33
#define CursorMan
Shortcut for accessing the cursor manager.
Definition: cursorman.h:129
bool detectLanguages(Aurora::GameID game, const Common::UString &target, Aurora::Platform platform, std::vector< Aurora::Language > &languages) const
Detect which languages this game instance supports.
Definition: kotor.cpp:66
#define EventMan
Shortcut for accessing the events manager.
Definition: events.h:210
bool hasYavin4Module() const
Definition: kotor.cpp:556
void initResources(LoadProgress &progress)
Definition: kotor.cpp:212
The Aurora cursor manager.
Displaying the progress in loading a game.
Textured font, used by NWN and KotOR/KotOR2.
Definition: fontman.h:47
Unicode string handling.
void indexMandatoryDirectory(const Common::UString &dir, const char *glob, int depth, uint32 priority, Common::ChangeID *changeID)
Add a directory to the resource manager, erroring out if it does not exist.
Definition: resources.cpp:112
Common::UString _target
Definition: engine.h:85
void registerModelLoader(ModelLoader *loader)
Definition: model.cpp:37
Application or game defaults.
Definition: configman.h:46
#define LangMan
Shortcut for accessing the language manager.
Definition: language.h:275
Windows codepage 932 (Japanese, extended Shift-JIS).
Definition: encoding.h:53
uint32_t uint32
Definition: types.h:204
The global talk manager for Aurora strings.
A list of files.
Definition: filelist.h:35
void step(const Common::UString &description)
Take a step in advancing the progress.
Microsoft Windows.
Definition: types.h:430
void status(const char *s,...)
Definition: util.cpp:52
void checkConfigInt(const Common::UString &key, int min, int max)
Make sure that an int config value is in the right range.
Definition: util.cpp:116
Windows codepage 1250 (Eastern European, Latin alphabet).
Definition: encoding.h:49
bool addDirectory(const UString &directory, int recurseDepth=0)
Add a directory to the list.
Definition: filelist.cpp:102
Generic Aurora engines utility functions.
A list of files.
void run()
Run the game.
Definition: kotor.cpp:113
Windows codepage 1252 (Western European, Latin alphabet).
Definition: encoding.h:51
Windows codepage 949 (Korean, similar to EUC-KR).
Definition: encoding.h:55
uint32 getLanguageID() const
Return the language ID (ungendered) of the talk table.
Windows codepage 936 (Simplified Chinese, extended GB2312 with GBK codepoints).
Definition: encoding.h:54
Platform
Definition: types.h:429
iOS, Apple mobile phones and tablets.
Definition: types.h:438
#define GfxMan
Shortcut for accessing the graphics manager.
Definition: graphics.h:299
The global resource manager for Aurora resources.
Utility class for manipulating file paths.
#define FontMan
Shortcut for accessing the font manager.
Definition: fontman.h:105
static UString findSubDirectory(const UString &directory, const UString &subDirectory, bool caseInsensitive=false)
Find a directory&#39;s subdirectory.
Definition: filepath.cpp:318
Generic Aurora engines model functions.