1 /* ScummVM - Graphic Adventure Engine 2 * 3 * ScummVM is the legal property of its developers, whose names 4 * are too numerous to list here. Please refer to the COPYRIGHT 5 * file distributed with this source distribution. 6 * 7 * This program 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 2 10 * of the License, or (at your option) any later version. 11 * 12 * This program 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 this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 20 * 21 */ 22 23 #ifndef XEEN_RESOURCES_H 24 #define XEEN_RESOURCES_H 25 26 #include "common/scummsys.h" 27 #include "common/str-array.h" 28 #include "gui/debugger.h" 29 #include "xeen/files.h" 30 #include "xeen/party.h" 31 #include "xeen/spells.h" 32 33 namespace Xeen { 34 35 #define Res (*g_resources) 36 #define STRING_BUFFER_SIZE 32768 37 38 class XeenEngine; 39 40 class Resources { 41 /** 42 * Derived file class with sync method aliases so that the same 43 * code from create_xeen can be re-used for both reading and 44 * writing the resource data 45 */ 46 class ResFile : public File { 47 private: 48 char *_buffer; 49 char *_buffStart; 50 public: ResFile(const char * type,char * buffer,int num)51 ResFile(const char* type, char *buffer, int num) : File(type + Common::String::format("%i", num)), _buffer(buffer), _buffStart(buffer) {} 52 syncString(const char * & str)53 void syncString(const char *&str) { 54 str = _buffer; 55 strcpy(_buffer, readString().c_str()); 56 _buffer += strlen(_buffer) + 1; 57 assert((_buffer - _buffStart) < STRING_BUFFER_SIZE); 58 } syncStrings(const char ** str,int count)59 void syncStrings(const char **str, int count) { 60 uint tag = readUint32LE(); 61 assert(tag == MKTAG(count, 0, 0, 0)); 62 for (int idx = 0; idx < count; ++idx) 63 syncString(str[idx]); 64 } syncStrings2D(const char ** str,int count1,int count2)65 void syncStrings2D(const char **str, int count1, int count2) { 66 uint tag = readUint32LE(); 67 assert(tag == MKTAG(count1, count2, 0, 0)); 68 for (int idx = 0; idx < count1 * count2; ++idx) 69 syncString(str[idx]); 70 } syncNumber(int & val)71 void syncNumber(int &val) { 72 val = readSint32LE(); 73 } syncNumbers(int * vals,int count)74 void syncNumbers(int *vals, int count) { 75 uint tag = readUint32LE(); 76 assert(tag == MKTAG(count, 0, 0, 0)); 77 for (int idx = 0; idx < count; ++idx) 78 vals[idx] = readSint32LE(); 79 } syncNumbers2D(int * vals,int count1,int count2)80 void syncNumbers2D(int *vals, int count1, int count2) { 81 uint tag = readUint32LE(); 82 assert(tag == MKTAG(count1, count2, 0, 0)); 83 for (int idx = 0; idx < count1 * count2; ++idx) 84 vals[idx] = readSint32LE(); 85 } syncNumbers3D(int * vals,int count1,int count2,int count3)86 void syncNumbers3D(int *vals, int count1, int count2, int count3) { 87 uint tag = readUint32LE(); 88 assert(tag == MKTAG(count1, count2, count3, 0)); 89 for (int idx = 0; idx < count1 * count2 * count3; ++idx) 90 vals[idx] = readSint32LE(); 91 } syncNumbers4D(int * vals,int count1,int count2,int count3,int count4)92 void syncNumbers4D(int *vals, int count1, int count2, int count3, int count4) { 93 uint tag = readUint32LE(); 94 assert(tag == MKTAG(count1, count2, count3, count4)); 95 for (int idx = 0; idx < count1 * count2 * count3 * count4; ++idx) 96 vals[idx] = readSint32LE(); 97 } syncBytes2D(byte * vals,int count1,int count2)98 void syncBytes2D(byte *vals, int count1, int count2) { 99 uint tag = readUint32LE(); 100 assert(tag == MKTAG(count1, count2, 0, 0)); 101 read(vals, count1 * count2); 102 } 103 }; 104 private: 105 char _buffer[STRING_BUFFER_SIZE]; 106 private: 107 /** 108 * Loads all the constants data stored in the xeen.ccs archive shipped with ScummVM 109 */ 110 void loadData(); 111 public: 112 SpriteResource _globalSprites; 113 SpriteResource _logoSprites; 114 Common::StringArray _maeNames; // Magic and equipment names 115 Common::StringArray _cloudsMapNames; // Clouds of Xeen map names 116 const char **ITEM_NAMES[4]; 117 118 // Data loaded from xeen.ccs 119 const char *CLOUDS_CREDITS; 120 const char *DARK_SIDE_CREDITS; 121 const char *SWORDS_CREDITS1; 122 const char *SWORDS_CREDITS2; 123 const char *OPTIONS_MENU; 124 const char *GAME_NAMES[3]; 125 const char *THE_PARTY_NEEDS_REST; 126 const char *WHO_WILL; 127 const char *HOW_MUCH; 128 const char *WHATS_THE_PASSWORD; 129 const char *PASSWORD_INCORRECT; 130 const char *IN_NO_CONDITION; 131 const char *NOTHING_HERE; 132 const char *TERRAIN_TYPES[6]; 133 const char *OUTDOORS_WALL_TYPES[16]; 134 const char *SURFACE_NAMES[16]; 135 const char *WHO_ACTIONS[32]; 136 const char *WHO_WILL_ACTIONS[4]; 137 byte SYMBOLS[20][64]; 138 byte TEXT_COLORS[40][4]; 139 byte TEXT_COLORS_STARTUP[40][4]; 140 const char *DIRECTION_TEXT_UPPER[4]; 141 const char *DIRECTION_TEXT[4]; 142 const char *RACE_NAMES[5]; 143 int RACE_HP_BONUSES[5]; 144 int RACE_SP_BONUSES[5][2]; 145 const char *CLASS_NAMES[11]; 146 int CLASS_EXP_LEVELS[10]; 147 const char *ALIGNMENT_NAMES[3]; 148 const char *SEX_NAMES[2]; 149 const char *SKILL_NAMES[18]; 150 const char *CONDITION_NAMES_M[17]; 151 const char *CONDITION_NAMES_F[17]; 152 int CONDITION_COLORS[17]; 153 const char *GOOD; 154 const char *BLESSED; 155 const char *POWER_SHIELD; 156 const char *HOLY_BONUS; 157 const char *HEROISM; 158 const char *IN_PARTY; 159 const char *PARTY_DETAILS; 160 const char *PARTY_DIALOG_TEXT; 161 int FACE_CONDITION_FRAMES[17]; 162 int CHAR_FACES_X[6]; 163 int HP_BARS_X[6]; 164 const char *NO_ONE_TO_ADVENTURE_WITH; 165 byte DARKNESS_XLAT[3][256]; 166 const char *YOUR_ROSTER_IS_FULL; 167 const char *PLEASE_WAIT; 168 const char *OOPS; 169 int SCREEN_POSITIONING_X[4][48]; 170 int SCREEN_POSITIONING_Y[4][48]; 171 int MONSTER_GRID_BITMASK[12]; 172 int INDOOR_OBJECT_X[2][12]; 173 int MAP_OBJECT_Y[2][12]; 174 int INDOOR_MONSTERS_Y[4]; 175 int OUTDOOR_OBJECT_X[2][12]; 176 int OUTDOOR_MONSTER_INDEXES[26]; 177 int OUTDOOR_MONSTERS_Y[26]; 178 int DIRECTION_ANIM_POSITIONS[4][4]; 179 byte WALL_SHIFTS[4][48]; 180 int DRAW_NUMBERS[25]; 181 int DRAW_FRAMES[25][2]; 182 int COMBAT_FLOAT_X[8]; 183 int COMBAT_FLOAT_Y[8]; 184 int MONSTER_EFFECT_FLAGS[15][8]; 185 int SPELLS_ALLOWED[3][40]; 186 int BASE_HP_BY_CLASS[10]; 187 int AGE_RANGES[10]; 188 int AGE_RANGES_ADJUST[2][10]; 189 int STAT_VALUES[24]; 190 int STAT_BONUSES[24]; 191 int ELEMENTAL_CATEGORIES[6]; 192 int ATTRIBUTE_CATEGORIES[10]; 193 int ATTRIBUTE_BONUSES[72]; 194 int ELEMENTAL_RESISTENCES[37]; 195 int ELEMENTAL_DAMAGE[37]; 196 int WEAPON_DAMAGE_BASE[35]; 197 int WEAPON_DAMAGE_MULTIPLIER[35]; 198 int METAL_DAMAGE[22]; 199 int METAL_DAMAGE_PERCENT[22]; 200 int METAL_LAC[22]; 201 int ARMOR_STRENGTHS[14]; 202 int MAKE_ITEM_ARR1[6]; 203 int MAKE_ITEM_ARR2[6][7][2]; 204 int MAKE_ITEM_ARR3[10][7][2]; 205 int MAKE_ITEM_ARR4[2][7][2]; 206 int MAKE_ITEM_ARR5[8][2]; 207 int OUTDOOR_DRAWSTRUCT_INDEXES[44]; 208 int TOWN_MAXES[2][11]; 209 const char *TOWN_ACTION_MUSIC[2][7]; 210 const char *TOWN_ACTION_SHAPES[7]; 211 int TOWN_ACTION_FILES[2][7]; 212 const char *BANK_TEXT; 213 const char *BLACKSMITH_TEXT; 214 const char *GUILD_NOT_MEMBER_TEXT; 215 const char *GUILD_TEXT; 216 const char *TAVERN_TEXT; 217 const char *GOOD_STUFF; 218 const char *HAVE_A_DRINK; 219 const char *YOURE_DRUNK; 220 int TAVERN_EXIT_LIST[2][6][5][2]; 221 const char *FOOD_AND_DRINK; 222 const char *TEMPLE_TEXT; 223 const char *EXPERIENCE_FOR_LEVEL; 224 const char *TRAINING_LEARNED_ALL; 225 const char *ELIGIBLE_FOR_LEVEL; 226 const char *TRAINING_TEXT; 227 const char *GOLD_GEMS; 228 const char *GOLD_GEMS_2; 229 const char *DEPOSIT_WITHDRAWL[2]; 230 const char *NOT_ENOUGH_X_IN_THE_Y; 231 const char *NO_X_IN_THE_Y; 232 const char *STAT_NAMES[16]; 233 const char *CONSUMABLE_NAMES[4]; 234 const char *CONSUMABLE_GOLD_FORMS[1]; 235 const char *CONSUMABLE_GEM_FORMS[1]; 236 const char *WHERE_NAMES[2]; 237 const char *AMOUNT; 238 const char *FOOD_PACKS_FULL; 239 const char *BUY_SPELLS; 240 const char *GUILD_OPTIONS; 241 int MISC_SPELL_INDEX[74]; 242 int SPELL_COSTS[77]; 243 int CLOUDS_GUILD_SPELLS[5][20]; 244 int DARK_SPELL_OFFSETS[3][39]; 245 int DARK_SPELL_RANGES[12][2]; 246 int SWORDS_SPELL_RANGES[12][2]; 247 int SPELL_GEM_COST[77]; 248 const char *NOT_A_SPELL_CASTER; 249 const char *SPELLS_LEARNED_ALL; 250 const char *SPELLS_FOR; 251 const char *SPELL_LINES_0_TO_9; 252 const char *SPELLS_DIALOG_SPELLS; 253 const char *SPELL_PTS; 254 const char *GOLD; 255 const char *SPELL_INFO; 256 const char *SPELL_PURCHASE; 257 const char *MAP_TEXT; 258 const char *LIGHT_COUNT_TEXT; 259 const char *FIRE_RESISTENCE_TEXT; 260 const char *ELECRICITY_RESISTENCE_TEXT; 261 const char *COLD_RESISTENCE_TEXT; 262 const char *POISON_RESISTENCE_TEXT; 263 const char *CLAIRVOYANCE_TEXT; 264 const char *LEVITATE_TEXT; 265 const char *WALK_ON_WATER_TEXT; 266 const char *GAME_INFORMATION; 267 const char *WORLD_GAME_TEXT; 268 const char *DARKSIDE_GAME_TEXT; 269 const char *CLOUDS_GAME_TEXT; 270 const char *SWORDS_GAME_TEXT; 271 const char *WEEK_DAY_STRINGS[10]; 272 const char *CHARACTER_DETAILS; 273 const char *DAYS[3]; 274 const char *PARTY_GOLD; 275 const char *PLUS_14; 276 const char *CHARACTER_TEMPLATE; 277 const char *EXCHANGING_IN_COMBAT; 278 const char *CURRENT_MAXIMUM_RATING_TEXT; 279 const char *CURRENT_MAXIMUM_TEXT; 280 const char *RATING_TEXT[24]; 281 const char *BORN[2]; 282 const char *AGE_TEXT; 283 const char *LEVEL_TEXT; 284 const char *RESISTENCES_TEXT; 285 const char *NONE; 286 const char *EXPERIENCE_TEXT; 287 const char *ELIGIBLE; 288 const char *IN_PARTY_IN_BANK; 289 const char *FOOD_ON_HAND[3]; 290 const char *FOOD_TEXT; 291 const char *EXCHANGE_WITH_WHOM; 292 const char *QUICK_REF_LINE; 293 const char *QUICK_REFERENCE; 294 int BLACKSMITH_MAP_IDS[2][4]; 295 const char *ITEMS_DIALOG_TEXT1; 296 const char *ITEMS_DIALOG_TEXT2; 297 const char *ITEMS_DIALOG_LINE1; 298 const char *ITEMS_DIALOG_LINE2; 299 const char *BTN_BUY; 300 const char *BTN_SELL; 301 const char *BTN_IDENTIFY; 302 const char *BTN_FIX; 303 const char *BTN_USE; 304 const char *BTN_EQUIP; 305 const char *BTN_REMOVE; 306 const char *BTN_DISCARD; 307 const char *BTN_QUEST; 308 const char *BTN_ENCHANT; 309 const char *BTN_RECHARGE; 310 const char *BTN_GOLD; 311 const char *ITEM_BROKEN; 312 const char *ITEM_CURSED; 313 const char *ITEM_OF; 314 const char *BONUS_NAMES[7]; 315 const char *WEAPON_NAMES[41]; 316 const char *ARMOR_NAMES[14]; 317 const char *ACCESSORY_NAMES[11]; 318 const char *MISC_NAMES[22]; 319 const char *SPECIAL_NAMES[74]; 320 const char *ELEMENTAL_NAMES[6]; 321 const char *ATTRIBUTE_NAMES[10]; 322 const char *EFFECTIVENESS_NAMES[7]; 323 const char *QUEST_ITEM_NAMES[85]; 324 const char *QUEST_ITEM_NAMES_SWORDS[51]; 325 int WEAPON_BASE_COSTS[35]; 326 int ARMOR_BASE_COSTS[14]; 327 int ACCESSORY_BASE_COSTS[11]; 328 int MISC_MATERIAL_COSTS[22]; 329 int MISC_BASE_COSTS[76]; 330 int METAL_BASE_MULTIPLIERS[22]; 331 int ITEM_SKILL_DIVISORS[4]; 332 int RESTRICTION_OFFSETS[4]; 333 int ITEM_RESTRICTIONS[86]; 334 const char *NOT_PROFICIENT; 335 const char *NO_ITEMS_AVAILABLE; 336 const char *CATEGORY_NAMES[4]; 337 const char *X_FOR_THE_Y; 338 const char *X_FOR_Y; 339 const char *X_FOR_Y_GOLD; 340 const char *FMT_CHARGES; 341 const char *AVAILABLE_GOLD_COST; 342 const char *CHARGES; 343 const char *COST; 344 const char *ITEM_ACTIONS[7]; 345 const char *WHICH_ITEM; 346 const char *WHATS_YOUR_HURRY; 347 const char *USE_ITEM_IN_COMBAT; 348 const char *NO_SPECIAL_ABILITIES; 349 const char *CANT_CAST_WHILE_ENGAGED; 350 const char *EQUIPPED_ALL_YOU_CAN; 351 const char *REMOVE_X_TO_EQUIP_Y; 352 const char *RING; 353 const char *MEDAL; 354 const char *CANNOT_REMOVE_CURSED_ITEM; 355 const char *CANNOT_DISCARD_CURSED_ITEM; 356 const char *PERMANENTLY_DISCARD; 357 const char *BACKPACK_IS_FULL; 358 const char *CATEGORY_BACKPACK_IS_FULL[4]; 359 const char *BUY_X_FOR_Y_GOLD; 360 const char *SELL_X_FOR_Y_GOLD; 361 const char *GOLDS[2]; 362 const char *NO_NEED_OF_THIS; 363 const char *NOT_RECHARGABLE; 364 const char *SPELL_FAILED; 365 const char *NOT_ENCHANTABLE; 366 const char *ITEM_NOT_BROKEN; 367 const char *FIX_IDENTIFY[2]; 368 const char *FIX_IDENTIFY_GOLD; 369 const char *IDENTIFY_ITEM_MSG; 370 const char *ITEM_DETAILS; 371 const char *ALL; 372 const char *FIELD_NONE; 373 const char *DAMAGE_X_TO_Y; 374 const char *ELEMENTAL_XY_DAMAGE; 375 const char *ATTR_XY_BONUS; 376 const char *EFFECTIVE_AGAINST; 377 const char *QUESTS_DIALOG_TEXT; 378 const char *CLOUDS_OF_XEEN_LINE; 379 const char *DARKSIDE_OF_XEEN_LINE; 380 const char *SWORDS_OF_XEEN_LINE; 381 const char *NO_QUEST_ITEMS; 382 const char *NO_CURRENT_QUESTS; 383 const char *NO_AUTO_NOTES; 384 const char *QUEST_ITEMS_DATA; 385 const char *CURRENT_QUESTS_DATA; 386 const char *AUTO_NOTES_DATA; 387 const char *REST_COMPLETE; 388 const char *PARTY_IS_STARVING; 389 const char *HIT_SPELL_POINTS_RESTORED; 390 const char *TOO_DANGEROUS_TO_REST; 391 const char *SOME_CHARS_MAY_DIE; 392 const char *DISMISS_WHOM; 393 const char *CANT_DISMISS_LAST_CHAR; 394 const char *DELETE_CHAR_WITH_ELDER_WEAPON; 395 const char *REMOVE_DELETE[2]; 396 const char *REMOVE_OR_DELETE_WHICH; 397 const char *YOUR_PARTY_IS_FULL; 398 const char *HAS_SLAYER_SWORD; 399 const char *SURE_TO_DELETE_CHAR; 400 const char *CREATE_CHAR_DETAILS; 401 const char *NEW_CHAR_STATS; 402 const char *NAME_FOR_NEW_CHARACTER; 403 const char *SELECT_CLASS_BEFORE_SAVING; 404 const char *EXCHANGE_ATTR_WITH; 405 int NEW_CHAR_SKILLS[10]; 406 int NEW_CHAR_SKILLS_OFFSET[10]; 407 int NEW_CHAR_SKILLS_LEN[10]; 408 int NEW_CHAR_RACE_SKILLS[10]; 409 int RACE_MAGIC_RESISTENCES[5]; 410 int RACE_FIRE_RESISTENCES[5]; 411 int RACE_ELECTRIC_RESISTENCES[5]; 412 int RACE_COLD_RESISTENCES[5]; 413 int RACE_ENERGY_RESISTENCES[5]; 414 int RACE_POISON_RESISTENCES[5]; 415 int NEW_CHARACTER_SPELLS[10][4]; 416 const char *COMBAT_DETAILS; 417 const char *NOT_ENOUGH_TO_CAST; 418 const char *SPELL_CAST_COMPONENTS[2]; 419 const char *CAST_SPELL_DETAILS; 420 const char *PARTY_FOUND; 421 const char *BACKPACKS_FULL_PRESS_KEY; 422 const char *HIT_A_KEY; 423 const char *GIVE_TREASURE_FORMATTING; 424 const char *FOUND[2]; 425 const char *X_FOUND_Y; 426 const char *ON_WHO; 427 const char *WHICH_ELEMENT1; 428 const char *WHICH_ELEMENT2; 429 const char *DETECT_MONSTERS; 430 const char *LLOYDS_BEACON; 431 const char *HOW_MANY_SQUARES; 432 const char *TOWN_PORTAL; 433 const char *TOWN_PORTAL_SWORDS; 434 int TOWN_MAP_NUMBERS[3][5]; 435 const char *MONSTER_DETAILS; 436 const char *MONSTER_SPECIAL_ATTACKS[23]; 437 const char *IDENTIFY_MONSTERS; 438 const char *EVENT_SAMPLES[6]; 439 const char *MOONS_NOT_ALIGNED; 440 const char *AWARDS_FOR; 441 const char *AWARDS_TEXT; 442 const char *NO_AWARDS; 443 const char *WARZONE_BATTLE_MASTER; 444 const char *WARZONE_MAXED; 445 const char *WARZONE_LEVEL; 446 const char *WARZONE_HOW_MANY; 447 const char *PICKS_THE_LOCK; 448 const char *PICK_FORM[2]; 449 const char *UNABLE_TO_PICK_LOCK; 450 const char *UNABLE_TO_PICK_FORM[2]; 451 const char *CONTROL_PANEL_TEXT; 452 const char *CONTROL_PANEL_BUTTONS; 453 const char *ON; 454 const char *OFF; 455 const char *CONFIRM_QUIT; 456 const char *MR_WIZARD; 457 const char *NO_LOADING_IN_COMBAT; 458 const char *NO_SAVING_IN_COMBAT; 459 const char *QUICK_FIGHT_TEXT; 460 const char *QUICK_FIGHT_OPTIONS[4]; 461 const char *WORLD_END_TEXT[9]; 462 const char *WORLD_CONGRATULATIONS; 463 const char *WORLD_CONGRATULATIONS2; 464 const char *CLOUDS_CONGRATULATIONS1; 465 const char *CLOUDS_CONGRATULATIONS2; 466 const char *GOOBER[3]; 467 const char *MUSIC_FILES1[5]; 468 const char *MUSIC_FILES2[6][7]; 469 const char *DIFFICULTY_TEXT; 470 const char *SAVE_OFF_LIMITS; 471 const char *CLOUDS_INTRO1; 472 const char *DARKSIDE_ENDING1; 473 const char *DARKSIDE_ENDING2; 474 const char *PHAROAH_ENDING_TEXT1; 475 const char *PHAROAH_ENDING_TEXT2; 476 const char *CLOUDS_MAE_NAMES[131]; 477 const char *CLOUDS_MIRROR_LOCATIONS[58]; 478 const char *CLOUDS_MAP_NAMES[86]; 479 const char *CLOUDS_MONSTERS[91]; 480 const char *CLOUDS_SPELLS[77]; 481 482 struct { 483 484 struct { 485 int KEY_ITEM; 486 int KEY_QUICK; 487 int KEY_EXCHANGE; 488 int KEY_ESCAPE; 489 } DialogsCharInfo; 490 491 struct { 492 int KEY_FXON; 493 int KEY_MUSICON; 494 int KEY_LOAD; 495 int KEY_SAVE; 496 int KEY_QUIT; 497 int KEY_MRWIZARD; 498 } DialogsControlPanel; 499 500 struct { 501 int KEY_ROLL; 502 int KEY_CREATE; 503 int KEY_MGT; 504 int KEY_INT; 505 int KEY_PER; 506 int KEY_END; 507 int KEY_SPD; 508 int KEY_ACY; 509 int KEY_LCK; 510 } DialogsCreateChar; 511 512 struct { 513 int KEY_ADVENTURER; 514 int KEY_WARRIOR; 515 } DialogsDifficulty; 516 517 struct { 518 int KEY_WEAPONS; 519 int KEY_ARMOR; 520 int KEY_ACCESSORY; 521 int KEY_MISC; 522 int KEY_ENCHANT; 523 int KEY_USE; 524 int KEY_BUY; 525 int KEY_SELL; 526 int KEY_IDENTIFY; 527 int KEY_FIX; 528 int KEY_EQUIP; 529 int KEY_REM; 530 int KEY_DISC; 531 int KEY_QUEST; 532 int KEY_RECHRG; 533 int KEY_GOLD; 534 } DialogsItems; 535 536 struct { 537 int KEY_DELETE; 538 int KEY_REMOVE; 539 int KEY_CREATE; 540 int KEY_EXIT; 541 } DialogsParty; 542 543 struct { 544 int KEY_QUEST_ITEMS; 545 int KEY_CURRENT_QUESTS; 546 int KEY_AUTO_NOTES; 547 } DialogsQuests; 548 549 struct { 550 int KEY_NEXT; 551 } DialogsQuickFight; 552 553 struct { 554 int KEY_CAST; 555 int KEY_NEW; 556 int KEY_FIRE; 557 int KEY_ELEC; 558 int KEY_COLD; 559 int KEY_ACID; 560 int KEY_SET; 561 int KEY_RETURN; 562 } DialogsSpells; 563 564 struct { 565 int KEY_DEP; 566 int KEY_WITH; 567 int KEY_GOLD; 568 int KEY_GEMS; 569 int KEY_BROWSE; 570 int KEY_BUY_SPELLS; 571 int KEY_SPELL_INFO; 572 int KEY_SIGN_IN; 573 int KEY_DRINK; 574 int KEY_FOOD; 575 int KEY_TIP; 576 int KEY_RUMORS; 577 int KEY_HEAL; 578 int KEY_DONATION; 579 int KEY_UNCURSE; 580 int KEY_TRAIN; 581 } Locations; 582 583 struct { 584 int KEY_START_NEW_GAME; 585 int KEY_LOAD_GAME; 586 int KEY_SHOW_CREDITS; 587 int KEY_VIEW_ENDGAME; 588 } CloudsOfXeenMenu; 589 } KeyConstants; 590 591 592 public: 593 /** 594 * Constructor 595 */ 596 Resources(); 597 598 /** 599 * Initializes an instnace of the resources 600 */ 601 Resources *init(XeenEngine *vm); 602 }; 603 604 extern Resources *g_resources; 605 606 } // End of namespace Xeen 607 608 #endif /* XEEN_RESOURCES_H */ 609