- New Externalization: Item size and weapon limits (by JMich)

o 3 new ja2_options.ini properties: MAX_ITEM_SIZE, MAX_WEAPON_SIZE, OLD_INVENTORY_ITEM_NUMBER
o see here: http://www.ja-galaxy-forum.com/board/ubbthreads.php?ubb=showflat&Number=276115&page=1

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@4907 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Wanne
2012-02-01 16:15:35 +00:00
parent fce6a88f1a
commit 873e716ec1
6 changed files with 65 additions and 11 deletions
+49 -6
View File
@@ -7,6 +7,7 @@
#include "Debug Control.h"
#include "expat.h"
#include "XML.h"
#include "GameSettings.h"
#endif
struct
@@ -23,8 +24,24 @@ struct
}
typedef lbepocketParseData;
BOOLEAN onlyLocalizedText;
BOOLEAN onlyLocalizedText;
BOOLEAN lbepocketStartElementHandleLoop(const XML_Char *name, lbepocketParseData * pData) //Tais
{
UINT8 i=0;
CHAR8 str1 [40] = "";
CHAR8 str2 [40] = "";
for (i=0; i<=gGameExternalOptions.guiMaxItemSize;i++)
{
sprintf(str1,"ItemCapacityPerSize.%d",i);
sprintf(str2,"ItemCapacityPerSize%d",i);
if(strcmp(name, str1)==0||strcmp(name, str2)==0)
{
return true;
}
}
return false;
}
static void XMLCALL
lbepocketStartElementHandle(void *userData, const XML_Char *name, const XML_Char **atts)
{
@@ -49,12 +66,14 @@ lbepocketStartElementHandle(void *userData, const XML_Char *name, const XML_Char
pData->maxReadDepth++; //we are not skipping this element
}
else if(pData->curElement == ELEMENT &&
else if(pData->curElement == ELEMENT &&
(strcmp(name, "pIndex") == 0 ||
strcmp(name, "pName") == 0 ||
strcmp(name, "pSilhouette") == 0 ||
strcmp(name, "pType") == 0 ||
strcmp(name, "pRestriction") == 0 ||
lbepocketStartElementHandleLoop(name, pData)))
/* JMich - These are no longer needed
strcmp(name, "ItemCapacityPerSize.0") == 0 || strcmp(name, "ItemCapacityPerSize0") == 0 ||
strcmp(name, "ItemCapacityPerSize.1") == 0 || strcmp(name, "ItemCapacityPerSize1") == 0 ||
strcmp(name, "ItemCapacityPerSize.2") == 0 || strcmp(name, "ItemCapacityPerSize2") == 0 ||
@@ -89,7 +108,7 @@ lbepocketStartElementHandle(void *userData, const XML_Char *name, const XML_Char
strcmp(name, "ItemCapacityPerSize.31") == 0 || strcmp(name, "ItemCapacityPerSize31") == 0 ||
strcmp(name, "ItemCapacityPerSize.32") == 0 || strcmp(name, "ItemCapacityPerSize32") == 0 ||
strcmp(name, "ItemCapacityPerSize.33") == 0 || strcmp(name, "ItemCapacityPerSize33") == 0 ||
strcmp(name, "ItemCapacityPerSize.34") == 0 || strcmp(name, "ItemCapacityPerSize34") == 0 ))
strcmp(name, "ItemCapacityPerSize.34") == 0 || strcmp(name, "ItemCapacityPerSize34") == 0 ))*/
{
pData->curElement = ELEMENT_PROPERTY;
@@ -119,7 +138,10 @@ lbepocketCharacterDataHandle(void *userData, const XML_Char *str, int len)
static void XMLCALL
lbepocketEndElementHandle(void *userData, const XML_Char *name)
{
lbepocketParseData * pData = (lbepocketParseData *)userData;
UINT8 i=0;
CHAR8 str1 [40] = "";
CHAR8 str2 [40] = "";
lbepocketParseData * pData = (lbepocketParseData *)userData;
if(pData->currentDepth <= pData->maxReadDepth) //we're at the end of an element that we've been reading
{
@@ -170,7 +192,22 @@ lbepocketEndElementHandle(void *userData, const XML_Char *name)
{
pData->curElement = ELEMENT;
pData->curLBEPocket.pRestriction = (UINT32) atol(pData->szCharData);
} //Tais fixed this.
else
{
for (i=0; i<=gGameExternalOptions.guiMaxItemSize;i++)
{
sprintf(str1,"ItemCapacityPerSize.%d",i);
sprintf(str2,"ItemCapacityPerSize%d",i);
if(strcmp(name, str1)==0||strcmp(name, str2)==0)
{
pData->curElement = ELEMENT;
pData->curLBEPocket.ItemCapacityPerSize[i] = (UINT8) atol(pData->szCharData);
break;
}
}
}
/* JMich - these are no longer needed
else if(strcmp(name, "ItemCapacityPerSize.0") == 0 || strcmp(name, "ItemCapacityPerSize0") == 0)
{
pData->curElement = ELEMENT;
@@ -346,7 +383,7 @@ lbepocketEndElementHandle(void *userData, const XML_Char *name)
pData->curElement = ELEMENT;
pData->curLBEPocket.ItemCapacityPerSize[34] = (UINT8) atol(pData->szCharData);
}
*/
pData->maxReadDepth--;
}
@@ -423,6 +460,7 @@ BOOLEAN ReadInLBEPocketStats(STR fileName, BOOLEAN localizedVersion)
}
BOOLEAN WriteLBEPocketEquipmentStats()
{
UINT8 i;
//DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"writelbepocketsstats");
HWFILE hFile;
@@ -445,6 +483,11 @@ BOOLEAN WriteLBEPocketEquipmentStats()
FilePrintf(hFile,"\t\t<pSilhouette>%d</pSilhouette>\r\n", LBEPocketType[cnt].pSilhouette );
FilePrintf(hFile,"\t\t<pType>%d</pType>\r\n", LBEPocketType[cnt].pType );
FilePrintf(hFile,"\t\t<pRestriction>%d</pRestriction>\r\n", LBEPocketType[cnt].pRestriction );
for(i=0;i<=gGameExternalOptions.guiMaxItemSize;i++) //JMich
{
FilePrintf(hFile,"\t\t<ItemCapacityPerSize%d>%d</ItemCapacityPerSize%d>\r\n", i,LBEPocketType[cnt].ItemCapacityPerSize[i],i );
}
/* JMich - these are no longer needed
FilePrintf(hFile,"\t\t<ItemCapacityPerSize0>%d</ItemCapacityPerSize0>\r\n", LBEPocketType[cnt].ItemCapacityPerSize[0] );
FilePrintf(hFile,"\t\t<ItemCapacityPerSize1>%d</ItemCapacityPerSize1>\r\n", LBEPocketType[cnt].ItemCapacityPerSize[1] );
FilePrintf(hFile,"\t\t<ItemCapacityPerSize2>%d</ItemCapacityPerSize2>\r\n", LBEPocketType[cnt].ItemCapacityPerSize[2] );
@@ -480,7 +523,7 @@ BOOLEAN WriteLBEPocketEquipmentStats()
FilePrintf(hFile,"\t\t<ItemCapacityPerSize32>%d</ItemCapacityPerSize32>\r\n", LBEPocketType[cnt].ItemCapacityPerSize[32] );
FilePrintf(hFile,"\t\t<ItemCapacityPerSize33>%d</ItemCapacityPerSize33>\r\n", LBEPocketType[cnt].ItemCapacityPerSize[33] );
FilePrintf(hFile,"\t\t<ItemCapacityPerSize34>%d</ItemCapacityPerSize34>\r\n", LBEPocketType[cnt].ItemCapacityPerSize[34] );
*/
FilePrintf(hFile,"\t</POCKET>\r\n");
}
FilePrintf(hFile,"</POCKETLIST>\r\n");