mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
New ingame option: Smart tree tops.
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8936 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -219,6 +219,7 @@ BOOLEAN LoadGameSettings()
|
|||||||
gGameSettings.fOptions[TOPTION_SNAP_CURSOR_TO_DOOR] = iniReader.ReadBoolean("JA2 Game Settings","TOPTION_SNAP_CURSOR_TO_DOOR" , TRUE );
|
gGameSettings.fOptions[TOPTION_SNAP_CURSOR_TO_DOOR] = iniReader.ReadBoolean("JA2 Game Settings","TOPTION_SNAP_CURSOR_TO_DOOR" , TRUE );
|
||||||
gGameSettings.fOptions[TOPTION_GLOW_ITEMS] = iniReader.ReadBoolean("JA2 Game Settings","TOPTION_GLOW_ITEMS" , TRUE );
|
gGameSettings.fOptions[TOPTION_GLOW_ITEMS] = iniReader.ReadBoolean("JA2 Game Settings","TOPTION_GLOW_ITEMS" , TRUE );
|
||||||
gGameSettings.fOptions[TOPTION_TOGGLE_TREE_TOPS] = iniReader.ReadBoolean("JA2 Game Settings","TOPTION_TOGGLE_TREE_TOPS" , TRUE );
|
gGameSettings.fOptions[TOPTION_TOGGLE_TREE_TOPS] = iniReader.ReadBoolean("JA2 Game Settings","TOPTION_TOGGLE_TREE_TOPS" , TRUE );
|
||||||
|
gGameSettings.fOptions[TOPTION_SMART_TREE_TOPS] = iniReader.ReadBoolean("JA2 Game Settings", "TOPTION_SMART_TREE_TOPS" , FALSE );
|
||||||
gGameSettings.fOptions[TOPTION_TOGGLE_WIREFRAME] = iniReader.ReadBoolean("JA2 Game Settings","TOPTION_TOGGLE_WIREFRAME" , TRUE );
|
gGameSettings.fOptions[TOPTION_TOGGLE_WIREFRAME] = iniReader.ReadBoolean("JA2 Game Settings","TOPTION_TOGGLE_WIREFRAME" , TRUE );
|
||||||
gGameSettings.fOptions[TOPTION_3D_CURSOR] = iniReader.ReadBoolean("JA2 Game Settings","TOPTION_3D_CURSOR" , FALSE );
|
gGameSettings.fOptions[TOPTION_3D_CURSOR] = iniReader.ReadBoolean("JA2 Game Settings","TOPTION_3D_CURSOR" , FALSE );
|
||||||
gGameSettings.fOptions[TOPTION_CTH_CURSOR] = iniReader.ReadBoolean("JA2 Game Settings","TOPTION_CTH_CURSOR" , TRUE );
|
gGameSettings.fOptions[TOPTION_CTH_CURSOR] = iniReader.ReadBoolean("JA2 Game Settings","TOPTION_CTH_CURSOR" , TRUE );
|
||||||
@@ -436,6 +437,7 @@ BOOLEAN SaveGameSettings()
|
|||||||
settings << "TOPTION_SNAP_CURSOR_TO_DOOR = " << (gGameSettings.fOptions[TOPTION_SNAP_CURSOR_TO_DOOR] ? "TRUE" : "FALSE" ) << endl;
|
settings << "TOPTION_SNAP_CURSOR_TO_DOOR = " << (gGameSettings.fOptions[TOPTION_SNAP_CURSOR_TO_DOOR] ? "TRUE" : "FALSE" ) << endl;
|
||||||
settings << "TOPTION_GLOW_ITEMS = " << (gGameSettings.fOptions[TOPTION_GLOW_ITEMS] ? "TRUE" : "FALSE" ) << endl;
|
settings << "TOPTION_GLOW_ITEMS = " << (gGameSettings.fOptions[TOPTION_GLOW_ITEMS] ? "TRUE" : "FALSE" ) << endl;
|
||||||
settings << "TOPTION_TOGGLE_TREE_TOPS = " << (gGameSettings.fOptions[TOPTION_TOGGLE_TREE_TOPS] ? "TRUE" : "FALSE" ) << endl;
|
settings << "TOPTION_TOGGLE_TREE_TOPS = " << (gGameSettings.fOptions[TOPTION_TOGGLE_TREE_TOPS] ? "TRUE" : "FALSE" ) << endl;
|
||||||
|
settings << "TOPTION_SMART_TREE_TOPS = " << (gGameSettings.fOptions[TOPTION_SMART_TREE_TOPS] ? "TRUE" : "FALSE" ) << endl;
|
||||||
settings << "TOPTION_TOGGLE_WIREFRAME = " << (gGameSettings.fOptions[TOPTION_TOGGLE_WIREFRAME] ? "TRUE" : "FALSE" ) << endl;
|
settings << "TOPTION_TOGGLE_WIREFRAME = " << (gGameSettings.fOptions[TOPTION_TOGGLE_WIREFRAME] ? "TRUE" : "FALSE" ) << endl;
|
||||||
settings << "TOPTION_3D_CURSOR = " << (gGameSettings.fOptions[TOPTION_3D_CURSOR] ? "TRUE" : "FALSE" ) << endl;
|
settings << "TOPTION_3D_CURSOR = " << (gGameSettings.fOptions[TOPTION_3D_CURSOR] ? "TRUE" : "FALSE" ) << endl;
|
||||||
settings << "TOPTION_CTH_CURSOR = " << (gGameSettings.fOptions[TOPTION_CTH_CURSOR] ? "TRUE" : "FALSE" ) << endl;
|
settings << "TOPTION_CTH_CURSOR = " << (gGameSettings.fOptions[TOPTION_CTH_CURSOR] ? "TRUE" : "FALSE" ) << endl;
|
||||||
@@ -551,6 +553,7 @@ void InitGameSettings()
|
|||||||
gGameSettings.fOptions[ TOPTION_SNAP_CURSOR_TO_DOOR ] = TRUE;
|
gGameSettings.fOptions[ TOPTION_SNAP_CURSOR_TO_DOOR ] = TRUE;
|
||||||
gGameSettings.fOptions[ TOPTION_GLOW_ITEMS ] = TRUE;
|
gGameSettings.fOptions[ TOPTION_GLOW_ITEMS ] = TRUE;
|
||||||
gGameSettings.fOptions[ TOPTION_TOGGLE_TREE_TOPS ] = TRUE;
|
gGameSettings.fOptions[ TOPTION_TOGGLE_TREE_TOPS ] = TRUE;
|
||||||
|
gGameSettings.fOptions[ TOPTION_SMART_TREE_TOPS ] = FALSE;
|
||||||
gGameSettings.fOptions[ TOPTION_TOGGLE_WIREFRAME ] = TRUE;
|
gGameSettings.fOptions[ TOPTION_TOGGLE_WIREFRAME ] = TRUE;
|
||||||
gGameSettings.fOptions[ TOPTION_3D_CURSOR ] = FALSE;
|
gGameSettings.fOptions[ TOPTION_3D_CURSOR ] = FALSE;
|
||||||
gGameSettings.fOptions[ TOPTION_CTH_CURSOR ] = TRUE;
|
gGameSettings.fOptions[ TOPTION_CTH_CURSOR ] = TRUE;
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ enum
|
|||||||
TOPTION_SNAP_CURSOR_TO_DOOR,
|
TOPTION_SNAP_CURSOR_TO_DOOR,
|
||||||
TOPTION_GLOW_ITEMS,
|
TOPTION_GLOW_ITEMS,
|
||||||
TOPTION_TOGGLE_TREE_TOPS,
|
TOPTION_TOGGLE_TREE_TOPS,
|
||||||
|
TOPTION_SMART_TREE_TOPS,
|
||||||
TOPTION_TOGGLE_WIREFRAME,
|
TOPTION_TOGGLE_WIREFRAME,
|
||||||
TOPTION_3D_CURSOR,
|
TOPTION_3D_CURSOR,
|
||||||
TOPTION_CTH_CURSOR,
|
TOPTION_CTH_CURSOR,
|
||||||
|
|||||||
+3
-1
@@ -904,7 +904,9 @@ void ExitOptionsScreen()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//if the user changed the TREE TOP option, AND a world is loaded
|
//if the user changed the TREE TOP option, AND a world is loaded
|
||||||
if( gfSettingOfTreeTopStatusOnEnterOfOptionScreen != gGameSettings.fOptions[ TOPTION_TOGGLE_TREE_TOPS ] && gfWorldLoaded )
|
// sevenfm: always update tree top state
|
||||||
|
//if( gfSettingOfTreeTopStatusOnEnterOfOptionScreen != gGameSettings.fOptions[ TOPTION_TOGGLE_TREE_TOPS ] && gfWorldLoaded )
|
||||||
|
if (gfWorldLoaded)
|
||||||
{
|
{
|
||||||
SetTreeTopStateForMap();
|
SetTreeTopStateForMap();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -526,6 +526,8 @@ void PreventFromTheFreezingBug(SOLDIERTYPE* pSoldier)
|
|||||||
UIHandleLUIEndLock( NULL );
|
UIHandleLUIEndLock( NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
INT32 gOldMapSpot = NOWHERE;
|
||||||
|
|
||||||
// MAIN TACTICAL UI HANDLER
|
// MAIN TACTICAL UI HANDLER
|
||||||
UINT32 HandleTacticalUI( void )
|
UINT32 HandleTacticalUI( void )
|
||||||
{
|
{
|
||||||
@@ -661,6 +663,13 @@ UINT32 HandleTacticalUI( void )
|
|||||||
|
|
||||||
if ( GetMouseMapPos( &usMapPos ) )
|
if ( GetMouseMapPos( &usMapPos ) )
|
||||||
{
|
{
|
||||||
|
// sevenfm: update trees
|
||||||
|
if (usMapPos != gOldMapSpot)
|
||||||
|
{
|
||||||
|
gOldMapSpot = usMapPos;
|
||||||
|
UpdateTreeVisibility();
|
||||||
|
}
|
||||||
|
|
||||||
// Look for soldier full
|
// Look for soldier full
|
||||||
if ( FindSoldier( usMapPos, &gusUIFullTargetID, &guiUIFullTargetFlags, ( FINDSOLDIERSAMELEVEL( gsInterfaceLevel ) ) ) )
|
if ( FindSoldier( usMapPos, &gusUIFullTargetID, &guiUIFullTargetFlags, ( FINDSOLDIERSAMELEVEL( gsInterfaceLevel ) ) ) )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2854,12 +2854,18 @@ BOOLEAN HandleAtNewGridNo( SOLDIERTYPE *pSoldier, BOOLEAN *pfKeepMoving )
|
|||||||
// trversing...
|
// trversing...
|
||||||
if ( gubWaitingForAllMercsToExitCode == WAIT_FOR_MERCS_TO_WALKOFF_SCREEN || gubWaitingForAllMercsToExitCode == WAIT_FOR_MERCS_TO_WALK_TO_GRIDNO )
|
if ( gubWaitingForAllMercsToExitCode == WAIT_FOR_MERCS_TO_WALKOFF_SCREEN || gubWaitingForAllMercsToExitCode == WAIT_FOR_MERCS_TO_WALK_TO_GRIDNO )
|
||||||
{
|
{
|
||||||
|
// sevenfm: update tree visibility
|
||||||
|
UpdateTreeVisibility();
|
||||||
|
|
||||||
return( TRUE );
|
return( TRUE );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if they are out of breath
|
// Check if they are out of breath
|
||||||
if ( pSoldier->CheckForBreathCollapse( ) )
|
if ( pSoldier->CheckForBreathCollapse( ) )
|
||||||
{
|
{
|
||||||
|
// sevenfm: update tree visibility
|
||||||
|
UpdateTreeVisibility();
|
||||||
|
|
||||||
(*pfKeepMoving ) = TRUE;
|
(*pfKeepMoving ) = TRUE;
|
||||||
return( FALSE );
|
return( FALSE );
|
||||||
}
|
}
|
||||||
@@ -2867,6 +2873,9 @@ BOOLEAN HandleAtNewGridNo( SOLDIERTYPE *pSoldier, BOOLEAN *pfKeepMoving )
|
|||||||
// see if a mine gets set off...
|
// see if a mine gets set off...
|
||||||
if (SetOffBombsInGridNo( pSoldier->ubID, pSoldier->sGridNo, FALSE, pSoldier->pathing.bLevel ) )
|
if (SetOffBombsInGridNo( pSoldier->ubID, pSoldier->sGridNo, FALSE, pSoldier->pathing.bLevel ) )
|
||||||
{
|
{
|
||||||
|
// sevenfm: update tree visibility
|
||||||
|
UpdateTreeVisibility();
|
||||||
|
|
||||||
(*pfKeepMoving) = FALSE;
|
(*pfKeepMoving) = FALSE;
|
||||||
pSoldier->EVENT_StopMerc( pSoldier->sGridNo, pSoldier->ubDirection );
|
pSoldier->EVENT_StopMerc( pSoldier->sGridNo, pSoldier->ubDirection );
|
||||||
return( FALSE );
|
return( FALSE );
|
||||||
@@ -2897,6 +2906,9 @@ BOOLEAN HandleAtNewGridNo( SOLDIERTYPE *pSoldier, BOOLEAN *pfKeepMoving )
|
|||||||
HandleSight(pSoldier,SIGHT_LOOK | SIGHT_RADIO | SIGHT_INTERRUPT);
|
HandleSight(pSoldier,SIGHT_LOOK | SIGHT_RADIO | SIGHT_INTERRUPT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// sevenfm: update tree visibility
|
||||||
|
UpdateTreeVisibility();
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// SANDRO - if pending interrupt flag was set for movement type of interupt, resolve it here
|
// SANDRO - if pending interrupt flag was set for movement type of interupt, resolve it here
|
||||||
if ( UsingImprovedInterruptSystem() )
|
if ( UsingImprovedInterruptSystem() )
|
||||||
|
|||||||
@@ -7571,7 +7571,7 @@ void SOLDIERTYPE::ChangeSoldierStance( UINT8 ubDesiredStance )
|
|||||||
// Set desired stance
|
// Set desired stance
|
||||||
this->ubDesiredHeight = ubDesiredStance;
|
this->ubDesiredHeight = ubDesiredStance;
|
||||||
|
|
||||||
this->EVENT_InitNewSoldierAnim(usNewState, 0, FALSE);
|
this->EVENT_InitNewSoldierAnim(usNewState, 0, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
this->usSoldierFlagMask |= SOLDIER_REDOFLASHLIGHT;
|
this->usSoldierFlagMask |= SOLDIER_REDOFLASHLIGHT;
|
||||||
|
|||||||
@@ -5091,6 +5091,7 @@ void ToggleTreeTops()
|
|||||||
if ( gGameSettings.fOptions[ TOPTION_TOGGLE_TREE_TOPS ] )
|
if ( gGameSettings.fOptions[ TOPTION_TOGGLE_TREE_TOPS ] )
|
||||||
{
|
{
|
||||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, TacticalStr[ REMOVING_TREETOPS_STR ] );
|
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, TacticalStr[ REMOVING_TREETOPS_STR ] );
|
||||||
|
gGameSettings.fOptions[TOPTION_TOGGLE_TREE_TOPS] = FALSE;
|
||||||
WorldHideTrees( );
|
WorldHideTrees( );
|
||||||
gTacticalStatus.uiFlags |= NOHIDE_REDUNDENCY;
|
gTacticalStatus.uiFlags |= NOHIDE_REDUNDENCY;
|
||||||
}
|
}
|
||||||
@@ -5098,9 +5099,9 @@ void ToggleTreeTops()
|
|||||||
{
|
{
|
||||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, TacticalStr[ SHOWING_TREETOPS_STR ]);
|
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, TacticalStr[ SHOWING_TREETOPS_STR ]);
|
||||||
WorldShowTrees( );
|
WorldShowTrees( );
|
||||||
|
gGameSettings.fOptions[TOPTION_TOGGLE_TREE_TOPS] = TRUE;
|
||||||
gTacticalStatus.uiFlags &= (~NOHIDE_REDUNDENCY);
|
gTacticalStatus.uiFlags &= (~NOHIDE_REDUNDENCY);
|
||||||
}
|
}
|
||||||
gGameSettings.fOptions[ TOPTION_TOGGLE_TREE_TOPS ] = !gGameSettings.fOptions[ TOPTION_TOGGLE_TREE_TOPS ];
|
|
||||||
|
|
||||||
// FOR THE NEXT RENDER LOOP, RE-EVALUATE REDUNDENT TILES
|
// FOR THE NEXT RENDER LOOP, RE-EVALUATE REDUNDENT TILES
|
||||||
InvalidateWorldRedundency( );
|
InvalidateWorldRedundency( );
|
||||||
|
|||||||
+145
-29
@@ -4000,30 +4000,30 @@ LEVELNODE* FindShadow(INT32 sGridNo, UINT16 usStructIndex)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void WorldHideTrees( )
|
void WorldHideTrees()
|
||||||
{
|
{
|
||||||
LEVELNODE *pNode;
|
LEVELNODE *pNode;
|
||||||
BOOLEAN fRerender=FALSE;
|
BOOLEAN fRerender = FALSE;
|
||||||
UINT32 fTileFlags;
|
UINT32 fTileFlags;
|
||||||
INT32 cnt;
|
INT32 cnt;
|
||||||
|
|
||||||
for ( cnt = 0; cnt < WORLD_MAX; cnt++ )
|
for (cnt = 0; cnt < WORLD_MAX; cnt++)
|
||||||
{
|
{
|
||||||
pNode=gpWorldLevelData[ cnt ].pStructHead;
|
pNode = gpWorldLevelData[cnt].pStructHead;
|
||||||
while(pNode!=NULL)
|
while (pNode != NULL)
|
||||||
{
|
{
|
||||||
GetTileFlags( pNode->usIndex, &fTileFlags );
|
GetTileFlags(pNode->usIndex, &fTileFlags);
|
||||||
|
|
||||||
if ( fTileFlags & FULL3D_TILE )
|
if (fTileFlags & FULL3D_TILE)
|
||||||
{
|
{
|
||||||
if ( !( pNode->uiFlags & LEVELNODE_REVEALTREES ) )
|
if (!(pNode->uiFlags & LEVELNODE_REVEALTREES))
|
||||||
{
|
{
|
||||||
pNode->uiFlags |= ( LEVELNODE_REVEALTREES );
|
pNode->uiFlags |= (LEVELNODE_REVEALTREES);
|
||||||
}
|
}
|
||||||
|
|
||||||
fRerender=TRUE;
|
fRerender = TRUE;
|
||||||
}
|
}
|
||||||
pNode=pNode->pNext;
|
pNode = pNode->pNext;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4031,39 +4031,155 @@ INT32 cnt;
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void WorldShowTrees( )
|
void WorldShowTrees()
|
||||||
{
|
{
|
||||||
LEVELNODE *pNode;
|
LEVELNODE *pNode;
|
||||||
BOOLEAN fRerender=FALSE;
|
BOOLEAN fRerender = FALSE;
|
||||||
UINT32 fTileFlags;
|
UINT32 fTileFlags;
|
||||||
INT32 cnt;
|
INT32 cnt;
|
||||||
|
|
||||||
for ( cnt = 0; cnt < WORLD_MAX; cnt++ )
|
for (cnt = 0; cnt < WORLD_MAX; cnt++)
|
||||||
{
|
{
|
||||||
pNode=gpWorldLevelData[cnt].pStructHead;
|
pNode = gpWorldLevelData[cnt].pStructHead;
|
||||||
while(pNode!=NULL)
|
while (pNode != NULL)
|
||||||
{
|
{
|
||||||
GetTileFlags( pNode->usIndex, &fTileFlags );
|
GetTileFlags(pNode->usIndex, &fTileFlags);
|
||||||
|
|
||||||
if ( fTileFlags & FULL3D_TILE )
|
if (fTileFlags & FULL3D_TILE)
|
||||||
{
|
{
|
||||||
|
|
||||||
if ( ( pNode->uiFlags & LEVELNODE_REVEALTREES ) )
|
if ((pNode->uiFlags & LEVELNODE_REVEALTREES))
|
||||||
{
|
{
|
||||||
pNode->uiFlags &=(~( LEVELNODE_REVEALTREES ) );
|
pNode->uiFlags &= (~(LEVELNODE_REVEALTREES));
|
||||||
}
|
}
|
||||||
|
|
||||||
fRerender=TRUE;
|
fRerender = TRUE;
|
||||||
}
|
}
|
||||||
pNode=pNode->pNext;
|
pNode = pNode->pNext;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SetRenderFlags(RENDER_FLAG_FULL );
|
// sevenfm: also update smart tree tops
|
||||||
|
if (gGameSettings.fOptions[TOPTION_SMART_TREE_TOPS])
|
||||||
|
UpdateTreeVisibility();
|
||||||
|
|
||||||
|
SetRenderFlags(RENDER_FLAG_FULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UpdateTreeVisibility()
|
||||||
|
{
|
||||||
|
if (!gGameSettings.fOptions[TOPTION_SMART_TREE_TOPS] || !gGameSettings.fOptions[TOPTION_TOGGLE_TREE_TOPS])
|
||||||
|
return;
|
||||||
|
|
||||||
|
LEVELNODE *pNode;
|
||||||
|
BOOLEAN fRerender = FALSE;
|
||||||
|
BOOLEAN fHidden = FALSE;
|
||||||
|
UINT32 fTileFlags;
|
||||||
|
INT32 cnt;
|
||||||
|
|
||||||
|
SOLDIERTYPE *pOpponent;
|
||||||
|
STRUCTURE *pStructureData;
|
||||||
|
INT32 sSpot;
|
||||||
|
BOOLEAN fHideTree;
|
||||||
|
INT32 usMouseSpot;
|
||||||
|
|
||||||
|
//Get the gridno the cursor is at
|
||||||
|
GetMouseMapPos(&usMouseSpot);
|
||||||
|
|
||||||
|
// first show all trees
|
||||||
|
for (cnt = 0; cnt < WORLD_MAX; cnt++)
|
||||||
|
{
|
||||||
|
pNode = gpWorldLevelData[cnt].pStructHead;
|
||||||
|
while (pNode != NULL)
|
||||||
|
{
|
||||||
|
GetTileFlags(pNode->usIndex, &fTileFlags);
|
||||||
|
|
||||||
|
if (fTileFlags & FULL3D_TILE)
|
||||||
|
{
|
||||||
|
if ((pNode->uiFlags & LEVELNODE_REVEALTREES))
|
||||||
|
{
|
||||||
|
pNode->uiFlags &= ~(LEVELNODE_REVEALTREES);
|
||||||
|
fRerender = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pNode = pNode->pNext;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// now show all trees except trees near visible soldiers
|
||||||
|
for (cnt = 0; cnt < WORLD_MAX; cnt++)
|
||||||
|
{
|
||||||
|
pNode = gpWorldLevelData[cnt].pStructHead;
|
||||||
|
|
||||||
|
while (pNode != NULL)
|
||||||
|
{
|
||||||
|
pStructureData = pNode->pStructureData;
|
||||||
|
if (pStructureData)
|
||||||
|
sSpot = pNode->pStructureData->sGridNo;
|
||||||
|
//sSpot = pNode->pStructureData->sBaseGridNo;
|
||||||
|
else
|
||||||
|
sSpot = NOWHERE;
|
||||||
|
|
||||||
|
fHideTree = FALSE;
|
||||||
|
|
||||||
|
// check trees near cursor position
|
||||||
|
if (!TileIsOutOfBounds(usMouseSpot) &&
|
||||||
|
(PythSpacesAway(sSpot, usMouseSpot) <= 2 && AIDirection(sSpot, usMouseSpot) == 0 ||
|
||||||
|
PythSpacesAway(sSpot, usMouseSpot) <= 5 && AIDirection(sSpot, usMouseSpot) == 7 ||
|
||||||
|
PythSpacesAway(sSpot, usMouseSpot) <= 2 && AIDirection(sSpot, usMouseSpot) == 6))
|
||||||
|
{
|
||||||
|
fHideTree = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// find visible soldier near spot
|
||||||
|
if (!TileIsOutOfBounds(sSpot) && !fHideTree)
|
||||||
|
{
|
||||||
|
for (UINT8 uiLoop = 0; uiLoop < guiNumMercSlots; uiLoop++)
|
||||||
|
{
|
||||||
|
pOpponent = MercSlots[uiLoop];
|
||||||
|
|
||||||
|
if (pOpponent &&
|
||||||
|
pOpponent->bVisible != -1 &&
|
||||||
|
!TileIsOutOfBounds(pOpponent->sGridNo) &&
|
||||||
|
(PythSpacesAway(sSpot, pOpponent->sGridNo) <= 2 && AIDirection(sSpot, pOpponent->sGridNo) == 0 ||
|
||||||
|
PythSpacesAway(sSpot, pOpponent->sGridNo) <= 5 && AIDirection(sSpot, pOpponent->sGridNo) == 7 ||
|
||||||
|
PythSpacesAway(sSpot, pOpponent->sGridNo) <= 2 && AIDirection(sSpot, pOpponent->sGridNo) == 6))
|
||||||
|
{
|
||||||
|
fHideTree = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fHideTree)
|
||||||
|
{
|
||||||
|
GetTileFlags(pNode->usIndex, &fTileFlags);
|
||||||
|
|
||||||
|
if (fTileFlags & FULL3D_TILE)
|
||||||
|
{
|
||||||
|
if (!(pNode->uiFlags & LEVELNODE_REVEALTREES))
|
||||||
|
{
|
||||||
|
pNode->uiFlags |= (LEVELNODE_REVEALTREES);
|
||||||
|
fRerender = TRUE;
|
||||||
|
fHidden = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pNode = pNode->pNext;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fRerender)
|
||||||
|
{
|
||||||
|
SetRenderFlags(RENDER_FLAG_FULL);
|
||||||
|
if (fHidden)
|
||||||
|
{
|
||||||
|
gTacticalStatus.uiFlags |= NOHIDE_REDUNDENCY;
|
||||||
|
//gTacticalStatus.uiFlags &= (~NOHIDE_REDUNDENCY);
|
||||||
|
InvalidateWorldRedundency();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void SetWorldFlagsFromNewNode( INT32 sGridNo, UINT16 usIndex )
|
void SetWorldFlagsFromNewNode( INT32 sGridNo, UINT16 usIndex )
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ LEVELNODE * FindShadow( INT32 sGridNo, UINT16 usStructIndex );
|
|||||||
|
|
||||||
void WorldHideTrees( );
|
void WorldHideTrees( );
|
||||||
void WorldShowTrees( );
|
void WorldShowTrees( );
|
||||||
|
void UpdateTreeVisibility();
|
||||||
|
|
||||||
BOOLEAN IsTileRedundent( UINT32 uiDestPitchBYTES, UINT16 *pZBuffer, UINT16 usZValue, HVOBJECT hSrcVObject, INT32 iX, INT32 iY, UINT16 usIndex );
|
BOOLEAN IsTileRedundent( UINT32 uiDestPitchBYTES, UINT16 *pZBuffer, UINT16 usZValue, HVOBJECT hSrcVObject, INT32 iX, INT32 iY, UINT16 usIndex );
|
||||||
|
|
||||||
|
|||||||
@@ -6340,6 +6340,7 @@ STR16 zOptionsToggleText[] =
|
|||||||
L"锁定门", //"Snap Cursor to Doors",
|
L"锁定门", //"Snap Cursor to Doors",
|
||||||
L"物品闪亮", //"Make Items Glow",
|
L"物品闪亮", //"Make Items Glow",
|
||||||
L"显示树冠", //"Show Tree Tops",
|
L"显示树冠", //"Show Tree Tops",
|
||||||
|
L"Smart Tree Tops", // TODO. Translate
|
||||||
L"显示轮廓", //"Show Wireframes",
|
L"显示轮廓", //"Show Wireframes",
|
||||||
L"显示3D光标", //"Show 3D Cursor",
|
L"显示3D光标", //"Show 3D Cursor",
|
||||||
L"显示命中机率", //"Show Chance to Hit on cursor",
|
L"显示命中机率", //"Show Chance to Hit on cursor",
|
||||||
@@ -6451,6 +6452,9 @@ STR16 zOptionsScreenHelpText[] =
|
|||||||
//toggle tree tops
|
//toggle tree tops
|
||||||
L"打开时,显示树冠。(|T)",
|
L"打开时,显示树冠。(|T)",
|
||||||
|
|
||||||
|
//smart tree tops
|
||||||
|
L"When ON, hides tree tops near visible mercs and cursor position.", // TODO.Translate
|
||||||
|
|
||||||
//toggle wireframe
|
//toggle wireframe
|
||||||
L"打开时,显示未探明的墙的轮廓。(|C|t|r|l+|A|l|t+|W)",
|
L"打开时,显示未探明的墙的轮廓。(|C|t|r|l+|A|l|t+|W)",
|
||||||
|
|
||||||
|
|||||||
@@ -6347,6 +6347,7 @@ STR16 zOptionsToggleText[] =
|
|||||||
L"Auto-Cursor naar Deuren",
|
L"Auto-Cursor naar Deuren",
|
||||||
L"Items Oplichten",
|
L"Items Oplichten",
|
||||||
L"Toon Boomtoppen",
|
L"Toon Boomtoppen",
|
||||||
|
L"Smart Tree Tops", // TODO. Translate
|
||||||
L"Toon Draadmodellen",
|
L"Toon Draadmodellen",
|
||||||
L"Toon 3D Cursor",
|
L"Toon 3D Cursor",
|
||||||
L"Show Chance to Hit on cursor",
|
L"Show Chance to Hit on cursor",
|
||||||
@@ -6458,6 +6459,9 @@ STR16 zOptionsScreenHelpText[] =
|
|||||||
//toggle tree tops
|
//toggle tree tops
|
||||||
L"Wanneer INGESCHAKELD worden Boom|toppen getoond.",
|
L"Wanneer INGESCHAKELD worden Boom|toppen getoond.",
|
||||||
|
|
||||||
|
//smart tree tops
|
||||||
|
L"When ON, hides tree tops near visible mercs and cursor position.", // TODO.Translate
|
||||||
|
|
||||||
//toggle wireframe
|
//toggle wireframe
|
||||||
L"Wanneer INGESCHAKELD worden Draadmodellen van niet-zichtbare muren getoond. (|C|t|r|l+|A|l|t+|W)",
|
L"Wanneer INGESCHAKELD worden Draadmodellen van niet-zichtbare muren getoond. (|C|t|r|l+|A|l|t+|W)",
|
||||||
|
|
||||||
|
|||||||
@@ -6354,6 +6354,7 @@ STR16 zOptionsToggleText[] =
|
|||||||
L"Snap Cursor to Doors",
|
L"Snap Cursor to Doors",
|
||||||
L"Make Items Glow",
|
L"Make Items Glow",
|
||||||
L"Show Tree Tops",
|
L"Show Tree Tops",
|
||||||
|
L"Smart Tree Tops",
|
||||||
L"Show Wireframes",
|
L"Show Wireframes",
|
||||||
L"Show 3D Cursor",
|
L"Show 3D Cursor",
|
||||||
L"Show Chance to Hit on Cursor",
|
L"Show Chance to Hit on Cursor",
|
||||||
@@ -6465,6 +6466,9 @@ STR16 zOptionsScreenHelpText[] =
|
|||||||
//toggle tree tops
|
//toggle tree tops
|
||||||
L"When ON, shows the |Tree tops.",
|
L"When ON, shows the |Tree tops.",
|
||||||
|
|
||||||
|
//smart tree tops
|
||||||
|
L"When ON, hides tree tops near visible mercs and cursor position.",
|
||||||
|
|
||||||
//toggle wireframe
|
//toggle wireframe
|
||||||
L"When ON, displays Wireframes for obscured walls. (|C|t|r|l+|A|l|t+|W)",
|
L"When ON, displays Wireframes for obscured walls. (|C|t|r|l+|A|l|t+|W)",
|
||||||
|
|
||||||
|
|||||||
@@ -6352,6 +6352,7 @@ STR16 zOptionsToggleText[] =
|
|||||||
L"Figer curseur sur les portes",
|
L"Figer curseur sur les portes",
|
||||||
L"Objets en surbrillance",
|
L"Objets en surbrillance",
|
||||||
L"Afficher cimes",
|
L"Afficher cimes",
|
||||||
|
L"Smart Tree Tops", // TODO. Translate
|
||||||
L"Affichage fil de fer",
|
L"Affichage fil de fer",
|
||||||
L"Curseur toit",
|
L"Curseur toit",
|
||||||
L"Afficher chance de toucher",
|
L"Afficher chance de toucher",
|
||||||
@@ -6463,6 +6464,9 @@ STR16 zOptionsScreenHelpText[] =
|
|||||||
//toggle tree tops
|
//toggle tree tops
|
||||||
L"Activez cette option pour afficher la cime des arbres. (|T)",
|
L"Activez cette option pour afficher la cime des arbres. (|T)",
|
||||||
|
|
||||||
|
//smart tree tops
|
||||||
|
L"When ON, hides tree tops near visible mercs and cursor position.", // TODO.Translate
|
||||||
|
|
||||||
//toggle wireframe
|
//toggle wireframe
|
||||||
L"Activez cette option pour afficher les murs en fil de fer. (|C|T|R|L+|A|L|T+||W)",
|
L"Activez cette option pour afficher les murs en fil de fer. (|C|T|R|L+|A|L|T+||W)",
|
||||||
|
|
||||||
|
|||||||
@@ -6217,6 +6217,7 @@ STR16 zOptionsToggleText[] =
|
|||||||
L"Cursor autom. auf Türen",
|
L"Cursor autom. auf Türen",
|
||||||
L"Gegenstände leuchten",
|
L"Gegenstände leuchten",
|
||||||
L"Baumkronen zeigen",
|
L"Baumkronen zeigen",
|
||||||
|
L"Smart Tree Tops", // TODO. Translate
|
||||||
L"Drahtgitter zeigen",
|
L"Drahtgitter zeigen",
|
||||||
L"3D Cursor zeigen",
|
L"3D Cursor zeigen",
|
||||||
L"Trefferchance anzeigen",
|
L"Trefferchance anzeigen",
|
||||||
@@ -6328,6 +6329,9 @@ STR16 zOptionsScreenHelpText[] =
|
|||||||
//toggle tree tops
|
//toggle tree tops
|
||||||
L"Mit der Deaktivierung dieser Funktion lassen sich Baumkronen ausblenden um bessere Sicht auf das Geschehen zu ermöglichen (|T).",
|
L"Mit der Deaktivierung dieser Funktion lassen sich Baumkronen ausblenden um bessere Sicht auf das Geschehen zu ermöglichen (|T).",
|
||||||
|
|
||||||
|
//smart tree tops
|
||||||
|
L"When ON, hides tree tops near visible mercs and cursor position.", // TODO.Translate
|
||||||
|
|
||||||
//toggle wireframe
|
//toggle wireframe
|
||||||
L"Wenn diese Funktion aktiviert ist, werden Drahtgitter verborgener Wände gezeigt um z.B. perspektivisch verdeckte Fenster zu erkennen (|C|t|r|l+|A|l|t+|W).",
|
L"Wenn diese Funktion aktiviert ist, werden Drahtgitter verborgener Wände gezeigt um z.B. perspektivisch verdeckte Fenster zu erkennen (|C|t|r|l+|A|l|t+|W).",
|
||||||
|
|
||||||
|
|||||||
@@ -6330,6 +6330,7 @@ STR16 zOptionsToggleText[] =
|
|||||||
L"Sposta il cursore sulle porte",
|
L"Sposta il cursore sulle porte",
|
||||||
L"Evidenzia gli oggetti",
|
L"Evidenzia gli oggetti",
|
||||||
L"Mostra le fronde degli alberi",
|
L"Mostra le fronde degli alberi",
|
||||||
|
L"Smart Tree Tops", // TODO. Translate
|
||||||
L"Mostra strutture",
|
L"Mostra strutture",
|
||||||
L"Mostra il cursore 3D",
|
L"Mostra il cursore 3D",
|
||||||
L"Show Chance to Hit on cursor",
|
L"Show Chance to Hit on cursor",
|
||||||
@@ -6441,6 +6442,9 @@ STR16 zOptionsScreenHelpText[] =
|
|||||||
//toggle tree tops
|
//toggle tree tops
|
||||||
L"Se attivata, mostra le fronde degli alberi. (|T)",
|
L"Se attivata, mostra le fronde degli alberi. (|T)",
|
||||||
|
|
||||||
|
//smart tree tops
|
||||||
|
L"When ON, hides tree tops near visible mercs and cursor position.", // TODO.Translate
|
||||||
|
|
||||||
//toggle wireframe
|
//toggle wireframe
|
||||||
L"Se attivata, visualizza le |Strutture dei muri nascosti. (|C|t|r|l+|A|l|t+|W)",
|
L"Se attivata, visualizza le |Strutture dei muri nascosti. (|C|t|r|l+|A|l|t+|W)",
|
||||||
|
|
||||||
|
|||||||
@@ -6348,6 +6348,7 @@ STR16 zOptionsToggleText[] =
|
|||||||
L"Przyciągaj kursor do drzwi",
|
L"Przyciągaj kursor do drzwi",
|
||||||
L"Pulsujące przedmioty",
|
L"Pulsujące przedmioty",
|
||||||
L"Pokazuj korony drzew",
|
L"Pokazuj korony drzew",
|
||||||
|
L"Smart Tree Tops", // TODO. Translate
|
||||||
L"Pokazuj siatkę",
|
L"Pokazuj siatkę",
|
||||||
L"Pokazuj kursor 3D",
|
L"Pokazuj kursor 3D",
|
||||||
L"Pokazuj szansę na trafienie",
|
L"Pokazuj szansę na trafienie",
|
||||||
@@ -6460,6 +6461,9 @@ STR16 zOptionsScreenHelpText[] =
|
|||||||
//toggle tree tops
|
//toggle tree tops
|
||||||
L"Jeśli WŁĄCZONE, wyświetlane będą korony drzew. ( |T )",
|
L"Jeśli WŁĄCZONE, wyświetlane będą korony drzew. ( |T )",
|
||||||
|
|
||||||
|
//smart tree tops
|
||||||
|
L"When ON, hides tree tops near visible mercs and cursor position.", // TODO.Translate
|
||||||
|
|
||||||
//toggle wireframe
|
//toggle wireframe
|
||||||
L"Jeśli WŁĄCZONE, wyświetlane będą zarysy niewidocznych ścian. ( |C|t|r|l+|A|l|t+|W )",
|
L"Jeśli WŁĄCZONE, wyświetlane będą zarysy niewidocznych ścian. ( |C|t|r|l+|A|l|t+|W )",
|
||||||
|
|
||||||
|
|||||||
@@ -6340,6 +6340,7 @@ STR16 zOptionsToggleText[] =
|
|||||||
L"Курсор на дверь",
|
L"Курсор на дверь",
|
||||||
L"Мерцание вещей",
|
L"Мерцание вещей",
|
||||||
L"Показать кроны деревьев",
|
L"Показать кроны деревьев",
|
||||||
|
L"Скрывать мешающие кроны",
|
||||||
L"Показать каркасы",
|
L"Показать каркасы",
|
||||||
L"Трехмерный курсор",
|
L"Трехмерный курсор",
|
||||||
L"Показать шанс попадания",
|
L"Показать шанс попадания",
|
||||||
@@ -6451,6 +6452,9 @@ STR16 zOptionsScreenHelpText[] =
|
|||||||
//toggle tree tops
|
//toggle tree tops
|
||||||
L"Если включено, то отображаются кроны деревьев (|T).",
|
L"Если включено, то отображаются кроны деревьев (|T).",
|
||||||
|
|
||||||
|
//smart tree tops
|
||||||
|
L"Если включено, кроны деревьев не будут отображаться около видимых солдат и около курсора.",
|
||||||
|
|
||||||
//toggle wireframe
|
//toggle wireframe
|
||||||
L"Если включено, то у препятствий\nдополнительно показывается каркас (|C|t|r|l+|A|l|t+|W).",
|
L"Если включено, то у препятствий\nдополнительно показывается каркас (|C|t|r|l+|A|l|t+|W).",
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user