From 183ee2005ff448923dad7c0c97adf9a34b3101ac Mon Sep 17 00:00:00 2001 From: SpaceViking Date: Fri, 15 Jun 2007 02:56:45 +0000 Subject: [PATCH] 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 --- Editor/EditorMercs.cpp | 19 ++++++++++++------- Editor/Sector Summary.cpp | 10 ++++++---- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/Editor/EditorMercs.cpp b/Editor/EditorMercs.cpp index 94e57cea..6d164bc8 100644 --- a/Editor/EditorMercs.cpp +++ b/Editor/EditorMercs.cpp @@ -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. diff --git a/Editor/Sector Summary.cpp b/Editor/Sector Summary.cpp index 97f4c07d..1c58ad7b 100644 --- a/Editor/Sector Summary.cpp +++ b/Editor/Sector Summary.cpp @@ -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;