mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
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:
@@ -2075,6 +2075,7 @@ void ChangeBodyType( INT8 bOffset ) //+1 or -1 only
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
SetSoldierAnimationSurface( gpSelected->pSoldier, gpSelected->pSoldier->usAnimState );
|
SetSoldierAnimationSurface( gpSelected->pSoldier, gpSelected->pSoldier->usAnimState );
|
||||||
|
ConvertAniCodeToAniFrame( gpSelected->pSoldier, 0 );
|
||||||
}
|
}
|
||||||
//Update the placement's info as well.
|
//Update the placement's info as well.
|
||||||
gpSelected->pBasicPlacement->bBodyType = (INT8)iIndex;
|
gpSelected->pBasicPlacement->bBodyType = (INT8)iIndex;
|
||||||
@@ -2973,7 +2974,9 @@ void UpdateMercItemSlots()
|
|||||||
{
|
{
|
||||||
if( gpSelected->pDetailedPlacement->ubProfile != NO_PROFILE )
|
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++ )
|
for( x = 0; x < 9; x++ )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -281,7 +281,7 @@ UINT32 ProcessLoadSaveScreenMessageBoxResult()
|
|||||||
RemoveFileDialog();
|
RemoveFileDialog();
|
||||||
return EDIT_SCREEN ;
|
return EDIT_SCREEN ;
|
||||||
}
|
}
|
||||||
Assert( 0 );
|
// Assert( 0 );
|
||||||
return LOADSAVE_SCREEN;
|
return LOADSAVE_SCREEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -262,6 +262,10 @@ UINT32 EditScreenShutdown(void)
|
|||||||
GameShutdownEditorMercsInfo();
|
GameShutdownEditorMercsInfo();
|
||||||
RemoveAllFromUndoList();
|
RemoveAllFromUndoList();
|
||||||
KillClipboard();
|
KillClipboard();
|
||||||
|
if( gfWorldLoaded )
|
||||||
|
{
|
||||||
|
KillItemPoolList();
|
||||||
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ LibraryInitHeader gGameLibaries[ ] =
|
|||||||
//Library Name Can be Init at start
|
//Library Name Can be Init at start
|
||||||
// on cd
|
// on cd
|
||||||
{ "Data.slf", FALSE, TRUE },
|
{ "Data.slf", FALSE, TRUE },
|
||||||
|
{ "Editor.slf", FALSE, FALSE },
|
||||||
{ "Ambient.slf", FALSE, TRUE },
|
{ "Ambient.slf", FALSE, TRUE },
|
||||||
{ "Anims.slf", FALSE, TRUE },
|
{ "Anims.slf", FALSE, TRUE },
|
||||||
{ "BattleSnds.slf", FALSE, TRUE },
|
{ "BattleSnds.slf", FALSE, TRUE },
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
LIBRARY_DATA,
|
LIBRARY_DATA,
|
||||||
|
LIBRARY_EDITOR,
|
||||||
LIBRARY_AMBIENT,
|
LIBRARY_AMBIENT,
|
||||||
LIBRARY_ANIMS,
|
LIBRARY_ANIMS,
|
||||||
LIBRARY_BATTLESNDS,
|
LIBRARY_BATTLESNDS,
|
||||||
|
|||||||
@@ -2082,6 +2082,10 @@ INT32 FindBestPath(SOLDIERTYPE *s , INT16 sDestination, INT8 ubLevel, INT16 usMo
|
|||||||
iOriginationX = iOriginationY = 0;
|
iOriginationX = iOriginationY = 0;
|
||||||
iOrigination = (INT32) s->sGridNo;
|
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)
|
if (iOrigination < 0 || iOrigination > WORLD_MAX)
|
||||||
{
|
{
|
||||||
#ifdef JA2BETAVERSION
|
#ifdef JA2BETAVERSION
|
||||||
|
|||||||
@@ -301,7 +301,7 @@ BOOLEAN LoadSoldiersFromMap( INT8 **hBuffer )
|
|||||||
LOADDATA( &tempDetailedPlacement, *hBuffer, SIZEOF_SOLDIERCREATE_STRUCT_POD );
|
LOADDATA( &tempDetailedPlacement, *hBuffer, SIZEOF_SOLDIERCREATE_STRUCT_POD );
|
||||||
tempDetailedPlacement.CopyOldInventoryToNew();
|
tempDetailedPlacement.CopyOldInventoryToNew();
|
||||||
//allocate memory for new static detailed placement
|
//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 )
|
if( !pNode->pDetailedPlacement )
|
||||||
{
|
{
|
||||||
AssertMsg( 0, "Failed to allocate memory for new detailed placement in LoadSoldiersFromMap." );
|
AssertMsg( 0, "Failed to allocate memory for new detailed placement in LoadSoldiersFromMap." );
|
||||||
|
|||||||
Reference in New Issue
Block a user