Files
Asdow aba3688b4b Add framework for adding externalized emails
Emails from new GameDir file TableData/Email/Emails.xml can be added via lua scripting using calls to AddEmailFromXML & AddPreReadEmailFromXML. The order of emails in Emails.xml acts as the index to be referenced and provided when calling lua  functions.

An error message  will be displayed if an email is added with an out-of-scope index but game will be able to continue.

Localization is supported and was tested on Chinese localization.
2026-01-03 17:27:43 +02:00

581 lines
25 KiB
C++

#ifndef __XML_H
#define __XML_H
#include "expat.h"
#include "ArmsDealerInvInit.h"
#include "EnemyItemDrops.h"
#include "Loading Screen.h"
#include "faces.h"
#include "Interface.h"
#include "XML_SenderNameList.h"
#include "mainmenuscreen.h"
#include "ub_config.h"
#include "Strategic Town Loyalty.h"
#include "qarray.h"
#include "XML_Language.h"
#include "BriefingRoom_Data.h"
#include "Inventory Choosing.h" // added by Flugente
//forward declarations of common classes to eliminate includes
class OBJECTTYPE;
class SOLDIERTYPE;
enum
{
ELEMENT_NONE = 0,
ELEMENT_LIST,
ELEMENT,
ELEMENT_PROPERTY,
ELEMENT_SUBLIST,
ELEMENT_SUBLIST_PROPERTY,
// For new merchant inventory
MERCHANT_CONTROL,
MERCHANT_CASH,
MERCHANT_CASH_DAILY,
MERCHANT_COOLNESS,
MERCHANT_FLAGS,
MERCHANT_REORDER,
ELEMENT_DRUG_EFFECT,
ELEMENT_DRUG_EFFECT_PROPERTY,
ELEMENT_DISEASE_EFFECT,
ELEMENT_DISEASE_EFFECT_PROPERTY,
ELEMENT_DISABILITY_EFFECT,
ELEMENT_DISABILITY_EFFECT_PROPERTY,
ELEMENT_PERSONALITY_EFFECT,
ELEMENT_PERSONALITY_EFFECT_PROPERTY,
ELEMENT_VECTOR_OF_NUMBERS,
ELEMENT_VECTOR_OF_NUMBERS_NUMBER,
}
typedef PARSE_STAGE;
#define MAX_CHAR_DATA_LENGTH 500
#define MAX_CHAR_1000_DATA_LENGTH 1000
#define TABLEDATA_DIRECTORY "TableData\\"
#define TABLEDATA_LAPTOP_DIRECTORY "Laptop\\"
#define ATTACHMENTSFILENAME "Items\\Attachments.xml"
#define ATTACHMENTINFOFILENAME "Items\\AttachmentInfo.xml"
#define ITEMSFILENAME "Items\\Items.xml"
#define WEAPONSFILENAME "Items\\Weapons.xml"
#define LAUNCHABLESFILENAME "Items\\Launchables.xml"
#define COMPATIBLEFACEITEMSFILENAME "Items\\CompatibleFaceItems.xml"
#define MERGESFILENAME "Items\\Merges.xml"
#define ATTACHMENTCOMBOMERGESFILENAME "Items\\AttachmentComboMerges.xml"
#define ITEMTRANSFORMATIONSFILENAME "Items\\Item_Transformations.xml"
#define MAGAZINESFILENAME "Items\\Magazines.xml"
#define ARMOURSFILENAME "Items\\Armours.xml"
#define EXPLOSIVESFILENAME "Items\\Explosives.xml"
#define DRUGSFILENAME "Items\\Drugs.xml"
#define FOODFILENAME "Items\\Food.xml"
#define FOODOPINIONFILENAME "Items\\FoodOpinion.xml"
#define STRUCTUREDECONSTRUCTFILENAME "Items\\StructureDeconstruct.xml"
#define STRUCTURECONSTRUCTFILENAME "Items\\StructureConstruct.xml"
#define STRUCTUREMOVEFILENAME "Items\\StructureMove.xml"
#define CLOTHESFILENAME "Items\\Clothes.xml"
#define RANDOMITEMFILENAME "Items\\RandomItem.xml"
#define AMMOFILENAME "Items\\AmmoStrings.xml"
#define AMMOTYPESFILENAME "Items\\AmmoTypes.xml"
#define INCOMPATIBLEATTACHMENTSFILENAME "Items\\IncompatibleAttachments.xml"
#define ATTACHMENTSLOTSFILENAME "Items\\AttachmentSlots.xml"
#define LOADBEARINGEQUIPMENTFILENAME "Items\\LoadBearingEquipment.xml"
#define EXPLOSIONDATAFILENAME "Items\\ExplosionData.xml"
#define LBEPOCKETFILENAME "Items\\Pockets.xml"
#define LBEPOCKETPOPUPFILENAME "Items\\PocketPopups.xml"
#define ENEMYGUNCHOICESFILENAME "Inventory\\EnemyGunChoices.xml" // default selection
#define GUNCHOICESFILENAME_ENEMY_ADMIN "Inventory\\GunChoices_Enemy_Admin.xml"
#define GUNCHOICESFILENAME_ENEMY_REGULAR "Inventory\\GunChoices_Enemy_Regular.xml"
#define GUNCHOICESFILENAME_ENEMY_ELITE "Inventory\\GunChoices_Enemy_Elite.xml"
#define GUNCHOICESFILENAME_MILITIA_GREEN "Inventory\\GunChoices_Militia_Green.xml"
#define GUNCHOICESFILENAME_MILITIA_REGULAR "Inventory\\GunChoices_Militia_Regular.xml"
#define GUNCHOICESFILENAME_MILITIA_ELITE "Inventory\\GunChoices_Militia_Elite.xml"
#define ENEMYITEMCHOICESFILENAME "Inventory\\EnemyItemChoices.xml" // default selection
#define ITEMCHOICESFILENAME_ENEMY_ADMIN "Inventory\\ItemChoices_Enemy_Admin.xml"
#define ITEMCHOICESFILENAME_ENEMY_REGULAR "Inventory\\ItemChoices_Enemy_Regular.xml"
#define ITEMCHOICESFILENAME_ENEMY_ELITE "Inventory\\ItemChoices_Enemy_Elite.xml"
#define ITEMCHOICESFILENAME_MILITIA_GREEN "Inventory\\ItemChoices_Militia_Green.xml"
#define ITEMCHOICESFILENAME_MILITIA_REGULAR "Inventory\\ItemChoices_Militia_Regular.xml"
#define ITEMCHOICESFILENAME_MILITIA_ELITE "Inventory\\ItemChoices_Militia_Elite.xml"
#define IMPITEMCHOICESFILENAME "Inventory\\IMPItemChoices.xml"
#define MERCSTARTINGGEARFILENAME "Inventory\\MercStartingGear.xml"
#define ENEMYWEAPONDROPSFILENAME "Inventory\\EnemyWeaponDrops.xml"
#define ENEMYAMMODROPSFILENAME "Inventory\\EnemyAmmoDrops.xml"
#define ENEMYEXPLOSIVEDROPSFILENAME "Inventory\\EnemyExplosiveDrops.xml"
#define ENEMYARMOURDROPSFILENAME "Inventory\\EnemyArmourDrops.xml"
#define ENEMYMISCDROPSFILENAME "Inventory\\EnemyMiscDrops.xml"
#ifdef JA2UB
#define MERCSTARTINGGEAR25FILENAME "Inventory\\MercStartingGear25.xml"
#endif
#define MERCHANTSFILENAME "NPCInventory\\Merchants.xml"
#define TONYINVENTORYFILENAME "NPCInventory\\TonyInventory.xml"
#define DEVININVENTORYFILENAME "NPCInventory\\DevinInventory.xml"
#define FRANZINVENTORYFILENAME "NPCInventory\\FranzInventory.xml"
#define KEITHINVENTORYFILENAME "NPCInventory\\KeithInventory.xml"
#define SAMINVENTORYFILENAME "NPCInventory\\SamInventory.xml"
#define JAKEINVENTORYFILENAME "NPCInventory\\JakeInventory.xml"
#define HOWARDINVENTORYFILENAME "NPCInventory\\HowardInventory.xml"
#define GABBYINVENTORYFILENAME "NPCInventory\\GabbyInventory.xml"
#define FRANKINVENTORYFILENAME "NPCInventory\\FrankInventory.xml"
#define ELGININVENTORYFILENAME "NPCInventory\\ElginInventory.xml"
#define MANNYINVENTORYFILENAME "NPCInventory\\MannyInventory.xml"
#define HERVEINVENTORYFILENAME "NPCInventory\\HerveInventory.xml"
#define PETERINVENTORYFILENAME "NPCInventory\\PeterInventory.xml"
#define ALBERTOINVENTORYFILENAME "NPCInventory\\AlbertoInventory.xml"
#define CARLOINVENTORYFILENAME "NPCInventory\\CarloInventory.xml"
#define MICKEYINVENTORYFILENAME "NPCInventory\\MickeyInventory.xml"
#define ARNIEINVENTORYFILENAME "NPCInventory\\ArnieInventory.xml"
#define PERKOINVENTORYFILENAME "NPCInventory\\PerkoInventory.xml"
#define FREDOINVENTORYFILENAME "NPCInventory\\FredoInventory.xml"
#define TINAINVENTORYFILENAME "NPCInventory\\TinaInventory.xml"
// Flugente: create additional filenames by putting them together
#define ADITIONALDEALER_INVENTORYFILENAME_A "NPCInventory\\AdditionalDealer_"
#define ADITIONALDEALER_INVENTORYFILENAME_B "_Inventory.xml"
#ifdef JA2UB
#define BETTYINVENTORYFILENAME "NPCInventory\\BettyInventory.xml"
#define RAULINVENTORYFILENAME "NPCInventory\\RaulInventory.xml"
#endif
#define SOUNDSFILENAME "Sounds\\Sounds.xml"
#define BURSTSOUNDSFILENAME "Sounds\\BurstSounds.xml"
#define SECTORLOADSCREENSFILENAME "Map\\SectorLoadscreens.xml"
#define CITYTABLEFILENAME "Map\\Cities.xml"
#define MOVEMENTCOSTFILENAME "Map\\MovementCosts.xml"
#define ALTSECTORSFILENAME "Map\\AltSectors.xml"
#define SAMSITESFILENAME "Map\\SamSites.xml"
#define HELISITESFILENAME "Map\\HeliSites.xml"
#define EXTRAITEMSFILENAME "Map\\ExtraItems\\A9_0_ExtraItems" // ".xml" will be added @runtime
#define EXTRAITEMSFILENAME2 "Map\\ExtraItems\\A11_0_ExtraItems" // ".xml" will be added @runtime
#define SHIPPINGDESTINATIONSFILENAME "Map\\ShippingDestinations.xml"
#define DELIVERYMETHODSFILENAME "Map\\DeliveryMethods.xml"
#define DELIVERYMETHODSFILENAME "Map\\DeliveryMethods.xml"
#define SECTORFACILITIESFILENAME "Map\\Facilities.xml"
#define FACILITYTYPESFILENAME "Map\\FacilityTypes.xml"
#define SECTORNAMESFILENAME "Map\\SectorNames.xml"
#define COOLNESSBYSECTORFILENAME "Map\\CoolnessBySector.xml"
#define BLOODCATPLACEMENTSFILENAME "Map\\BloodcatPlacements.xml"
#define CREATUREPLACEMENTSFILENAME "Map\\CreaturePlacements.xml"
#define SECTORLEVEL1NAMESFILENAME "Map\\SectorNamesLevel_1.xml"
#define SECTORLEVEL2NAMESFILENAME "Map\\SectorNamesLevel_2.xml"
#define SECTORLEVEL3NAMESFILENAME "Map\\SectorNamesLevel_3.xml"
#define INTERACTIVEACTIONSFILENAME "Map\\InteractiveActions.xml"
#define GARRISONFILENAME "Army\\GarrisonGroups.xml"
#define PATROLFILENAME "Army\\PatrolGroups.xml"
#define COMPOSITIONFILENAME "Army\\ArmyComposition.xml"
#define UNIFORMCOLORSFILENAME "Army\\UniformColors.xml"
#define LAPTOPFLORISTTEXTFILENAME "Laptop\\Florist.xml"
#define LAPTOPFUNERALTEXTFILENAME "Laptop\\Funeral.xml"
#define LAPTOPBOBBYRAYSTEXTFILENAME "Laptop\\BobbyRays.xml"
#define LAPTOPFLORISTLOCATIONFILENAME "Laptop\\FloristPositions.xml"
#define LAPTOPFUNERALLOCATIONFILENAME "Laptop\\FuneralPositions.xml"
#define LAPTOPADDITIONALFILESFILENAME "AdditionalFiles.xml"
#define EMAILSFILENAME "Email\\Emails.xml"
#define EMAILSENDERNAMELIST "Email\\EmailSenderNameList.xml"
#define EMAILMERCAVAILABLE "Email\\EmailMercAvailable.xml"
#define EMAILMERCLEVELUP "Email\\EmailMercLevelUp.xml"
#define EMAILOTHER "Email\\EmailOther.xml"
#define EMAILINSURANCE "Email\\EmailInsurance.xml"
// WANNE: Old encyclopedia. Not used anymore ..
#ifdef ENABLE_ENCYCLOPEDIA
#define ENCYCLOPEDIALOCATIONFILENAME "Encyclopedia\\EncyclopediaLocations.xml"
#define ENCYCLOPEDIAPROFILEFILENAME "Encyclopedia\\EncyclopediaProfiles.xml"
#define ENCYCLOPEDIAINVENTORYFILENAME "Encyclopedia\\EncyclopediaInventory.xml"
#define ENCYCLOPEDIAOTHERFILENAME "Encyclopedia\\EncyclopediaOthers.xml"
#define ENCYCLOPEDIAQUESTSFILENAME "Encyclopedia\\EncyclopediaQuests.xml"
#endif
#define BRIEFINGROOMFILENAME "BriefingRoom\\BriefingRoom.xml"
#define MULTIPLAYERTEAMSFILENAME "Multiplayer\\RandomTeams.xml"
#define ACTIONITEMSFILENAME "MapAction\\Actionitems.xml"
#define LAYOUTMAINMENU "Layout\\LayoutMainMenu.xml"
#define MINERALSFILENAME "Map\\Minerals.xml"
#define AIMAVAILABILITY "AimAvailability.xml"
#define CIVGROUPNAMESFILENAME "CivGroupNames.xml"
#define ENEMYNAMESFILENAME "EnemyNames.xml"
#define ENEMYRANKFILENAME "EnemyRank.xml"
#define FACEGEARFILENAME "FaceGear.xml"
#define HIDDENNAMESFILENAME "HiddenNames.xml"
#define IMPPORTRAITS "IMPPortraits.xml"
#define IMPVOICES "IMPVoices.xml"
#define MERCAVAILABILITY "MercAvailability.xml"
#define MERCOPINIONSFILENAME "MercOpinions.xml"
#define MERCPROFILESFILENAME "MercProfiles.xml"
#define LOADSCREENHINTSFILENAME "LoadScreenHints.xml"
#ifdef JA2UB
#define MERCPROFILESFILENAME25 "MercProfiles25.xml"
#define MERCOPINIONSFILENAME25 "MercOpinions25.xml"
#endif
#define MERCQUOTEFILENAME "MercQuote.xml"
#define OLDAIMARCHIVEFILENAME "OldAIMArchive.xml"
#define RANDOMSTATS "RandomStats.xml"
#define RPCFACESSMALLFILENAME "RPCFacesSmall.xml"
#define SPREADPATTERNSFILENAME "SpreadPatterns.xml"
#define VEHICLESFILENAME "Vehicles.xml"
#define SQUADNAMEFILENAME "SquadNames.xml"
#define BACKGROUNDSFILENAME "Backgrounds.xml"
#define INDIVIDUALMILITIAFILENAME "MilitiaIndividual.xml"
#define CAMPAIGNSTATSEVENTSFILENAME "CampaignStatsEvents.xml"
#define DISEASEFILENAME "Disease.xml"
#define TAUNTSFOLDERNAME "EnemyTaunts\\"
#define TAUNTSFILENAME "EnemyTaunts.xml"
#define TAUNTSFILENAMEBEGINNING "EnemyTaunts" // You can add additional taunt files next to the "EnemyTaunts.xml" file. They have to start with "EnemyTaunts*.xml" (e.g: EnemyTauntsKill.xml)
#define TAUNTSFILENAMEENDING ".xml"
#define LOCKSFILENAME "Items\\Locks.xml"
#define KEYSFILENAME "Items\\Keys.xml"
#define ENEMY_ADMIN_PROFILE_FILENAME "Profiles\\SoldierProfileEnemyAdmin.xml"
#define ENEMY_REGULAR_PROFILE_FILENAME "Profiles\\SoldierProfileEnemyRegular.xml"
#define ENEMY_ELITE_PROFILE_FILENAME "Profiles\\SoldierProfileEnemyElite.xml"
#define MILITIA_GREEN_PROFILE_FILENAME "Profiles\\SoldierProfileMilitiaGreen.xml"
#define MILITIA_REGULAR_PROFILE_FILENAME "Profiles\\SoldierProfileMilitiaRegular.xml"
#define MILITIA_VETERAN_PROFILE_FILENAME "Profiles\\SoldierProfileMilitiaVeteran.xml"
#define HISTORYNAMEFILENAME "History.xml"
#define DIFFICULTYFILENAME "DifficultySettings.xml"
#define LBT_LAYERSFILENAME "LogicalBodyTypes/Layers.xml"
#define LBT_PALETTESFILENAME "LogicalBodyTypes/Palettes.xml"
#define LBT_ANIMSURFACESFILENAME "LogicalBodyTypes/AnimationSurfaces.xml"
#define LBT_FILTERSFILENAME "LogicalBodyTypes/Filters.xml"
#define LBT_BODYTYPESFILENAME "LogicalBodyTypes/LogicalBodyTypes.xml"
extern BOOLEAN ReadInItemStats(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN WriteItemStats();
extern BOOLEAN ReadInAttachmentStats(STR fileName);
extern BOOLEAN WriteAttachmentStats();
extern BOOLEAN ReadInAttachmentInfoStats(STR fileName);
extern BOOLEAN WriteAttachmentInfoStats();
extern BOOLEAN ReadInMagazineStats(STR fileName);
extern BOOLEAN WriteMagazineStats();
extern BOOLEAN ReadInLaunchableStats(STR fileName);
extern BOOLEAN WriteLaunchableStats();
extern BOOLEAN ReadInCompatibleFaceItemStats(STR fileName);
extern BOOLEAN WriteCompatibleFaceItemStats();
extern BOOLEAN ReadInMergeStats(STR fileName);
extern BOOLEAN WriteMergeStats();
extern BOOLEAN ReadInAttachmentComboMergeStats(STR fileName);
extern BOOLEAN WriteAttachmentComboMergeStats();
// HEADROCK HAM 5: Item Transformation XML reader
extern BOOLEAN ReadInTransformationStats(STR fileName);
extern BOOLEAN ReadInArmourStats(STR fileName);
extern BOOLEAN WriteArmourStats();
// CHRISL:
extern BOOLEAN ReadInLBEStats(STR fileName);
extern BOOLEAN WriteLBEEquipmentStats();
extern BOOLEAN ReadInLBEPocketStats(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN WriteLBEPocketEquipmentStats();
// THE_BOB : added for pocket popup definitions
extern BOOLEAN ReadInLBEPocketPopups(STR fileName);
extern BOOLEAN ReadInMercStartingGearStats(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN WriteMercStartingGearStats();
extern BOOLEAN ReadInExplosiveStats(STR fileName);
extern BOOLEAN WriteExplosiveStats();
// Flugente: drugs
extern BOOLEAN ReadInDrugsStats(STR fileName);
extern BOOLEAN WriteDrugsStats();
// Flugente: food
extern BOOLEAN ReadInFoodStats(STR fileName);
extern BOOLEAN WriteFoodStats();
// Flugente: merc opinions on food
extern BOOLEAN ReadInFoodOpinionStats(STR fileName);
extern BOOLEAN WriteFoodOpinionStats();
// Flugente: disease
BOOLEAN ReadInDiseaseStats( STR fileName, BOOLEAN localizedVersion );
extern BOOLEAN WriteDiseaseStats( );
// Flugente: structure (de-)construct
extern BOOLEAN ReadInStructureDeconstructStats(STR fileName);
extern BOOLEAN WriteStructureDeconstructStats();
extern BOOLEAN ReadInStructureConstructStats(STR fileName);
extern BOOLEAN WriteStructureConstructStats();
// Flugente: interactive actions
extern BOOLEAN ReadInInteractiveActionsStats( STR fileName );
extern BOOLEAN WriteInteractiveActionsStats( );
// Flugente: structure move
extern BOOLEAN ReadInStructureMoveStats( STR fileName );
extern BOOLEAN WriteStructureMoveStats();
// Flugente: merchants
extern BOOLEAN ReadInMerchantStats(STR fileName);
extern BOOLEAN WriteMerchantStats();
// Flugente: clothes
extern BOOLEAN ReadInClothesStats(STR fileName);
extern BOOLEAN WriteClothesStats();
// Flugente: random items
extern BOOLEAN ReadInRandomItemStats(STR fileName);
extern BOOLEAN WriteRandomItemStats();
// Flugente: squad names
extern BOOLEAN ReadInSquadNamesStats(STR fileName);
extern BOOLEAN WriteSquadNamesStats();
// Flugente: loadscreen hints
extern BOOLEAN ReadInLoadScreenHints(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN WriteLoadScreenHints();
// Flugente: soldier profiles
extern BOOLEAN ReadInSoldierProfiles(SOLDIER_PROFILE_VALUES* pProfiles, STR fileName);
extern BOOLEAN WriteSoldierProfiles();
extern BOOLEAN ReadInAmmoStats(STR fileName);
extern BOOLEAN WriteAmmoStats();
extern BOOLEAN WriteIncompatibleAttachmentStats();
extern BOOLEAN ReadInIncompatibleAttachmentStats(STR fileName);
//WarmSteel - for New Attachment System
extern BOOLEAN WriteAttachmentSlotsStats();
extern BOOLEAN ReadInAttachmentSlotsStats(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN WriteExtendedArmyGunChoicesStats();
extern BOOLEAN ReadInExtendedArmyGunChoicesStats(ARMY_GUN_CHOICE_TYPE* pGunChoice, STR fileName);
extern BOOLEAN WriteArmyItemChoicesStats();
extern BOOLEAN ReadInArmyItemChoicesStats(ARMY_GUN_CHOICE_TYPE* pGunChoice, STR fileName);
extern BOOLEAN WriteIMPItemChoicesStats();
extern BOOLEAN ReadInIMPItemChoicesStats(STR fileName);
extern BOOLEAN WriteInventoryStats (DEALER_POSSIBLE_INV *pInv, STR fileName);
extern BOOLEAN ReadInInventoryStats (DEALER_POSSIBLE_INV *pInv, STR fileName);
extern BOOLEAN WriteSoundArray();
extern BOOLEAN ReadInSoundArray(STR fileName);
extern BOOLEAN ReadInAmmoTypeStats(STR fileName);
extern BOOLEAN WriteAmmoTypeStats();
// WANNE: Enemy drops
extern BOOLEAN ReadInEnemyWeaponDropsStats(WEAPON_DROPS *pEnemyWeaponDrops, STR fileName);
extern BOOLEAN WriteEnemyWeaponDropsStats(WEAPON_DROPS *pEnemyWeaponDrops, STR fileName);
extern BOOLEAN ReadInEnemyAmmoDropsStats(AMMO_DROPS *pEnemyAmmoDrops, STR fileName);
extern BOOLEAN WriteEnemyAmmoDropsStats(AMMO_DROPS *pEnemyAmmoDrops, STR fileName);
extern BOOLEAN ReadInEnemyExplosiveDropsStats(EXPLOSIVE_DROPS *pEnemyExplosiveDrops, STR fileName);
extern BOOLEAN WriteEnemyExplosiveDropsStats(EXPLOSIVE_DROPS *pEnemyExplosiveDrops, STR fileName);
extern BOOLEAN ReadInEnemyArmourDropsStats(ARMOUR_DROPS *pEnemyArmourDrops, STR fileName);
extern BOOLEAN WriteEnemyArmourDropsStats(ARMOUR_DROPS *pEnemyArmourDrops, STR fileName);
extern BOOLEAN ReadInEnemyMiscDropsStats(MISC_DROPS *pEnemyMiscDrops, STR fileName);
extern BOOLEAN WriteEnemyMiscDropsStats(MISC_DROPS *pEnemyMiscDrops, STR fileName);
// WANNE: Sector Loadscreens [2007-05-18]
extern BOOLEAN ReadInSectorLoadscreensStats(SECTOR_LOADSCREENS *pSectorLoadscreens, STR fileName);
extern BOOLEAN WriteSectorLoadscreensStats(SECTOR_LOADSCREENS *pSectorLoadscreens, STR fileName);
// Lesh: burst sounds and explosion info
extern BOOLEAN ReadInBurstSoundArray(STR fileName);
extern BOOLEAN WriteBurstSoundArray();
extern BOOLEAN ReadInExplosionDataStats(STR fileName);
extern BOOLEAN WriteExplosionDataStats();
//Lesh: strategic movement costs and alternative sectors table
extern BOOLEAN ReadInStrategicMovementCosts(STR fileName);
extern BOOLEAN WriteInStrategicMovementCosts(STR fileName);
extern BOOLEAN ReadInAltSectors(STR fileName);
extern BOOLEAN WriteInAltSectors(STR fileName);
//Lesh: samsite info
extern BOOLEAN ReadInSAMInfo(STR fileName);
extern BOOLEAN WriteInSAMInfo(STR fileName);
// Buggler: helisite externalization
extern BOOLEAN ReadInHeliInfo(STR fileName);
extern BOOLEAN WriteInHeliInfo(STR fileName);
// Lesh: army externalization
extern BOOLEAN ReadInGarrisonInfo(STR fileName);
extern BOOLEAN WriteInGarrisonInfo(STR fileName);
extern BOOLEAN ReadInPatrolInfo(STR fileName);
extern BOOLEAN WriteInPatrolInfo(STR fileName);
extern BOOLEAN ReadInArmyCompositionInfo(STR fileName);
extern BOOLEAN WriteInArmyCompositionInfo(STR fileName);
// Dealtar: New shipping system XMLs
extern BOOLEAN ReadInShippingDestinations(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN ReadInDeliveryMethods(STR fileName);
//zilpin: pellet spread patterns externalized in XML
extern BOOLEAN ReadInSpreadPatterns(STR fileName);
extern BOOLEAN WriteSpreadPatterns();
extern int FindSpreadPatternIndex( const STR strName );
//Gotthard: Laptop Florist Text
extern BOOLEAN ReadInFloristText(STR fileName);
//Gotthard: Laptop Funeral Text
extern BOOLEAN ReadInFuneralText(STR fileName);
//Gotthard: Delivery Locations Text (For Florist, Bobby Ray's)
extern BOOLEAN ReadInBobbyRaysText(STR fileName);
//Gotthard: Special Sector Names Test (Cambria Hospital, etc.)
extern BOOLEAN ReadInSectorNamesText(STR fileName);
//Gotthard: Laptop Florist Locations
extern BOOLEAN ReadInFloristLocations(STR fileName);
//Gotthard: Laptop Funeral Locations
extern BOOLEAN ReadInFuneralLocations(STR fileName);
// HEADROCK HAM 3.4: Sector Facility Locations
extern BOOLEAN ReadInSectorFacilities(STR fileName);
// HEADROCK HAM 3.5: Facility Types and bonuses
extern BOOLEAN ReadInFacilityTypes(STR fileName, BOOLEAN localizedVersion);
// HEADROCK HAM 3.6: Customized Sector Names
extern BOOLEAN ReadInSectorNames(STR fileName, BOOLEAN localizedVersion, INT8 Level );
// HEADROCK HAM 5: Coolness by Sectors
extern BOOLEAN ReadInCoolnessBySector(STR fileName );
// HEADROCK PROFEX: Merc Profiles
extern BOOLEAN ReadInMercProfiles(STR fileName, BOOLEAN localizedVersion);
// HEADROCK PROFEX: Merc Opinions
extern BOOLEAN ReadInMercOpinions(STR fileName);
// HEADROCK HAM 3.6: Customized Bloodcat Placements
extern BOOLEAN ReadInBloodcatPlacements(STR fileName);
// Buggler: Customized Creature Placements
extern BOOLEAN ReadInCreaturePlacements(STR fileName);
// HEADROCK HAM 3.6: Customized Uniform Colors
extern BOOLEAN ReadInUniforms(STR fileName);
//Jazz Small Faces
extern BOOLEAN ReadInSmallFacesStats(RPC_SMALL_FACE_VALUES *pSmallFaces, STR fileName);
extern BOOLEAN WriteSmallFacesStats(RPC_SMALL_FACE_VALUES *pSmallFaces, STR fileName);
//Hidden Names
extern BOOLEAN ReadInHiddenNamesStats(HIDDEN_NAMES_VALUES *pHiddenNames, STR fileName);
extern BOOLEAN WriteHiddenNamesStats(HIDDEN_NAMES_VALUES *pHiddenNames, STR fileName);
extern void LoadHiddenNames();
extern BOOLEAN ReadInEnemyNames(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN ReadInCivGroupNamesStats(STR fileName, BOOLEAN localizedVersion);
// the list of email sender names by Jazz
extern BOOLEAN ReadInSenderNameList(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN ReadInEnemyRank(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN WriteEnemyRank( STR fileName);
extern BOOLEAN ReadInIMPPortraits(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN ReadInIMPVoices( STR fileName );
extern void LoadIMPPortraitsTEMP();
// Flugente: backgrounds
extern BOOLEAN ReadInBackgrounds(STR fileName, BOOLEAN localizedVersion );
extern BOOLEAN WriteBackgrounds( STR fileName);
// Flugente: individual militia
extern BOOLEAN ReadInMilitiaIndividual( STR fileName, BOOLEAN localizedVersion );
extern BOOLEAN WriteMilitiaIndividual( STR fileName );
// Flugente: campaign stats events
extern BOOLEAN ReadInCampaignStatsEvents(STR fileName, BOOLEAN localizedVersion );
extern BOOLEAN WriteCampaignStatsEvents( STR fileName);
// anv: externalised taunts
extern BOOLEAN ReadInTaunts(STR fileName, BOOLEAN localizedVersion );
extern BOOLEAN WriteTaunts( STR fileName );
// anv: detailed tileset terrain types
extern BOOLEAN ReadInAdditionalTileProperties(STR fileName );
extern BOOLEAN WriteAdditionalTileProperties( STR fileName );
// anv: externalised locks and keys
extern BOOLEAN ReadInLocks(STR fileName );
extern BOOLEAN WriteLocks( STR fileName );
extern BOOLEAN ReadInKeys( STR fileName );
extern BOOLEAN WriteKeys( STR fileName );
//Random stats by Jazz
extern BOOLEAN WriteRandomStats( STR fileName );
extern BOOLEAN ReadInRandomStats( STR fileName );
//new profiles by Jazz
extern BOOLEAN ReadInMercAvailability(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN WriteMercAvailability(STR fileName);
extern BOOLEAN ReadInAimAvailability(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN WriteAimAvailability(STR fileName);
extern BOOLEAN WriteMercQuotes(QARRAY_VALUES *pQarray, STR fileName);
extern BOOLEAN ReadInMercQuotes(QARRAY_VALUES *pQarray, STR fileName);
extern BOOLEAN WriteFaceGear();
extern BOOLEAN ReadInFaceGear( FACE_GEAR_VALUES *pFaceGear, STR fileName );
extern BOOLEAN ReadInIntroNames(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN ReadInMainMenu(MAIN_MENU_VALUES *pMainMenu, STR fileName);
extern BOOLEAN ReadInActionItems(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN WriteInActionItems( STR fileName);
extern BOOLEAN ReadInEmailMercAvailable(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN ReadInEmailMercLevelUp(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN ReadInExternalizedEmails(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN ReadInBriefingRoom(STR fileName, BOOLEAN localizedVersion, BRIEFINGROOM_M_DATA *Ency, UINT32 FileType2 );
extern BOOLEAN ReadInMinerals(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN ReadInNewVehicles(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN WriteNewVehicles(STR fileName);
extern void InitNewVehicles ();
extern BOOLEAN ReadInLanguageLocation(STR fileName, BOOLEAN localizedVersion, LANGUAGE_LOCATION *Lang, UINT32 FileType2 );
extern BOOLEAN ReadInAimOldArchive(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN ReadInHistorys(STR fileName, BOOLEAN localizedVersion );
extern BOOLEAN ReadInDifficultySettings(STR fileName, BOOLEAN localizedVersion);
extern const XML_Char* GetAttribute(const XML_Char* name, const XML_Char** atts);
#endif