/* ScummVM - Graphic Adventure Engine * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT * file distributed with this source distribution. * * This program 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; either version 2 * of the License, or (at your option) any later version. * * This program 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. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ // Disable symbol overrides so that we can use system headers. #define FORBIDDEN_SYMBOL_ALLOW_ALL // HACK to allow building with the SDL backend on MinGW // see bug #3412 "TOOLS: MinGW tools building broken" #ifdef main #undef main #endif // main #include "common/language.h" #include "constants.h" #include "en_constants.h" #include "ru_constants.h" void LangConstants::writeConstants(Common::String num, CCArchive &cc) { Common::MemFile file; file.syncString(CLOUDS_CREDITS()); file.syncString(DARK_SIDE_CREDITS()); file.syncString(SWORDS_CREDITS1()); file.syncString(SWORDS_CREDITS2()); file.syncString(OPTIONS_MENU()); file.syncStrings(GAME_NAMES(), 3); delete[] _gameNames; _gameNames = NULL; file.syncString(THE_PARTY_NEEDS_REST()); file.syncString(WHO_WILL()); file.syncString(HOW_MUCH()); file.syncString(WHATS_THE_PASSWORD()); file.syncString(PASSWORD_INCORRECT()); file.syncString(IN_NO_CONDITION()); file.syncString(NOTHING_HERE()); file.syncStrings(TERRAIN_TYPES, 6); file.syncStrings(OUTDOORS_WALL_TYPES, 16); file.syncStrings(SURFACE_NAMES, 16); file.syncStrings(WHO_ACTIONS(), 32); delete[] _whoActions; _whoActions = NULL; file.syncStrings(WHO_WILL_ACTIONS(), 4); delete[] _whoWillActions; _whoWillActions = NULL; file.syncBytes2D((const byte *)SYMBOLS, 20, 64); file.syncBytes2D((const byte *)TEXT_COLORS, 40, 4); file.syncBytes2D((const byte *)TEXT_COLORS_STARTUP, 40, 4); file.syncStrings(DIRECTION_TEXT_UPPER(), 4); delete[] _directionTextUpper; _directionTextUpper = NULL; file.syncStrings(DIRECTION_TEXT(), 4); delete[] _directionText; _directionText = NULL; file.syncStrings(RACE_NAMES(), 5); delete[] _raceNames; _raceNames = NULL; file.syncNumbers(RACE_HP_BONUSES, 5); file.syncNumbers2D((const int *)RACE_SP_BONUSES, 5, 2); file.syncStrings(CLASS_NAMES(), 11); delete[] _classNames; _classNames = NULL; file.syncNumbers(CLASS_EXP_LEVELS, 10); file.syncStrings(ALIGNMENT_NAMES(), 3); delete[] _alignmentNames; _alignmentNames = NULL; file.syncStrings(SEX_NAMES(), 2); delete[] _sexNames; _sexNames = NULL; file.syncStrings(SKILL_NAMES(), 18); delete[] _skillNames; _skillNames = NULL; file.syncStrings(CONDITION_NAMES(), 17); delete[] _conditionNames; _conditionNames = NULL; file.syncNumbers(CONDITION_COLORS, 17); file.syncString(GOOD()); file.syncString(BLESSED()); file.syncString(POWER_SHIELD()); file.syncString(HOLY_BONUS()); file.syncString(HEROISM()); file.syncString(IN_PARTY()); file.syncString(PARTY_DETAILS()); file.syncString(PARTY_DIALOG_TEXT()); file.syncNumbers(FACE_CONDITION_FRAMES, 17); file.syncNumbers(CHAR_FACES_X, 6); file.syncNumbers(HP_BARS_X, 6); file.syncString(NO_ONE_TO_ADVENTURE_WITH()); file.syncBytes2D((const byte *)DARKNESS_XLAT, 3, 256); file.syncString(YOUR_ROSTER_IS_FULL()); file.syncString(PLEASE_WAIT()); file.syncString(OOPS()); file.syncNumbers2D((const int *)SCREEN_POSITIONING_X, 4, 48); file.syncNumbers2D((const int *)SCREEN_POSITIONING_Y, 4, 48); file.syncNumbers(MONSTER_GRID_BITMASK, 12); file.syncNumbers2D((const int *)INDOOR_OBJECT_X, 2, 12); file.syncNumbers2D((const int *)MAP_OBJECT_Y, 2, 12); file.syncNumbers(INDOOR_MONSTERS_Y, 4); file.syncNumbers2D((const int *)OUTDOOR_OBJECT_X, 2, 12); file.syncNumbers(OUTDOOR_MONSTER_INDEXES, 26); file.syncNumbers(OUTDOOR_MONSTERS_Y, 26); file.syncNumbers2D((const int *)DIRECTION_ANIM_POSITIONS, 4, 4); file.syncBytes2D((const byte *)WALL_SHIFTS, 4, 48); file.syncNumbers(DRAW_NUMBERS, 25); file.syncNumbers2D((const int *)DRAW_FRAMES, 25, 2); file.syncNumbers(COMBAT_FLOAT_X, 8); file.syncNumbers(COMBAT_FLOAT_Y, 8); file.syncNumbers2D((const int *)MONSTER_EFFECT_FLAGS, 15, 8); file.syncNumbers2D((const int *)SPELLS_ALLOWED, 3, 40); file.syncNumbers(BASE_HP_BY_CLASS, 10); file.syncNumbers(AGE_RANGES, 10); file.syncNumbers2D((const int *)AGE_RANGES_ADJUST, 2, 10); file.syncNumbers(STAT_VALUES, 24); file.syncNumbers(STAT_BONUSES, 24); file.syncNumbers(ELEMENTAL_CATEGORIES, 6); file.syncNumbers(ATTRIBUTE_CATEGORIES, 10); file.syncNumbers(ATTRIBUTE_BONUSES, 72); file.syncNumbers(ELEMENTAL_RESISTENCES, 37); file.syncNumbers(ELEMENTAL_DAMAGE, 37); file.syncNumbers(WEAPON_DAMAGE_BASE, 35); file.syncNumbers(WEAPON_DAMAGE_MULTIPLIER, 35); file.syncNumbers(METAL_DAMAGE, 22); file.syncNumbers(METAL_DAMAGE_PERCENT, 22); file.syncNumbers(METAL_LAC, 22); file.syncNumbers(ARMOR_STRENGTHS, 14); file.syncNumbers(MAKE_ITEM_ARR1, 6); file.syncNumbers3D((const int *)MAKE_ITEM_ARR2, 6, 7, 2); file.syncNumbers3D((const int *)MAKE_ITEM_ARR3, 10, 7, 2); file.syncNumbers3D((const int *)MAKE_ITEM_ARR4, 2, 7, 2); file.syncNumbers2D((const int *)MAKE_ITEM_ARR5, 8, 2); file.syncNumbers(OUTDOOR_DRAWSTRUCT_INDEXES, 44); file.syncNumbers2D((const int *)TOWN_MAXES, 2, 11); file.syncStrings2D((const char *const *)TOWN_ACTION_MUSIC, 2, 7); file.syncStrings(TOWN_ACTION_SHAPES, 7); file.syncNumbers2D((const int *)TOWN_ACTION_FILES, 2, 7); file.syncString(BANK_TEXT()); file.syncString(BLACKSMITH_TEXT()); file.syncString(GUILD_NOT_MEMBER_TEXT()); file.syncString(GUILD_TEXT()); file.syncString(TAVERN_TEXT()); file.syncString(GOOD_STUFF()); file.syncString(HAVE_A_DRINK()); file.syncString(YOURE_DRUNK()); file.syncNumbers4D((const int *)TAVERN_EXIT_LIST, 2, 6, 5, 2); file.syncString(FOOD_AND_DRINK()); file.syncString(TEMPLE_TEXT()); file.syncString(EXPERIENCE_FOR_LEVEL()); file.syncString(TRAINING_LEARNED_ALL()); file.syncString(ELIGIBLE_FOR_LEVEL()); file.syncString(TRAINING_TEXT()); file.syncString(GOLD_GEMS()); file.syncString(GOLD_GEMS_2()); file.syncStrings(DEPOSIT_WITHDRAWL(), 2); delete[] _depositWithdrawl; _depositWithdrawl = NULL; file.syncString(NOT_ENOUGH_X_IN_THE_Y()); file.syncString(NO_X_IN_THE_Y()); file.syncStrings(STAT_NAMES(), 16); delete[] _statNames; _statNames = NULL; file.syncStrings(CONSUMABLE_NAMES(), 4); delete[] _consumableNames; _consumableNames = NULL; file.syncStrings(WHERE_NAMES(), 2); delete[] _whereNames; _whereNames = NULL; file.syncString(AMOUNT()); file.syncString(FOOD_PACKS_FULL()); file.syncString(BUY_SPELLS()); file.syncString(GUILD_OPTIONS()); file.syncNumbers((const int *)MISC_SPELL_INDEX, 74); file.syncNumbers((const int *)SPELL_COSTS, 77); file.syncNumbers2D((const int *)CLOUDS_GUILD_SPELLS, 5, 20); file.syncNumbers2D((const int *)DARK_SPELL_OFFSETS, 3, 39); file.syncNumbers2D((const int *)DARK_SPELL_RANGES, 12, 2); file.syncNumbers2D((const int *)SWORDS_SPELL_RANGES, 12, 2); file.syncNumbers((const int *)SPELL_GEM_COST, 77); file.syncString(NOT_A_SPELL_CASTER()); file.syncString(SPELLS_LEARNED_ALL()); file.syncString(SPELLS_FOR()); file.syncString(SPELL_LINES_0_TO_9()); file.syncString(SPELLS_DIALOG_SPELLS()); file.syncString(SPELL_PTS()); file.syncString(GOLD()); file.syncString(SPELL_INFO()); file.syncString(SPELL_PURCHASE()); file.syncString(MAP_TEXT()); file.syncString(LIGHT_COUNT_TEXT()); file.syncString(FIRE_RESISTENCE_TEXT()); file.syncString(ELECRICITY_RESISTENCE_TEXT()); file.syncString(COLD_RESISTENCE_TEXT()); file.syncString(POISON_RESISTENCE_TEXT()); file.syncString(CLAIRVOYANCE_TEXT()); file.syncString(LEVITATE_TEXT()); file.syncString(WALK_ON_WATER_TEXT()); file.syncString(GAME_INFORMATION()); file.syncString(WORLD_GAME_TEXT()); file.syncString(DARKSIDE_GAME_TEXT()); file.syncString(CLOUDS_GAME_TEXT()); file.syncString(SWORDS_GAME_TEXT()); file.syncStrings(WEEK_DAY_STRINGS(), 10); delete[] _weekDayStrings; _weekDayStrings = NULL; file.syncString(CHARACTER_DETAILS()); file.syncStrings(DAYS(), 3); file.syncString(PARTY_GOLD()); file.syncString(PLUS_14()); file.syncString(CHARACTER_TEMPLATE()); file.syncString(EXCHANGING_IN_COMBAT()); file.syncString(CURRENT_MAXIMUM_RATING_TEXT()); file.syncString(CURRENT_MAXIMUM_TEXT()); file.syncStrings(RATING_TEXT(), 24); delete[] _ratingText; _ratingText = NULL; file.syncString(AGE_TEXT()); file.syncString(LEVEL_TEXT()); file.syncString(RESISTENCES_TEXT()); file.syncString(NONE()); file.syncString(EXPERIENCE_TEXT()); file.syncString(ELIGIBLE()); file.syncString(IN_PARTY_IN_BANK()); file.syncString(FOOD_TEXT()); file.syncString(EXCHANGE_WITH_WHOM()); file.syncString(QUICK_REF_LINE()); file.syncString(QUICK_REFERENCE()); file.syncNumbers2D((const int *)BLACKSMITH_MAP_IDS, 2, 4); file.syncString(ITEMS_DIALOG_TEXT1()); file.syncString(ITEMS_DIALOG_TEXT2()); file.syncString(ITEMS_DIALOG_LINE1()); file.syncString(ITEMS_DIALOG_LINE2()); file.syncString(BTN_BUY()); file.syncString(BTN_SELL()); file.syncString(BTN_IDENTIFY()); file.syncString(BTN_FIX()); file.syncString(BTN_USE()); file.syncString(BTN_EQUIP()); file.syncString(BTN_REMOVE()); file.syncString(BTN_DISCARD()); file.syncString(BTN_QUEST()); file.syncString(BTN_ENCHANT()); file.syncString(BTN_RECHARGE()); file.syncString(BTN_GOLD()); file.syncString(ITEM_BROKEN()); file.syncString(ITEM_CURSED()); file.syncString(ITEM_OF()); file.syncStrings(BONUS_NAMES(), 7); delete[] _bonusNames; _bonusNames = NULL; file.syncStrings(WEAPON_NAMES(), 41); delete[] _weaponNames; _weaponNames = NULL; file.syncStrings(ARMOR_NAMES(), 14); delete[] _armorNames; _armorNames = NULL; file.syncStrings(ACCESSORY_NAMES(), 11); delete[] _accessoryNames; _accessoryNames = NULL; file.syncStrings(MISC_NAMES(), 22); delete[] _miscNames; _miscNames = NULL; file.syncStrings(SPECIAL_NAMES(), 74); delete[] _specialNames; _specialNames = NULL; file.syncStrings(ELEMENTAL_NAMES(), 6); delete[] _elementalNames; _elementalNames = NULL; file.syncStrings(ATTRIBUTE_NAMES(), 10); delete[] _attributeNames; _attributeNames = NULL; file.syncStrings(EFFECTIVENESS_NAMES(), 7); delete[] _effectivenessNames; _effectivenessNames = NULL; file.syncStrings(QUEST_ITEM_NAMES(), 85); delete[] _questItemNames; _questItemNames = NULL; file.syncStrings(QUEST_ITEM_NAMES_SWORDS(), 51); delete[] _questItemNamesSwords; _questItemNamesSwords = NULL; file.syncNumbers((const int *)WEAPON_BASE_COSTS, 35); file.syncNumbers((const int *)ARMOR_BASE_COSTS, 14); file.syncNumbers((const int *)ACCESSORY_BASE_COSTS, 11); file.syncNumbers((const int *)MISC_MATERIAL_COSTS, 22); file.syncNumbers((const int *)MISC_BASE_COSTS, 76); file.syncNumbers((const int *)METAL_BASE_MULTIPLIERS, 22); file.syncNumbers((const int *)ITEM_SKILL_DIVISORS, 4); file.syncNumbers((const int *)RESTRICTION_OFFSETS, 4); file.syncNumbers((const int *)ITEM_RESTRICTIONS, 86); file.syncString(NOT_PROFICIENT()); file.syncString(NO_ITEMS_AVAILABLE()); file.syncStrings(CATEGORY_NAMES(), 4); delete[] _categoryNames; _categoryNames = NULL; file.syncString(X_FOR_THE_Y()); file.syncString(X_FOR_Y()); file.syncString(X_FOR_Y_GOLD()); file.syncString(FMT_CHARGES()); file.syncString(AVAILABLE_GOLD_COST()); file.syncString(CHARGES()); file.syncString(COST()); file.syncStrings(ITEM_ACTIONS(), 7); delete[] _itemActions; _itemActions = NULL; file.syncString(WHICH_ITEM()); file.syncString(WHATS_YOUR_HURRY()); file.syncString(USE_ITEM_IN_COMBAT()); file.syncString(NO_SPECIAL_ABILITIES()); file.syncString(CANT_CAST_WHILE_ENGAGED()); file.syncString(EQUIPPED_ALL_YOU_CAN()); file.syncString(REMOVE_X_TO_EQUIP_Y()); file.syncString(RING()); file.syncString(MEDAL()); file.syncString(CANNOT_REMOVE_CURSED_ITEM()); file.syncString(CANNOT_DISCARD_CURSED_ITEM()); file.syncString(PERMANENTLY_DISCARD()); file.syncString(BACKPACK_IS_FULL()); file.syncStrings(CATEGORY_BACKPACK_IS_FULL(), 4); file.syncString(BUY_X_FOR_Y_GOLD()); file.syncString(SELL_X_FOR_Y_GOLD()); file.syncStrings(SELL_X_FOR_Y_GOLD_ENDINGS(), 2); delete[] _sellXForYGoldEndings; _sellXForYGoldEndings = NULL; file.syncString(NO_NEED_OF_THIS()); file.syncString(NOT_RECHARGABLE()); file.syncString(SPELL_FAILED()); file.syncString(NOT_ENCHANTABLE()); file.syncString(ITEM_NOT_BROKEN()); file.syncStrings(FIX_IDENTIFY(), 2); delete[] _fixIdentify; _fixIdentify = NULL; file.syncString(FIX_IDENTIFY_GOLD()); file.syncString(IDENTIFY_ITEM_MSG()); file.syncString(ITEM_DETAILS()); file.syncString(ALL()); file.syncString(FIELD_NONE()); file.syncString(DAMAGE_X_TO_Y()); file.syncString(ELEMENTAL_XY_DAMAGE()); file.syncString(ATTR_XY_BONUS()); file.syncString(EFFECTIVE_AGAINST()); file.syncString(QUESTS_DIALOG_TEXT()); file.syncString(CLOUDS_OF_XEEN_LINE()); file.syncString(DARKSIDE_OF_XEEN_LINE()); file.syncString(SWORDS_OF_XEEN_LINE()); file.syncString(NO_QUEST_ITEMS()); file.syncString(NO_CURRENT_QUESTS()); file.syncString(NO_AUTO_NOTES()); file.syncString(QUEST_ITEMS_DATA()); file.syncString(CURRENT_QUESTS_DATA()); file.syncString(AUTO_NOTES_DATA()); file.syncString(REST_COMPLETE()); file.syncString(PARTY_IS_STARVING()); file.syncString(HIT_SPELL_POINTS_RESTORED()); file.syncString(TOO_DANGEROUS_TO_REST()); file.syncString(SOME_CHARS_MAY_DIE()); file.syncString(DISMISS_WHOM()); file.syncString(CANT_DISMISS_LAST_CHAR()); file.syncString(DELETE_CHAR_WITH_ELDER_WEAPON()); file.syncStrings(REMOVE_DELETE(), 2); delete[] _removeDelete; _removeDelete = NULL; file.syncString(REMOVE_OR_DELETE_WHICH()); file.syncString(YOUR_PARTY_IS_FULL()); file.syncString(HAS_SLAYER_SWORD()); file.syncString(SURE_TO_DELETE_CHAR()); file.syncString(CREATE_CHAR_DETAILS()); file.syncString(NEW_CHAR_STATS()); file.syncString(NAME_FOR_NEW_CHARACTER()); file.syncString(SELECT_CLASS_BEFORE_SAVING()); file.syncString(EXCHANGE_ATTR_WITH()); file.syncNumbers((const int *)NEW_CHAR_SKILLS, 10); file.syncNumbers((const int *)NEW_CHAR_SKILLS_OFFSET, 10); file.syncNumbers((const int *)NEW_CHAR_SKILLS_LEN, 10); file.syncNumbers((const int *)NEW_CHAR_RACE_SKILLS, 10); file.syncNumbers((const int *)RACE_MAGIC_RESISTENCES, 5); file.syncNumbers((const int *)RACE_FIRE_RESISTENCES, 5); file.syncNumbers((const int *)RACE_ELECTRIC_RESISTENCES, 5); file.syncNumbers((const int *)RACE_COLD_RESISTENCES, 5); file.syncNumbers((const int *)RACE_ENERGY_RESISTENCES, 5); file.syncNumbers((const int *)RACE_POISON_RESISTENCES, 5); file.syncNumbers2D((const int *)NEW_CHARACTER_SPELLS, 10, 4); file.syncString(COMBAT_DETAILS()); file.syncString(NOT_ENOUGH_TO_CAST()); file.syncStrings(SPELL_CAST_COMPONENTS(), 2); delete[] _spellCastComponents; _spellCastComponents = NULL; file.syncString(CAST_SPELL_DETAILS()); file.syncString(PARTY_FOUND()); file.syncString(BACKPACKS_FULL_PRESS_KEY()); file.syncString(HIT_A_KEY()); file.syncString(GIVE_TREASURE_FORMATTING()); file.syncString(X_FOUND_Y()); file.syncString(ON_WHO()); file.syncString(WHICH_ELEMENT1()); file.syncString(WHICH_ELEMENT2()); file.syncString(DETECT_MONSTERS()); file.syncString(LLOYDS_BEACON()); file.syncString(HOW_MANY_SQUARES()); file.syncString(TOWN_PORTAL()); file.syncString(TOWN_PORTAL_SWORDS()); file.syncNumbers2D((const int *)TOWN_MAP_NUMBERS, 3, 5); file.syncString(MONSTER_DETAILS()); file.syncStrings(MONSTER_SPECIAL_ATTACKS(), 23); delete[] _monsterSpecialAttacks; _monsterSpecialAttacks = NULL; file.syncString(IDENTIFY_MONSTERS()); file.syncStrings(EVENT_SAMPLES, 6); file.syncString(MOONS_NOT_ALIGNED()); file.syncString(AWARDS_FOR()); file.syncString(AWARDS_TEXT()); file.syncString(NO_AWARDS()); file.syncString(WARZONE_BATTLE_MASTER()); file.syncString(WARZONE_MAXED()); file.syncString(WARZONE_LEVEL()); file.syncString(WARZONE_HOW_MANY()); file.syncString(PICKS_THE_LOCK()); file.syncString(UNABLE_TO_PICK_LOCK()); file.syncString(CONTROL_PANEL_TEXT()); file.syncString(CONTROL_PANEL_BUTTONS()); file.syncString(ON()); file.syncString(OFF()); file.syncString(CONFIRM_QUIT()); file.syncString(MR_WIZARD()); file.syncString(NO_LOADING_IN_COMBAT()); file.syncString(NO_SAVING_IN_COMBAT()); file.syncString(QUICK_FIGHT_TEXT()); file.syncStrings(QUICK_FIGHT_OPTIONS(), 4); delete[] _quickFightOptions; _quickFightOptions = NULL; file.syncStrings(WORLD_END_TEXT(), 9); delete[] _worldEndText; _worldEndText = NULL; file.syncString(WORLD_CONGRATULATIONS()); file.syncString(WORLD_CONGRATULATIONS2()); file.syncString(CLOUDS_CONGRATULATIONS1()); file.syncString(CLOUDS_CONGRATULATIONS2()); file.syncStrings(GOOBER(), 3); delete[] _goober; _goober = NULL; file.syncStrings(MUSIC_FILES1, 5); file.syncStrings2D((const char *const *)MUSIC_FILES2, 6, 7); file.syncString(DIFFICULTY_TEXT()); file.syncString(SAVE_OFF_LIMITS()); file.syncString(CLOUDS_INTRO1()); file.syncString(DARKSIDE_ENDING1()); file.syncString(DARKSIDE_ENDING2()); file.syncString(PHAROAH_ENDING_TEXT1()); file.syncString(PHAROAH_ENDING_TEXT2()); cc.add("CONSTANTS" + num, file); } void writeConstants(CCArchive &cc) { EN eng; eng.writeConstants(Common::String::format("_%i", Common::Language::EN_ANY), cc); RU ru; ru.writeConstants(Common::String::format("_%i", Common::Language::RU_RUS), cc); }