mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
- 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:
@@ -620,6 +620,10 @@ void LoadGameExternalOptions()
|
||||
gGameExternalOptions.ubGameMaximumNumberOfCivilians = iniReader.ReadInteger("System Limit Settings","MAX_NUMBER_CIVS_IN_TACTICAL", 32, 16, CODE_MAXIMUM_NUMBER_OF_CIVS);
|
||||
|
||||
gGameExternalOptions.iMaxEnemyGroupSize = iniReader.ReadInteger("System Limit Settings","MAX_STRATEGIC_ENEMY_GROUP_SIZE",20, 10, 100);
|
||||
//JMich
|
||||
gGameExternalOptions.guiMaxItemSize = iniReader.ReadInteger("System Limit Settings","MAX_ITEM_SIZE",34, 0, 250);
|
||||
gGameExternalOptions.guiMaxWeaponSize = iniReader.ReadInteger("System Limit Settings","MAX_WEAPON_SIZE", 9, 0, 100);
|
||||
gGameExternalOptions.guiOIVSizeNumber = iniReader.ReadInteger("System Limit Settings","OLD_INVENTORY_ITEM_NUMBER", 99, 0, 255);
|
||||
|
||||
//################# Data File Settings #################
|
||||
|
||||
|
||||
@@ -416,6 +416,11 @@ typedef struct
|
||||
BOOLEAN autoSaveOnAssertionFailure;
|
||||
UINT32 autoSaveTime;
|
||||
|
||||
//JMich
|
||||
UINT8 guiMaxWeaponSize;
|
||||
UINT8 guiMaxItemSize;
|
||||
UINT8 guiOIVSizeNumber;
|
||||
|
||||
//Sight range
|
||||
UINT32 ubStraightSightRange;
|
||||
UINT32 ubVisDistDecreasePerRainIntensity;
|
||||
|
||||
@@ -46,6 +46,8 @@
|
||||
#define OLD_IMP_FILENAME_SUFFIX ".dat"
|
||||
#define NEW_IMP_FILENAME_SUFFIX ".dat2"
|
||||
|
||||
|
||||
|
||||
//CHRISL: structure needed to store temporary inventory information during IMP creation
|
||||
typedef struct
|
||||
{
|
||||
@@ -479,7 +481,7 @@ void DistributeInitialGear(MERCPROFILESTRUCT *pProfile)
|
||||
{
|
||||
if((UsingNewInventorySystem() == true))
|
||||
{
|
||||
if(Item[pProfile->inv[i]].ItemSize != 99)
|
||||
if(Item[pProfile->inv[i]].ItemSize != gGameExternalOptions.guiOIVSizeNumber) //JMich
|
||||
{
|
||||
tInv[count].inv = pProfile->inv[i];
|
||||
tInv[count].iSize = Item[pProfile->inv[i]].ItemSize;
|
||||
@@ -511,7 +513,7 @@ void DistributeInitialGear(MERCPROFILESTRUCT *pProfile)
|
||||
length = count;
|
||||
count = 0;
|
||||
// Next sort list by size
|
||||
for(j=34; j>=0; j--)
|
||||
for(j=gGameExternalOptions.guiMaxItemSize; j>=0; j--) //JMich
|
||||
{
|
||||
for(i=0; i<length; i++)
|
||||
{
|
||||
|
||||
@@ -416,11 +416,11 @@ LBETYPE::~LBETYPE(){
|
||||
}
|
||||
POCKETTYPE::POCKETTYPE(){
|
||||
memset(this, 0, SIZEOF_POCKETTYPE);
|
||||
ItemCapacityPerSize.resize(35);
|
||||
ItemCapacityPerSize.resize(gGameExternalOptions.guiMaxItemSize+1);//JMich
|
||||
}
|
||||
POCKETTYPE::POCKETTYPE(const POCKETTYPE& src){
|
||||
memcpy(this, &src, SIZEOF_POCKETTYPE);
|
||||
ItemCapacityPerSize.resize(35);
|
||||
ItemCapacityPerSize.resize(gGameExternalOptions.guiMaxItemSize+1);//JMich
|
||||
ItemCapacityPerSize = src.ItemCapacityPerSize;
|
||||
}
|
||||
POCKETTYPE& POCKETTYPE::operator=(const POCKETTYPE& src){
|
||||
|
||||
+1
-1
@@ -1428,7 +1428,7 @@ UINT8 ItemSlotLimit( OBJECTTYPE * pObject, INT16 bSlot, SOLDIERTYPE *pSoldier, B
|
||||
if (UsingNewInventorySystem() == false)
|
||||
return (max(1, ubSlotLimit));
|
||||
else if(pSoldier != NULL && (pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE))
|
||||
return (max(1, LBEPocketType[VEHICLE_POCKET_TYPE].ItemCapacityPerSize[__min(34,Item[pObject->usItem].ItemSize)]));
|
||||
return (max(1, LBEPocketType[VEHICLE_POCKET_TYPE].ItemCapacityPerSize[__min(gGameExternalOptions.guiMaxItemSize,Item[pObject->usItem].ItemSize)])); //JMich
|
||||
else
|
||||
return (max(1, min(255,LBEPocketType[VEHICLE_POCKET_TYPE].ItemCapacityPerSize[__min(34,Item[pObject->usItem].ItemSize)]*4)));
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user