Update inventory arrays to be vectors. Add class for inventory. Change some structs that use inventories to classes to provide constructors, destructors, etc. Note that with this update all file operations should still be compatible with previous files.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@968 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
SpaceViking
2007-06-15 02:56:45 +00:00
parent 88b9b38bd6
commit 183ee2005f
2 changed files with 18 additions and 11 deletions
+12 -7
View File
@@ -1972,8 +1972,8 @@ void InitDetailedPlacementForMerc()
{
Assert( !gpSelected->pDetailedPlacement );
gpSelected->pDetailedPlacement = (SOLDIERCREATE_STRUCT*)MemAlloc(sizeof(SOLDIERCREATE_STRUCT));
// WDS - Clean up inventory handling
gpSelected->pDetailedPlacement = new (MemAlloc(SIZEOF_SOLDIERCREATE_STRUCT)) SOLDIERCREATE_STRUCT;
Assert( gpSelected->pDetailedPlacement );
gpSelected->pBasicPlacement->fDetailedPlacement = TRUE;
@@ -3604,7 +3604,8 @@ void CopyMercPlacement( INT32 iMapIndex )
memcpy( &gSaveBufferBasicPlacement, gpSelected->pBasicPlacement, sizeof( BASIC_SOLDIERCREATE_STRUCT ) );
if( gSaveBufferBasicPlacement.fDetailedPlacement )
{
memcpy( &gSaveBufferDetailedPlacement, gpSelected->pDetailedPlacement, sizeof( SOLDIERCREATE_STRUCT ) );
// WDS - Clean up inventory handling
gSaveBufferDetailedPlacement = *gpSelected->pDetailedPlacement;
}
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Placement copied." );
}
@@ -3667,7 +3668,8 @@ void PasteMercPlacement( INT32 iMapIndex )
//Generate detailed placement information given the temp placement information.
if( gTempBasicPlacement.fDetailedPlacement )
{
memcpy( &gTempDetailedPlacement, &gSaveBufferDetailedPlacement, sizeof( SOLDIERCREATE_STRUCT ) );
// WDS - Clean up inventory handling
gTempDetailedPlacement = *gSaveBufferDetailedPlacement
}
else
{
@@ -3684,7 +3686,8 @@ void PasteMercPlacement( INT32 iMapIndex )
}
else
{
memcpy( &tempDetailedPlacement, &gTempDetailedPlacement, sizeof( SOLDIERCREATE_STRUCT ) );
// WDS - Clean up inventory handling
tempDetailedPlacement = gTempDetailedPlacement;
}
//Create the soldier, but don't place it yet.
@@ -3703,14 +3706,16 @@ void PasteMercPlacement( INT32 iMapIndex )
//allocate memory for new static detailed placement
gTempBasicPlacement.fDetailedPlacement = TRUE;
gTempBasicPlacement.fPriorityExistance = gSaveBufferBasicPlacement.fPriorityExistance;
pNode->pDetailedPlacement = (SOLDIERCREATE_STRUCT*)MemAlloc( sizeof( SOLDIERCREATE_STRUCT ) );
// WDS - Clean up inventory handling
pNode->pDetailedPlacement = new (MemAlloc( SIZEOF_SOLDIERCREATE_STRUCT )) SOLDIERCREATE_STRUCT;
if( !pNode->pDetailedPlacement )
{
AssertMsg( 0, "Failed to allocate memory for new detailed placement in PasteMercPlacement." );
return;
}
//copy the file information from temp var to node in list.
memcpy( pNode->pDetailedPlacement, &gSaveBufferDetailedPlacement, sizeof( SOLDIERCREATE_STRUCT ) );
// WDS - Clean up inventory handling
*pNode->pDetailedPlacement = gSaveBufferDetailedPlacement;
}
//Add the soldier to physically appear on the map now.
+6 -4
View File
@@ -2998,8 +2998,9 @@ void SetupItemDetailsMode( BOOLEAN fAllowRecursion )
}
if( basic.fDetailedPlacement )
{ //skip static priority placement
FileRead( hfile, &priority, sizeof( SOLDIERCREATE_STRUCT ), &uiNumBytesRead );
if( uiNumBytesRead != sizeof( SOLDIERCREATE_STRUCT ) )
// WDS - Clean up inventory handling
FileRead( hfile, &priority, SIZEOF_SOLDIERCREATE_STRUCT, &uiNumBytesRead );
if( uiNumBytesRead != SIZEOF_SOLDIERCREATE_STRUCT )
{ //Invalid situation.
FileClose( hfile );
return;
@@ -3062,8 +3063,9 @@ void SetupItemDetailsMode( BOOLEAN fAllowRecursion )
}
if( basic.fDetailedPlacement )
{ //skip static priority placement
FileRead( hfile, &priority, sizeof( SOLDIERCREATE_STRUCT ), &uiNumBytesRead );
if( uiNumBytesRead != sizeof( SOLDIERCREATE_STRUCT ) )
// WDS - Clean up inventory handling
FileRead( hfile, &priority, SIZEOF_SOLDIERCREATE_STRUCT, &uiNumBytesRead );
if( uiNumBytesRead != SIZEOF_SOLDIERCREATE_STRUCT )
{ //Invalid situation.
FileClose( hfile );
return;