mirror of
https://github.com/1dot13/source.git
synced 2026-09-16 14:47:17 +02:00
Merged from revision: 7525
- Fixed bug with game selecting helicopter loading screen when reloading game (by anv) - Fixed autoplace stacks logic from sector inventory on r7380 commit (by Buggler) git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7526 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+2
-1
@@ -19,6 +19,7 @@
|
|||||||
#include "Strategic Movement.h"
|
#include "Strategic Movement.h"
|
||||||
#include "UndergroundInit.h"
|
#include "UndergroundInit.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include "strategicmap.h"
|
||||||
|
|
||||||
extern HVSURFACE ghFrameBuffer;
|
extern HVSURFACE ghFrameBuffer;
|
||||||
extern BOOLEAN gfSchedulesHosed;
|
extern BOOLEAN gfSchedulesHosed;
|
||||||
@@ -358,9 +359,9 @@ void DisplayLoadScreenWithID( UINT8 ubLoadScreenID )
|
|||||||
|
|
||||||
vs_desc.fCreateFlags = VSURFACE_CREATE_FROMFILE | VSURFACE_SYSTEM_MEM_USAGE | VSURFACE_CREATE_FROMPNG_FALLBACK;
|
vs_desc.fCreateFlags = VSURFACE_CREATE_FROMFILE | VSURFACE_SYSTEM_MEM_USAGE | VSURFACE_CREATE_FROMPNG_FALLBACK;
|
||||||
|
|
||||||
|
szSector = szSectorMap [gWorldSectorY][gWorldSectorX];
|
||||||
const BOOLEAN fExternalLS = (szSector != NULL) && ((DAY <= ubLoadScreenID && ubLoadScreenID <= NIGHT_ALT) || (ubLoadScreenID == UNDERGROUND));
|
const BOOLEAN fExternalLS = (szSector != NULL) && ((DAY <= ubLoadScreenID && ubLoadScreenID <= NIGHT_ALT) || (ubLoadScreenID == UNDERGROUND));
|
||||||
|
|
||||||
|
|
||||||
if (fExternalLS)
|
if (fExternalLS)
|
||||||
{
|
{
|
||||||
// Get the image path
|
// Get the image path
|
||||||
|
|||||||
+65
-49
@@ -7009,19 +7009,19 @@ BOOLEAN AutoPlaceObject( SOLDIERTYPE * pSoldier, OBJECTTYPE * pObj, BOOLEAN fNew
|
|||||||
if (pSoldier->inv[HANDPOS].exists() == false)
|
if (pSoldier->inv[HANDPOS].exists() == false)
|
||||||
{
|
{
|
||||||
// put the one-handed weapon in the guy's hand...
|
// put the one-handed weapon in the guy's hand...
|
||||||
PlaceObject( pSoldier, HANDPOS, pObj, fNewItem );
|
if( PlaceObject( pSoldier, HANDPOS, pObj, fNewItem ) )
|
||||||
if ( pObj->exists() == false || fStackOrSingleSlot )
|
|
||||||
{
|
{
|
||||||
return( TRUE );
|
if ( pObj->exists() == false || fStackOrSingleSlot )
|
||||||
|
return( TRUE );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( !(Item[pSoldier->inv[HANDPOS].usItem].twohanded ) && pSoldier->inv[SECONDHANDPOS].exists() == false)
|
else if ( !(Item[pSoldier->inv[HANDPOS].usItem].twohanded ) && pSoldier->inv[SECONDHANDPOS].exists() == false)
|
||||||
{
|
{
|
||||||
// put the one-handed weapon in the guy's 2nd hand...
|
// put the one-handed weapon in the guy's 2nd hand...
|
||||||
PlaceObject( pSoldier, SECONDHANDPOS, pObj, fNewItem );
|
if( PlaceObject( pSoldier, SECONDHANDPOS, pObj, fNewItem ) )
|
||||||
if ( pObj->exists() == false || fStackOrSingleSlot )
|
|
||||||
{
|
{
|
||||||
return( TRUE );
|
if ( pObj->exists() == false || fStackOrSingleSlot )
|
||||||
|
return( TRUE );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// two-handed objects are best handled in the main loop for large objects,
|
// two-handed objects are best handled in the main loop for large objects,
|
||||||
@@ -7035,18 +7035,22 @@ BOOLEAN AutoPlaceObject( SOLDIERTYPE * pSoldier, OBJECTTYPE * pObj, BOOLEAN fNew
|
|||||||
case IC_GUN:
|
case IC_GUN:
|
||||||
if(pSoldier->inv[GUNSLINGPOCKPOS].exists() == false) // Long Gun use Gun Sling
|
if(pSoldier->inv[GUNSLINGPOCKPOS].exists() == false) // Long Gun use Gun Sling
|
||||||
{
|
{
|
||||||
PlaceObject( pSoldier, GUNSLINGPOCKPOS, pObj, fNewItem );
|
if( PlaceObject( pSoldier, GUNSLINGPOCKPOS, pObj, fNewItem ) )
|
||||||
if (pObj->exists() == false || fStackOrSingleSlot)
|
{
|
||||||
return( TRUE );
|
if (pObj->exists() == false || fStackOrSingleSlot)
|
||||||
|
return( TRUE );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case IC_THROWING_KNIFE:
|
case IC_THROWING_KNIFE:
|
||||||
case IC_BLADE:
|
case IC_BLADE:
|
||||||
if(pSoldier->inv[KNIFEPOCKPOS].exists() == false) // Knife
|
if(pSoldier->inv[KNIFEPOCKPOS].exists() == false) // Knife
|
||||||
{
|
{
|
||||||
PlaceObject( pSoldier, KNIFEPOCKPOS, pObj, fNewItem );
|
if( PlaceObject( pSoldier, KNIFEPOCKPOS, pObj, fNewItem ) )
|
||||||
if (pObj->exists() == false || fStackOrSingleSlot)
|
{
|
||||||
return( TRUE );
|
if (pObj->exists() == false || fStackOrSingleSlot)
|
||||||
|
return( TRUE );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -7059,10 +7063,10 @@ BOOLEAN AutoPlaceObject( SOLDIERTYPE * pSoldier, OBJECTTYPE * pObj, BOOLEAN fNew
|
|||||||
if (pSoldier->inv[VESTPOS].exists() == false)
|
if (pSoldier->inv[VESTPOS].exists() == false)
|
||||||
{
|
{
|
||||||
// put on the armour!
|
// put on the armour!
|
||||||
PlaceObject( pSoldier, VESTPOS, pObj, fNewItem );
|
if( PlaceObject( pSoldier, VESTPOS, pObj, fNewItem ) )
|
||||||
if ( pObj->exists() == false || fStackOrSingleSlot )
|
|
||||||
{
|
{
|
||||||
return( TRUE );
|
if ( pObj->exists() == false || fStackOrSingleSlot )
|
||||||
|
return( TRUE );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -7079,21 +7083,21 @@ BOOLEAN AutoPlaceObject( SOLDIERTYPE * pSoldier, OBJECTTYPE * pObj, BOOLEAN fNew
|
|||||||
if (pSoldier->inv[LEGPOS].exists() == false)
|
if (pSoldier->inv[LEGPOS].exists() == false)
|
||||||
{
|
{
|
||||||
// put on the armour!
|
// put on the armour!
|
||||||
PlaceObject( pSoldier, LEGPOS, pObj, fNewItem );
|
if( PlaceObject( pSoldier, LEGPOS, pObj, fNewItem ) )
|
||||||
}
|
{
|
||||||
if ( pObj->exists() == false || fStackOrSingleSlot )
|
if ( pObj->exists() == false || fStackOrSingleSlot )
|
||||||
{
|
return( TRUE );
|
||||||
return( TRUE );
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ARMOURCLASS_HELMET:
|
case ARMOURCLASS_HELMET:
|
||||||
if (pSoldier->inv[HELMETPOS].exists() == false)
|
if (pSoldier->inv[HELMETPOS].exists() == false)
|
||||||
{
|
{
|
||||||
// put on the armour!
|
// put on the armour!
|
||||||
PlaceObject( pSoldier, HELMETPOS, pObj, fNewItem );
|
if( PlaceObject( pSoldier, HELMETPOS, pObj, fNewItem ) )
|
||||||
if ( pObj->exists() == false || fStackOrSingleSlot )
|
|
||||||
{
|
{
|
||||||
return( TRUE );
|
if ( pObj->exists() == false || fStackOrSingleSlot )
|
||||||
|
return( TRUE );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -7105,18 +7109,18 @@ BOOLEAN AutoPlaceObject( SOLDIERTYPE * pSoldier, OBJECTTYPE * pObj, BOOLEAN fNew
|
|||||||
case IC_FACE:
|
case IC_FACE:
|
||||||
if ( (pSoldier->inv[HEAD1POS].exists() == false) && CompatibleFaceItem( pObj->usItem, pSoldier->inv[HEAD2POS].usItem ) )
|
if ( (pSoldier->inv[HEAD1POS].exists() == false) && CompatibleFaceItem( pObj->usItem, pSoldier->inv[HEAD2POS].usItem ) )
|
||||||
{
|
{
|
||||||
PlaceObject( pSoldier, HEAD1POS, pObj, fNewItem );
|
if( PlaceObject( pSoldier, HEAD1POS, pObj, fNewItem ) )
|
||||||
if ( pObj->exists() == false || fStackOrSingleSlot )
|
|
||||||
{
|
{
|
||||||
return( TRUE );
|
if ( pObj->exists() == false || fStackOrSingleSlot )
|
||||||
|
return( TRUE );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( (pSoldier->inv[HEAD2POS].exists() == false) && CompatibleFaceItem( pObj->usItem, pSoldier->inv[HEAD1POS].usItem ) )
|
else if ( (pSoldier->inv[HEAD2POS].exists() == false) && CompatibleFaceItem( pObj->usItem, pSoldier->inv[HEAD1POS].usItem ) )
|
||||||
{
|
{
|
||||||
PlaceObject( pSoldier, HEAD2POS, pObj, fNewItem );
|
if( PlaceObject( pSoldier, HEAD2POS, pObj, fNewItem ) )
|
||||||
if ( pObj->exists() == false || fStackOrSingleSlot )
|
|
||||||
{
|
{
|
||||||
return( TRUE );
|
if ( pObj->exists() == false || fStackOrSingleSlot )
|
||||||
|
return( TRUE );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -7128,22 +7132,30 @@ BOOLEAN AutoPlaceObject( SOLDIERTYPE * pSoldier, OBJECTTYPE * pObj, BOOLEAN fNew
|
|||||||
lbeClass = LoadBearingEquipment[pItem->ubClassIndex].lbeClass;
|
lbeClass = LoadBearingEquipment[pItem->ubClassIndex].lbeClass;
|
||||||
if(lbeClass == THIGH_PACK) // Thigh pack
|
if(lbeClass == THIGH_PACK) // Thigh pack
|
||||||
{
|
{
|
||||||
if (pSoldier->inv[LTHIGHPOCKPOS].exists() == false) {
|
if (pSoldier->inv[LTHIGHPOCKPOS].exists() == false)
|
||||||
PlaceObject( pSoldier, LTHIGHPOCKPOS, pObj, fNewItem );
|
{
|
||||||
if(pObj->exists() == false || fStackOrSingleSlot)
|
if( PlaceObject( pSoldier, LTHIGHPOCKPOS, pObj, fNewItem ) )
|
||||||
return( TRUE );
|
{
|
||||||
|
if(pObj->exists() == false || fStackOrSingleSlot)
|
||||||
|
return( TRUE );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (pSoldier->inv[RTHIGHPOCKPOS].exists() == false) {
|
if (pSoldier->inv[RTHIGHPOCKPOS].exists() == false)
|
||||||
PlaceObject( pSoldier, RTHIGHPOCKPOS, pObj, fNewItem );
|
{
|
||||||
if(pObj->exists() == false || fStackOrSingleSlot)
|
if( PlaceObject( pSoldier, RTHIGHPOCKPOS, pObj, fNewItem ) )
|
||||||
return( TRUE );
|
{
|
||||||
|
if(pObj->exists() == false || fStackOrSingleSlot)
|
||||||
|
return( TRUE );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(pSoldier->inv[VESTPOCKPOS].exists() == false && lbeClass == VEST_PACK) // Vest pack
|
else if(pSoldier->inv[VESTPOCKPOS].exists() == false && lbeClass == VEST_PACK) // Vest pack
|
||||||
{
|
{
|
||||||
PlaceObject( pSoldier, VESTPOCKPOS, pObj, fNewItem );
|
if( PlaceObject( pSoldier, VESTPOCKPOS, pObj, fNewItem ) )
|
||||||
if(pObj->exists() == false || fStackOrSingleSlot)
|
{
|
||||||
return( TRUE );
|
if(pObj->exists() == false || fStackOrSingleSlot)
|
||||||
|
return( TRUE );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(pSoldier->inv[CPACKPOCKPOS].exists() == false && lbeClass == COMBAT_PACK) // Combat pack
|
else if(pSoldier->inv[CPACKPOCKPOS].exists() == false && lbeClass == COMBAT_PACK) // Combat pack
|
||||||
{
|
{
|
||||||
@@ -7152,9 +7164,11 @@ BOOLEAN AutoPlaceObject( SOLDIERTYPE * pSoldier, OBJECTTYPE * pObj, BOOLEAN fNew
|
|||||||
//DBrot: changed to bitwise comparison
|
//DBrot: changed to bitwise comparison
|
||||||
if((pSoldier->inv[BPACKPOCKPOS].exists() == true && packCombo != 0 && (backCombo & packCombo)) || pSoldier->inv[BPACKPOCKPOS].exists() == false)
|
if((pSoldier->inv[BPACKPOCKPOS].exists() == true && packCombo != 0 && (backCombo & packCombo)) || pSoldier->inv[BPACKPOCKPOS].exists() == false)
|
||||||
{
|
{
|
||||||
PlaceObject( pSoldier, CPACKPOCKPOS, pObj, fNewItem );
|
if( PlaceObject( pSoldier, CPACKPOCKPOS, pObj, fNewItem ) )
|
||||||
if(pObj->exists() == false || fStackOrSingleSlot)
|
{
|
||||||
return( TRUE );
|
if(pObj->exists() == false || fStackOrSingleSlot)
|
||||||
|
return( TRUE );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(pSoldier->inv[BPACKPOCKPOS].exists() == false && lbeClass == BACKPACK) // Backpack
|
else if(pSoldier->inv[BPACKPOCKPOS].exists() == false && lbeClass == BACKPACK) // Backpack
|
||||||
@@ -7167,12 +7181,14 @@ BOOLEAN AutoPlaceObject( SOLDIERTYPE * pSoldier, OBJECTTYPE * pObj, BOOLEAN fNew
|
|||||||
//DBrot: changed to bitwise comparison
|
//DBrot: changed to bitwise comparison
|
||||||
if((pSoldier->inv[CPACKPOCKPOS].exists() == true && backCombo != 0 && (backCombo & packCombo)) || pSoldier->inv[CPACKPOCKPOS].exists() == false)
|
if((pSoldier->inv[CPACKPOCKPOS].exists() == true && backCombo != 0 && (backCombo & packCombo)) || pSoldier->inv[CPACKPOCKPOS].exists() == false)
|
||||||
{
|
{
|
||||||
PlaceObject( pSoldier, BPACKPOCKPOS, pObj, fNewItem );
|
if( PlaceObject( pSoldier, BPACKPOCKPOS, pObj, fNewItem ) )
|
||||||
pSoldier->flags.DropPackFlag = FALSE;
|
{
|
||||||
pSoldier->flags.ZipperFlag = FALSE;
|
pSoldier->flags.DropPackFlag = FALSE;
|
||||||
RenderBackpackButtons(ACTIVATE_BUTTON); /* CHRISL: Needed for new inventory backpack buttons */
|
pSoldier->flags.ZipperFlag = FALSE;
|
||||||
if(pObj->exists() == false || fStackOrSingleSlot)
|
RenderBackpackButtons(ACTIVATE_BUTTON); /* CHRISL: Needed for new inventory backpack buttons */
|
||||||
return( TRUE );
|
if(pObj->exists() == false || fStackOrSingleSlot)
|
||||||
|
return( TRUE );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user