Fixed CTD in editor when changing detailed civ placement from wheelchair to jeep

Fixed memory corruption in detailed placement due to old-inventory behavior
Added Editor.slf to files JA2/Editor will load from
Fixed FindBestPath to not search for a path to NOWHERE


git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@1362 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Overhaul
2007-09-14 07:27:14 +00:00
parent 2a4e963983
commit 5035e83261
7 changed files with 16 additions and 3 deletions
+4 -1
View File
@@ -2075,6 +2075,7 @@ void ChangeBodyType( INT8 bOffset ) //+1 or -1 only
break;
}
SetSoldierAnimationSurface( gpSelected->pSoldier, gpSelected->pSoldier->usAnimState );
ConvertAniCodeToAniFrame( gpSelected->pSoldier, 0 );
}
//Update the placement's info as well.
gpSelected->pBasicPlacement->bBodyType = (INT8)iIndex;
@@ -2973,7 +2974,9 @@ void UpdateMercItemSlots()
{
if( gpSelected->pDetailedPlacement->ubProfile != NO_PROFILE )
{
memcpy( &gpSelected->pDetailedPlacement->Inv, &gpSelected->pSoldier->inv, sizeof( OBJECTTYPE ) * NUM_INV_SLOTS );
// 0verhaul: Inventory is now a C++ class. Bad memcpy! No biscuit!
//memcpy( &gpSelected->pDetailedPlacement->Inv, &gpSelected->pSoldier->inv, sizeof( OBJECTTYPE ) * NUM_INV_SLOTS );
gpSelected->pDetailedPlacement->Inv = gpSelected->pSoldier->inv;
}
for( x = 0; x < 9; x++ )
{
+1 -1
View File
@@ -281,7 +281,7 @@ UINT32 ProcessLoadSaveScreenMessageBoxResult()
RemoveFileDialog();
return EDIT_SCREEN ;
}
Assert( 0 );
// Assert( 0 );
return LOADSAVE_SCREEN;
}
+4
View File
@@ -262,6 +262,10 @@ UINT32 EditScreenShutdown(void)
GameShutdownEditorMercsInfo();
RemoveAllFromUndoList();
KillClipboard();
if( gfWorldLoaded )
{
KillItemPoolList();
}
return TRUE;
}
+1
View File
@@ -4,6 +4,7 @@ LibraryInitHeader gGameLibaries[ ] =
//Library Name Can be Init at start
// on cd
{ "Data.slf", FALSE, TRUE },
{ "Editor.slf", FALSE, FALSE },
{ "Ambient.slf", FALSE, TRUE },
{ "Anims.slf", FALSE, TRUE },
{ "BattleSnds.slf", FALSE, TRUE },
+1
View File
@@ -6,6 +6,7 @@
enum
{
LIBRARY_DATA,
LIBRARY_EDITOR,
LIBRARY_AMBIENT,
LIBRARY_ANIMS,
LIBRARY_BATTLESNDS,
+4
View File
@@ -2082,6 +2082,10 @@ INT32 FindBestPath(SOLDIERTYPE *s , INT16 sDestination, INT8 ubLevel, INT16 usMo
iOriginationX = iOriginationY = 0;
iOrigination = (INT32) s->sGridNo;
if (sDestination == NOWHERE)
{
return 0; // There is no path to nowhere, because everywhere you can go is somewhere!
}
if (iOrigination < 0 || iOrigination > WORLD_MAX)
{
#ifdef JA2BETAVERSION
+1 -1
View File
@@ -301,7 +301,7 @@ BOOLEAN LoadSoldiersFromMap( INT8 **hBuffer )
LOADDATA( &tempDetailedPlacement, *hBuffer, SIZEOF_SOLDIERCREATE_STRUCT_POD );
tempDetailedPlacement.CopyOldInventoryToNew();
//allocate memory for new static detailed placement
pNode->pDetailedPlacement = new (MemAlloc( SIZEOF_SOLDIERCREATE_STRUCT )) SOLDIERCREATE_STRUCT;//(SOLDIERCREATE_STRUCT*)MemAlloc( SIZEOF_SOLDIERCREATE_STRUCT );
pNode->pDetailedPlacement = new SOLDIERCREATE_STRUCT;//(SOLDIERCREATE_STRUCT*)MemAlloc( SIZEOF_SOLDIERCREATE_STRUCT );
if( !pNode->pDetailedPlacement )
{
AssertMsg( 0, "Failed to allocate memory for new detailed placement in LoadSoldiersFromMap." );