mirror of
https://github.com/1dot13/source.git
synced 2026-08-26 14:30:26 +02:00
-tested and fixed new camouflage types and ammo weights
-fixed localization to read in XML file git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@400 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+2
-2
@@ -23,12 +23,12 @@ INT16 zVersionLabel[256] = { L"Beta v. 0.98" };
|
|||||||
#else
|
#else
|
||||||
|
|
||||||
//RELEASE BUILD VERSION
|
//RELEASE BUILD VERSION
|
||||||
INT16 zVersionLabel[256] = { L"Release v1.13.389" };
|
INT16 zVersionLabel[256] = { L"Release v1.13.400" };
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
INT8 czVersionNumber[16] = { "Build 06.08.01" };
|
INT8 czVersionNumber[16] = { "Build 06.08.03" };
|
||||||
INT16 zTrackingNumber[16] = { L"Z" };
|
INT16 zTrackingNumber[16] = { L"Z" };
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ BOOLEAN LoadExternalGameplayData(STR directoryName)
|
|||||||
strcpy(fileName, directoryName);
|
strcpy(fileName, directoryName);
|
||||||
strcat(fileName, ITEMSFILENAME);
|
strcat(fileName, ITEMSFILENAME);
|
||||||
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
|
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
|
||||||
if(!ReadInItemStats(fileName))
|
if(!ReadInItemStats(fileName,FALSE))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
//Madd: Simple localization
|
//Madd: Simple localization
|
||||||
@@ -138,7 +138,7 @@ BOOLEAN LoadExternalGameplayData(STR directoryName)
|
|||||||
if ( FileExists(fileName) )
|
if ( FileExists(fileName) )
|
||||||
{
|
{
|
||||||
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
|
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
|
||||||
if(!ReadInItemStats(fileName))
|
if(!ReadInItemStats(fileName,TRUE))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -149,7 +149,7 @@ BOOLEAN LoadExternalGameplayData(STR directoryName)
|
|||||||
if ( FileExists(fileName) )
|
if ( FileExists(fileName) )
|
||||||
{
|
{
|
||||||
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
|
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
|
||||||
if(!ReadInItemStats(fileName))
|
if(!ReadInItemStats(fileName,TRUE))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -7543,7 +7543,7 @@ void GetHelpTextForItem( INT16 * pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldi
|
|||||||
Armour[ Item[ usItem ].ubClassIndex ].ubProtection, //Protection (raw data)
|
Armour[ Item[ usItem ].ubClassIndex ].ubProtection, //Protection (raw data)
|
||||||
Armour[ Item[ usItem ].ubClassIndex ].ubProtection * sValue / 100,
|
Armour[ Item[ usItem ].ubClassIndex ].ubProtection * sValue / 100,
|
||||||
pInvPanelTitleStrings[ 3 ], //Camo string
|
pInvPanelTitleStrings[ 3 ], //Camo string
|
||||||
Item[ usItem ].camobonus, //Camo bonus
|
GetCamoBonus(pObject)+GetUrbanCamoBonus(pObject)+GetDesertCamoBonus(pObject)+GetSnowCamoBonus(pObject), //Camo bonus
|
||||||
gWeaponStatsDesc[ 12 ], //Weight string
|
gWeaponStatsDesc[ 12 ], //Weight string
|
||||||
fWeight, //Weight
|
fWeight, //Weight
|
||||||
GetWeightUnitString() //Weight units
|
GetWeightUnitString() //Weight units
|
||||||
|
|||||||
+105
-17
@@ -2200,7 +2200,7 @@ UINT8 CalculateObjectWeight( OBJECTTYPE *pObject )
|
|||||||
{
|
{
|
||||||
if (pObject->ubShotsLeft[cnt] > 0 )
|
if (pObject->ubShotsLeft[cnt] > 0 )
|
||||||
{
|
{
|
||||||
usWeight += (INT16)(pObject->ubShotsLeft[cnt]/Magazine[pItem->usItemClass].ubMagSize) * pItem->ubWeight;
|
usWeight += (INT16)(pObject->ubShotsLeft[cnt]/Magazine[pItem->ubClassIndex].ubMagSize) * pItem->ubWeight;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5685,9 +5685,6 @@ BOOLEAN ApplyCammo( SOLDIERTYPE * pSoldier, OBJECTTYPE * pObj, BOOLEAN *pfGoodAP
|
|||||||
//get total camo bonus for kit -- note that camo kits now require the camobonus tag to be set
|
//get total camo bonus for kit -- note that camo kits now require the camobonus tag to be set
|
||||||
int itemCamo = Item[pObj->usItem].camobonus + Item[pObj->usItem].urbanCamobonus + Item[pObj->usItem].desertCamobonus + Item[pObj->usItem].snowCamobonus;
|
int itemCamo = Item[pObj->usItem].camobonus + Item[pObj->usItem].urbanCamobonus + Item[pObj->usItem].desertCamobonus + Item[pObj->usItem].snowCamobonus;
|
||||||
|
|
||||||
if ( itemCamo < 100 )
|
|
||||||
usTotalKitPoints = (INT16)((itemCamo / 100) * usTotalKitPoints);
|
|
||||||
|
|
||||||
int totalCamo = pSoldier->bCamo + pSoldier->wornCamo + pSoldier->urbanCamo+pSoldier->wornUrbanCamo+pSoldier->desertCamo+pSoldier->wornDesertCamo+pSoldier->snowCamo+pSoldier->wornSnowCamo;
|
int totalCamo = pSoldier->bCamo + pSoldier->wornCamo + pSoldier->urbanCamo+pSoldier->wornUrbanCamo+pSoldier->desertCamo+pSoldier->wornDesertCamo+pSoldier->snowCamo+pSoldier->wornSnowCamo;
|
||||||
if ((totalCamo) >= 100)
|
if ((totalCamo) >= 100)
|
||||||
{
|
{
|
||||||
@@ -5701,15 +5698,15 @@ BOOLEAN ApplyCammo( SOLDIERTYPE * pSoldier, OBJECTTYPE * pObj, BOOLEAN *pfGoodAP
|
|||||||
bPointsToUse = __min( bPointsToUse, usTotalKitPoints );
|
bPointsToUse = __min( bPointsToUse, usTotalKitPoints );
|
||||||
|
|
||||||
//figure out proportions of each to be applied, one item can theoretically have more than one camouflage type this way
|
//figure out proportions of each to be applied, one item can theoretically have more than one camouflage type this way
|
||||||
int urban = (int)((Item[pObj->usItem].urbanCamobonus / itemCamo) * bPointsToUse);
|
int urban = (int)(Item[pObj->usItem].urbanCamobonus * bPointsToUse / itemCamo );
|
||||||
int jungle = (int)((Item[pObj->usItem].camobonus / itemCamo) * bPointsToUse);
|
int jungle = (int)(Item[pObj->usItem].camobonus * bPointsToUse / itemCamo );
|
||||||
int desert = (int)((Item[pObj->usItem].desertCamobonus / itemCamo) * bPointsToUse);
|
int desert = (int)(Item[pObj->usItem].desertCamobonus * bPointsToUse / itemCamo );
|
||||||
int snow = (int)((Item[pObj->usItem].snowCamobonus / itemCamo) * bPointsToUse);
|
int snow = (int)(Item[pObj->usItem].snowCamobonus * bPointsToUse / itemCamo );
|
||||||
|
|
||||||
pSoldier->bCamo = __min( 100, pSoldier->bCamo + jungle * 2);
|
pSoldier->bCamo = __min( 100, pSoldier->bCamo + jungle );
|
||||||
pSoldier->urbanCamo = __min( 100, pSoldier->urbanCamo + urban * 2);
|
pSoldier->urbanCamo = __min( 100, pSoldier->urbanCamo + urban );
|
||||||
pSoldier->desertCamo = __min( 100, pSoldier->desertCamo + desert * 2);
|
pSoldier->desertCamo = __min( 100, pSoldier->desertCamo + desert );
|
||||||
pSoldier->snowCamo = __min( 100, pSoldier->snowCamo + snow * 2);
|
pSoldier->snowCamo = __min( 100, pSoldier->snowCamo + snow );
|
||||||
|
|
||||||
UseKitPoints( pObj, bPointsToUse, pSoldier );
|
UseKitPoints( pObj, bPointsToUse, pSoldier );
|
||||||
|
|
||||||
@@ -7168,6 +7165,45 @@ INT16 GetCamoBonus( OBJECTTYPE * pObj )
|
|||||||
}
|
}
|
||||||
return( bns );
|
return( bns );
|
||||||
}
|
}
|
||||||
|
INT16 GetUrbanCamoBonus( OBJECTTYPE * pObj )
|
||||||
|
{
|
||||||
|
INT8 bLoop;
|
||||||
|
INT16 bns=0;
|
||||||
|
|
||||||
|
bns = (INT16) (Item[pObj->usItem].urbanCamobonus);// * (WEAPON_STATUS_MOD(pObj->bStatus[0]) / 100)) ;
|
||||||
|
|
||||||
|
for (bLoop = 0; bLoop < MAX_ATTACHMENTS; bLoop++)
|
||||||
|
{
|
||||||
|
bns += (INT16) (Item[pObj->usAttachItem[bLoop]].urbanCamobonus);// * (WEAPON_STATUS_MOD(pObj->bAttachStatus[bLoop]) / 100));
|
||||||
|
}
|
||||||
|
return( bns );
|
||||||
|
}
|
||||||
|
INT16 GetDesertCamoBonus( OBJECTTYPE * pObj )
|
||||||
|
{
|
||||||
|
INT8 bLoop;
|
||||||
|
INT16 bns=0;
|
||||||
|
|
||||||
|
bns = (INT16) (Item[pObj->usItem].desertCamobonus);// * (WEAPON_STATUS_MOD(pObj->bStatus[0]) / 100)) ;
|
||||||
|
|
||||||
|
for (bLoop = 0; bLoop < MAX_ATTACHMENTS; bLoop++)
|
||||||
|
{
|
||||||
|
bns += (INT16) (Item[pObj->usAttachItem[bLoop]].desertCamobonus);// * (WEAPON_STATUS_MOD(pObj->bAttachStatus[bLoop]) / 100));
|
||||||
|
}
|
||||||
|
return( bns );
|
||||||
|
}
|
||||||
|
INT16 GetSnowCamoBonus( OBJECTTYPE * pObj )
|
||||||
|
{
|
||||||
|
INT8 bLoop;
|
||||||
|
INT16 bns=0;
|
||||||
|
|
||||||
|
bns = (INT16) (Item[pObj->usItem].snowCamobonus);// * (WEAPON_STATUS_MOD(pObj->bStatus[0]) / 100)) ;
|
||||||
|
|
||||||
|
for (bLoop = 0; bLoop < MAX_ATTACHMENTS; bLoop++)
|
||||||
|
{
|
||||||
|
bns += (INT16) (Item[pObj->usAttachItem[bLoop]].snowCamobonus);// * (WEAPON_STATUS_MOD(pObj->bAttachStatus[bLoop]) / 100));
|
||||||
|
}
|
||||||
|
return( bns );
|
||||||
|
}
|
||||||
INT16 GetWornCamo( SOLDIERTYPE * pSoldier )
|
INT16 GetWornCamo( SOLDIERTYPE * pSoldier )
|
||||||
{
|
{
|
||||||
INT8 bLoop;
|
INT8 bLoop;
|
||||||
@@ -7181,6 +7217,45 @@ INT16 GetWornCamo( SOLDIERTYPE * pSoldier )
|
|||||||
|
|
||||||
return __min( ttl, 100 );
|
return __min( ttl, 100 );
|
||||||
}
|
}
|
||||||
|
INT16 GetWornUrbanCamo( SOLDIERTYPE * pSoldier )
|
||||||
|
{
|
||||||
|
INT8 bLoop;
|
||||||
|
INT16 ttl=0;
|
||||||
|
|
||||||
|
for (bLoop = HELMETPOS; bLoop <= LEGPOS; bLoop++)
|
||||||
|
{
|
||||||
|
if ( pSoldier->inv[bLoop].usItem > NONE )
|
||||||
|
ttl += GetUrbanCamoBonus(&pSoldier->inv[bLoop]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return __min( ttl, 100 );
|
||||||
|
}
|
||||||
|
INT16 GetWornDesertCamo( SOLDIERTYPE * pSoldier )
|
||||||
|
{
|
||||||
|
INT8 bLoop;
|
||||||
|
INT16 ttl=0;
|
||||||
|
|
||||||
|
for (bLoop = HELMETPOS; bLoop <= LEGPOS; bLoop++)
|
||||||
|
{
|
||||||
|
if ( pSoldier->inv[bLoop].usItem > NONE )
|
||||||
|
ttl += GetDesertCamoBonus(&pSoldier->inv[bLoop]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return __min( ttl, 100 );
|
||||||
|
}
|
||||||
|
INT16 GetWornSnowCamo( SOLDIERTYPE * pSoldier )
|
||||||
|
{
|
||||||
|
INT8 bLoop;
|
||||||
|
INT16 ttl=0;
|
||||||
|
|
||||||
|
for (bLoop = HELMETPOS; bLoop <= LEGPOS; bLoop++)
|
||||||
|
{
|
||||||
|
if ( pSoldier->inv[bLoop].usItem > NONE )
|
||||||
|
ttl += GetSnowCamoBonus(&pSoldier->inv[bLoop]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return __min( ttl, 100 );
|
||||||
|
}
|
||||||
|
|
||||||
void ApplyEquipmentBonuses(SOLDIERTYPE * pSoldier)
|
void ApplyEquipmentBonuses(SOLDIERTYPE * pSoldier)
|
||||||
{
|
{
|
||||||
@@ -7189,12 +7264,25 @@ void ApplyEquipmentBonuses(SOLDIERTYPE * pSoldier)
|
|||||||
INT16 newCamo = GetWornCamo ( pSoldier );
|
INT16 newCamo = GetWornCamo ( pSoldier );
|
||||||
INT16 oldCamo = pSoldier->wornCamo;
|
INT16 oldCamo = pSoldier->wornCamo;
|
||||||
if ( oldCamo != newCamo )
|
if ( oldCamo != newCamo )
|
||||||
{
|
pSoldier->wornCamo = (INT8)newCamo;
|
||||||
pSoldier->wornCamo = newCamo;
|
|
||||||
|
|
||||||
if ( newCamo > oldCamo && pSoldier->bTeam == OUR_TEAM )
|
newCamo = GetWornUrbanCamo ( pSoldier );
|
||||||
DoMercBattleSound( pSoldier, BATTLE_SOUND_COOL1 );
|
oldCamo = pSoldier->wornUrbanCamo;
|
||||||
}
|
if ( oldCamo != newCamo )
|
||||||
|
pSoldier->wornUrbanCamo = (INT8)newCamo;
|
||||||
|
|
||||||
|
newCamo = GetWornDesertCamo ( pSoldier );
|
||||||
|
oldCamo = pSoldier->wornDesertCamo;
|
||||||
|
if ( oldCamo != newCamo )
|
||||||
|
pSoldier->wornDesertCamo = (INT8)newCamo;
|
||||||
|
|
||||||
|
newCamo = GetWornSnowCamo ( pSoldier );
|
||||||
|
oldCamo = pSoldier->wornSnowCamo;
|
||||||
|
if ( oldCamo != newCamo )
|
||||||
|
pSoldier->wornSnowCamo = (INT8)newCamo;
|
||||||
|
|
||||||
|
if ( newCamo > oldCamo && pSoldier->bTeam == OUR_TEAM )
|
||||||
|
DoMercBattleSound( pSoldier, BATTLE_SOUND_COOL1 );
|
||||||
|
|
||||||
//Madd: do this regardless of camo. This will need to be called to do custom part colours and new overlays anyway.
|
//Madd: do this regardless of camo. This will need to be called to do custom part colours and new overlays anyway.
|
||||||
if ( pSoldier->bInSector)
|
if ( pSoldier->bInSector)
|
||||||
|
|||||||
@@ -294,5 +294,14 @@ INT8 FindNightGoggles( SOLDIERTYPE * pSoldier, INT16 bonusToBeat );
|
|||||||
INT16 GetMinRangeForAimBonus( OBJECTTYPE * pObj );
|
INT16 GetMinRangeForAimBonus( OBJECTTYPE * pObj );
|
||||||
UINT8 AllowedAimingLevels(SOLDIERTYPE * pSoldier);
|
UINT8 AllowedAimingLevels(SOLDIERTYPE * pSoldier);
|
||||||
|
|
||||||
|
INT16 GetWornUrbanCamo( SOLDIERTYPE * pSoldier );
|
||||||
|
INT16 GetUrbanCamoBonus( OBJECTTYPE * pObj );
|
||||||
|
INT16 GetWornDesertCamo( SOLDIERTYPE * pSoldier );
|
||||||
|
INT16 GetDesertCamoBonus( OBJECTTYPE * pObj );
|
||||||
|
INT16 GetWornSnowCamo( SOLDIERTYPE * pSoldier );
|
||||||
|
INT16 GetSnowCamoBonus( OBJECTTYPE * pObj );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
+11
-17
@@ -1613,17 +1613,11 @@ INT32 SoldierToSoldierLineOfSightTest( SOLDIERTYPE * pStartSoldier, SOLDIERTYPE
|
|||||||
}
|
}
|
||||||
|
|
||||||
//get the total camouflage
|
//get the total camouflage
|
||||||
float jungle = (float)(pEndSoldier->bCamo + pEndSoldier->wornCamo);
|
int jungle = max(1,min(100,pEndSoldier->bCamo + pEndSoldier->wornCamo));
|
||||||
float urban = (float)(pEndSoldier->urbanCamo + pEndSoldier->wornUrbanCamo);
|
int urban = max(1,min(100,pEndSoldier->urbanCamo + pEndSoldier->wornUrbanCamo));
|
||||||
float desert = (float)(pEndSoldier->desertCamo + pEndSoldier->wornDesertCamo);
|
int desert = max(1,min(100,pEndSoldier->desertCamo + pEndSoldier->wornDesertCamo));
|
||||||
float snow = (float)(pEndSoldier->snowCamo + pEndSoldier->wornSnowCamo);
|
int snow = max(1,min(100,pEndSoldier->snowCamo + pEndSoldier->wornSnowCamo));
|
||||||
int totalCamo = (int)(jungle + urban + desert + snow);
|
int totalCamo = max(1,min(100,jungle + urban + desert + snow));
|
||||||
|
|
||||||
//get the percentage of each type
|
|
||||||
jungle = jungle / totalCamo;
|
|
||||||
urban = urban / totalCamo;
|
|
||||||
desert = desert / totalCamo;
|
|
||||||
snow = snow / totalCamo;
|
|
||||||
|
|
||||||
if ( ( totalCamo ) > 0 && !bAware )
|
if ( ( totalCamo ) > 0 && !bAware )
|
||||||
{
|
{
|
||||||
@@ -1647,23 +1641,23 @@ INT32 SoldierToSoldierLineOfSightTest( SOLDIERTYPE * pStartSoldier, SOLDIERTYPE
|
|||||||
{
|
{
|
||||||
case LOW_GRASS:
|
case LOW_GRASS:
|
||||||
case HIGH_GRASS: // jungle camo bonus
|
case HIGH_GRASS: // jungle camo bonus
|
||||||
iTemp -= iTemp * (int)(jungle * bEffectiveCamo / 3) / 100;
|
iTemp -= iTemp * (jungle * bEffectiveCamo / 3 / totalCamo) / 100;
|
||||||
break;
|
break;
|
||||||
case FLAT_FLOOR: // flat floor = indoors
|
case FLAT_FLOOR: // flat floor = indoors
|
||||||
case PAVED_ROAD: // urban camo bonus
|
case PAVED_ROAD: // urban camo bonus
|
||||||
iTemp -= iTemp * (int)(urban * bEffectiveCamo / 3) / 100;
|
iTemp -= iTemp * (urban * bEffectiveCamo / 3 / totalCamo) / 100;
|
||||||
break;
|
break;
|
||||||
case DIRT_ROAD: // desert camo bonus
|
case DIRT_ROAD: // desert camo bonus
|
||||||
case TRAIN_TRACKS:
|
case TRAIN_TRACKS:
|
||||||
iTemp -= iTemp * (int)(desert * bEffectiveCamo / 3) / 100;
|
iTemp -= iTemp * (desert * bEffectiveCamo / 3 / totalCamo) / 100;
|
||||||
break;
|
break;
|
||||||
//case ??? : // snow camo bonus
|
//case ??? : // snow camo bonus
|
||||||
// iTemp -= iTemp * (snow * bEffectiveCamo / 3) / 100;
|
// iTemp -= iTemp * (snow * bEffectiveCamo / 3 / totalCamo) / 100;
|
||||||
// break;
|
// break;
|
||||||
case FLAT_GROUND:
|
case FLAT_GROUND:
|
||||||
//in this case both desert and jungle can work:
|
//in this case both desert and jungle can work:
|
||||||
iTemp -= iTemp * (int)(jungle * bEffectiveCamo / 3) / 100;
|
iTemp -= iTemp * (jungle * bEffectiveCamo / 3 / totalCamo) / 100;
|
||||||
iTemp -= iTemp * (int)(desert * bEffectiveCamo / 3) / 100;
|
iTemp -= iTemp * (desert * bEffectiveCamo / 3 / totalCamo) / 100;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -457,10 +457,10 @@ SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, UINT8 *
|
|||||||
if ( i != NO_SLOT && Random( 5 ) < SoldierDifficultyLevel( &Soldier ))
|
if ( i != NO_SLOT && Random( 5 ) < SoldierDifficultyLevel( &Soldier ))
|
||||||
{
|
{
|
||||||
// start camouflaged
|
// start camouflaged
|
||||||
Soldier.bCamo = Item[i].camobonus;
|
Soldier.bCamo = (INT8)Item[i].camobonus;
|
||||||
Soldier.urbanCamo = Item[i].urbanCamobonus;
|
Soldier.urbanCamo = (INT8)Item[i].urbanCamobonus;
|
||||||
Soldier.desertCamo = Item[i].desertCamobonus;
|
Soldier.desertCamo = (INT8)Item[i].desertCamobonus;
|
||||||
Soldier.snowCamo = Item[i].snowCamobonus;
|
Soldier.snowCamo = (INT8)Item[i].snowCamobonus;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -67,7 +67,7 @@ typedef PARSE_STAGE;
|
|||||||
#define EXPLOSIONDATAFILENAME "ExplosionData.xml"
|
#define EXPLOSIONDATAFILENAME "ExplosionData.xml"
|
||||||
#define CITYTABLEFILENAME "Cities.xml"
|
#define CITYTABLEFILENAME "Cities.xml"
|
||||||
|
|
||||||
extern BOOLEAN ReadInItemStats(STR fileName);
|
extern BOOLEAN ReadInItemStats(STR fileName, BOOLEAN localizedVersion);
|
||||||
extern BOOLEAN WriteItemStats();
|
extern BOOLEAN WriteItemStats();
|
||||||
|
|
||||||
extern BOOLEAN ReadInAttachmentStats(STR fileName);
|
extern BOOLEAN ReadInAttachmentStats(STR fileName);
|
||||||
|
|||||||
+10
-5
@@ -58,6 +58,8 @@ struct
|
|||||||
}
|
}
|
||||||
typedef itemParseData;
|
typedef itemParseData;
|
||||||
|
|
||||||
|
BOOLEAN localizedTextOnly;
|
||||||
|
|
||||||
static void XMLCALL
|
static void XMLCALL
|
||||||
itemStartElementHandle(void *userData, const char *name, const char **atts)
|
itemStartElementHandle(void *userData, const char *name, const char **atts)
|
||||||
{
|
{
|
||||||
@@ -70,7 +72,8 @@ itemStartElementHandle(void *userData, const char *name, const char **atts)
|
|||||||
{
|
{
|
||||||
pData->curElement = ELEMENT_LIST;
|
pData->curElement = ELEMENT_LIST;
|
||||||
|
|
||||||
memset(pData->curArray,0,sizeof(INVTYPE)*pData->maxArraySize);
|
if ( !localizedTextOnly )
|
||||||
|
memset(pData->curArray,0,sizeof(INVTYPE)*pData->maxArraySize);
|
||||||
|
|
||||||
pData->maxReadDepth++; //we are not skipping this element
|
pData->maxReadDepth++; //we are not skipping this element
|
||||||
}
|
}
|
||||||
@@ -78,7 +81,8 @@ itemStartElementHandle(void *userData, const char *name, const char **atts)
|
|||||||
{
|
{
|
||||||
pData->curElement = ELEMENT;
|
pData->curElement = ELEMENT;
|
||||||
|
|
||||||
memset(&pData->curItem,0,sizeof(INVTYPE));
|
if ( !localizedTextOnly )
|
||||||
|
memset(&pData->curItem,0,sizeof(INVTYPE));
|
||||||
|
|
||||||
pData->maxReadDepth++; //we are not skipping this element
|
pData->maxReadDepth++; //we are not skipping this element
|
||||||
}
|
}
|
||||||
@@ -250,9 +254,8 @@ itemEndElementHandle(void *userData, const char *name)
|
|||||||
{
|
{
|
||||||
if ( pData->curItem.usItemClass != 0 )
|
if ( pData->curItem.usItemClass != 0 )
|
||||||
pData->curArray[pData->curItem.uiIndex] = pData->curItem; //write the item into the table
|
pData->curArray[pData->curItem.uiIndex] = pData->curItem; //write the item into the table
|
||||||
else if ( sizeof(pData->curItem.szItemName)>0 )
|
else if ( sizeof(pData->curItem.szItemName)>0 && localizedTextOnly )
|
||||||
{
|
{
|
||||||
//Madd: needs testing
|
|
||||||
strcpy(pData->curArray[pData->curItem.uiIndex].szItemName,pData->curItem.szItemName);
|
strcpy(pData->curArray[pData->curItem.uiIndex].szItemName,pData->curItem.szItemName);
|
||||||
strcpy(pData->curArray[pData->curItem.uiIndex].szLongItemName,pData->curItem.szLongItemName);
|
strcpy(pData->curArray[pData->curItem.uiIndex].szLongItemName,pData->curItem.szLongItemName);
|
||||||
strcpy(pData->curArray[pData->curItem.uiIndex].szBRName,pData->curItem.szBRName);
|
strcpy(pData->curArray[pData->curItem.uiIndex].szBRName,pData->curItem.szBRName);
|
||||||
@@ -946,7 +949,7 @@ itemEndElementHandle(void *userData, const char *name)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN ReadInItemStats(STR fileName)
|
BOOLEAN ReadInItemStats(STR fileName, BOOLEAN localizedVersion )
|
||||||
{
|
{
|
||||||
HWFILE hFile;
|
HWFILE hFile;
|
||||||
UINT32 uiBytesRead;
|
UINT32 uiBytesRead;
|
||||||
@@ -955,6 +958,8 @@ BOOLEAN ReadInItemStats(STR fileName)
|
|||||||
XML_Parser parser = XML_ParserCreate(NULL);
|
XML_Parser parser = XML_ParserCreate(NULL);
|
||||||
|
|
||||||
itemParseData pData;
|
itemParseData pData;
|
||||||
|
|
||||||
|
localizedTextOnly = localizedVersion;
|
||||||
|
|
||||||
DebugMsg(TOPIC_JA2, DBG_LEVEL_3, "Loading Items.xml" );
|
DebugMsg(TOPIC_JA2, DBG_LEVEL_3, "Loading Items.xml" );
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user