mirror of
https://github.com/1dot13/source.git
synced 2026-08-26 14:30:26 +02:00
New Feature: tracking allows rangers to track past movements.
Fro more info, see http://www.ja-galaxy-forum.com/ubbthreads.php/topics/337545#Post337545 git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7646 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+412
-492
File diff suppressed because it is too large
Load Diff
+73
-48
@@ -1,8 +1,8 @@
|
||||
#ifndef _DISPLAY_COVER__H_
|
||||
#define _DISPLAY_COVER__H_
|
||||
|
||||
void DisplayCoverOfSelectedGridNo( );
|
||||
void RemoveCoverOfSelectedGridNo();
|
||||
// resets the overlay modes so that everything will be reset at the NEXT display cycle
|
||||
void ResetOverlayModes();
|
||||
|
||||
void DisplayRangeToTarget( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo );
|
||||
void DisplayCover(const BOOLEAN& forceUpdate = FALSE);
|
||||
@@ -14,29 +14,66 @@ void SwitchViewOff();
|
||||
void ToggleMercView();
|
||||
void ToggleEnemyView();
|
||||
|
||||
void SwitchCoverDrawMode();
|
||||
|
||||
void RemoveVisibleGridNoAtSelectedGridNo();
|
||||
void DisplayGridNoVisibleToSoldierGrid( );
|
||||
|
||||
void CalculateCoverForSoldier( SOLDIERTYPE* pForSoldier, const INT32& sTargetGridNo, const BOOLEAN& fRoof, INT8& bCover );
|
||||
void CalculateCoverFromSoldier( SOLDIERTYPE* pFromSoldier, const INT32& sTargetGridNo, const BOOLEAN& fRoof, INT8& bCover, SOLDIERTYPE* pToSoldier = NULL );
|
||||
BOOLEAN CanSoldierSeeFloor( SOLDIERTYPE* pSoldier, INT32 sGridNo, INT8 bLevel );
|
||||
|
||||
|
||||
#define DC_MAX_COVER_RANGE 43 //31
|
||||
#define DC__SOLDIER_VISIBLE_RANGE 43 //31
|
||||
#define DC__MIN_SIZE 4
|
||||
#define DC__MAX_SIZE 21 //11
|
||||
|
||||
enum COVER_VALUES
|
||||
// Flugente: all different overlays in one enum
|
||||
enum OVERLAY_VALUES
|
||||
{
|
||||
INVALID_COVER = -1,
|
||||
NO_COVER = 0,
|
||||
MIN_COVER = 1,
|
||||
MED_COVER = 2,
|
||||
MAX_COVER = 3
|
||||
NO_COVER,
|
||||
MIN_COVER,
|
||||
MED_COVER,
|
||||
MAX_COVER,
|
||||
|
||||
NO_SEE,
|
||||
MIN_SEE,
|
||||
MED_SEE,
|
||||
MAX_SEE,
|
||||
|
||||
MINES_ALL,
|
||||
MINE_BOMB,
|
||||
MINE_WIRE,
|
||||
MINE_BOMB_AND_WIRE,
|
||||
MINES_NET_1,
|
||||
MINES_NET_2,
|
||||
MINES_NET_3,
|
||||
MINES_NET_4,
|
||||
MINES_LVL_1,
|
||||
MINES_LVL_2,
|
||||
MINES_LVL_3,
|
||||
MINES_LVL_4,
|
||||
MAX_MINES,
|
||||
|
||||
TRAIT_ALL,
|
||||
TRAIT_1,
|
||||
TRAIT_2,
|
||||
MAX_TRAIT,
|
||||
|
||||
TRACKS_VERYOLD,
|
||||
TRACKS_OLD,
|
||||
TRACKS_RECENT,
|
||||
TRACKS_BLOOD,
|
||||
MAX_TRACKS,
|
||||
};
|
||||
|
||||
enum COVER_DRAW_MODE {
|
||||
COVER_DRAW_OFF,
|
||||
COVER_DRAW_MERC_VIEW,
|
||||
COVER_DRAW_ENEMY_VIEW
|
||||
};
|
||||
|
||||
void ChangeSizeOfDisplayCover( INT32 iNewSize );
|
||||
|
||||
void ChangeSizeOfLOS( INT32 iNewSize );
|
||||
//ddd for optimize oppponent turn
|
||||
INT8 CalcCoverForGridNoBasedOnTeamKnownEnemies( SOLDIERTYPE *pSoldier, INT16 sTargetGridNo, INT8 bStance );
|
||||
//ddd for optimize oppponent turn
|
||||
|
||||
|
||||
// ----------------------------- Mines display after this ----------------------------------------
|
||||
// added by Flugente: display of mine, bombs and tripwire
|
||||
// Flugente: mines display - stuff needs to be here
|
||||
// Sevenfm: moved here from DisplayCover.cpp
|
||||
enum MINES_DRAW_MODE {
|
||||
@@ -51,35 +88,6 @@ enum MINES_DRAW_MODE {
|
||||
MINES_DRAW_MAX
|
||||
};
|
||||
|
||||
// Flugente: trait draw mode
|
||||
enum TRAIT_DRAW_MODE {
|
||||
TRAIT_DRAW_OFF,
|
||||
TRAIT_DRAW_RANGE,
|
||||
TRAIT_DRAW_MAX
|
||||
};
|
||||
|
||||
enum COVER_DRAW_MODE {
|
||||
COVER_DRAW_OFF,
|
||||
COVER_DRAW_MERC_VIEW,
|
||||
COVER_DRAW_ENEMY_VIEW
|
||||
};
|
||||
|
||||
#ifdef JA2TESTVERSION
|
||||
void DisplayLosAndDisplayCoverUsageScreenMsg();
|
||||
#endif
|
||||
|
||||
void ChangeSizeOfDisplayCover( INT32 iNewSize );
|
||||
|
||||
void ChangeSizeOfLOS( INT32 iNewSize );
|
||||
//ddd for optimize oppponent turn
|
||||
INT8 CalcCoverForGridNoBasedOnTeamKnownEnemies( SOLDIERTYPE *pSoldier, INT16 sTargetGridNo, INT8 bStance );
|
||||
//ddd for optimize oppponent turn
|
||||
|
||||
|
||||
// ----------------------------- Mines display after this ----------------------------------------
|
||||
// added by Flugente: display of mine, bombs and tripwire
|
||||
void DisplayMines(const BOOLEAN& forceUpdate = FALSE);
|
||||
|
||||
void SwitchToTrapNetworkView();
|
||||
void SwitchToHostileTrapsView();
|
||||
void SwitchMineViewOff();
|
||||
@@ -91,10 +99,27 @@ void SwitchMinesDrawModeForNetworks();
|
||||
|
||||
// ----------------------------- trait range display after this ----------------------------------------
|
||||
// added by Flugente: display of ranges and areas of effects for traits
|
||||
void DisplayTraitRange(const BOOLEAN& forceUpdate = FALSE);
|
||||
// Flugente: trait draw mode
|
||||
enum TRAIT_DRAW_MODE {
|
||||
TRAIT_DRAW_OFF,
|
||||
TRAIT_DRAW_RANGE,
|
||||
TRAIT_DRAW_MAX
|
||||
};
|
||||
|
||||
void ToggleTraitRangeView(BOOLEAN fOn = TRUE);
|
||||
void SetTraitToDisplay( UINT32 aTrait );
|
||||
void SetGridNoForTraitDisplay( INT32 sGridNo );
|
||||
|
||||
// ----------------------------- tracker display after this ----------------------------------------
|
||||
// added by Flugente: display of ranges and areas of effects for traits
|
||||
|
||||
// Flugente: trait draw mode
|
||||
enum TRACKER_DRAW_MODE {
|
||||
TRACKER_DRAW_OFF,
|
||||
TRACKER_DRAW_SMELL,
|
||||
TRACKER_DRAW_MAX
|
||||
};
|
||||
|
||||
extern TRACKER_DRAW_MODE gubDrawModeTracker;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -650,8 +650,6 @@ UINT32 HandleTacticalUI( void )
|
||||
|
||||
DisplayCover();
|
||||
|
||||
DisplayMines(); // added by Flugente
|
||||
|
||||
if ( HandleItemPickupMenu( ) )
|
||||
{
|
||||
uiNewEvent = A_CHANGE_TO_MOVE;
|
||||
|
||||
@@ -189,6 +189,7 @@ enum {
|
||||
BG_PERC_SPOTTER,
|
||||
BG_PERC_DISEASE_DIAGNOSE,
|
||||
BG_PERC_DISEASE_TREAT,
|
||||
BG_TRACKER_ABILITY,
|
||||
|
||||
BG_DISLIKEBG, // dislike any other background that has the negative of this value set
|
||||
|
||||
|
||||
@@ -2691,6 +2691,7 @@ void HandleJohnArrival( SOLDIERTYPE * pSoldier )
|
||||
}
|
||||
}
|
||||
|
||||
extern void DisplayCover( const BOOLEAN& forceUpdate );
|
||||
|
||||
BOOLEAN HandleAtNewGridNo( SOLDIERTYPE *pSoldier, BOOLEAN *pfKeepMoving )
|
||||
{
|
||||
@@ -2940,6 +2941,11 @@ BOOLEAN HandleAtNewGridNo( SOLDIERTYPE *pSoldier, BOOLEAN *pfKeepMoving )
|
||||
|
||||
HandleSystemNewAISituation( pSoldier, FALSE );
|
||||
|
||||
// Flugente: tracker...
|
||||
if ( pSoldier->bInSector && gusSelectedSoldier == pSoldier->ubID && !pSoldier->bCollapsed )
|
||||
{
|
||||
DisplayCover( TRUE );
|
||||
}
|
||||
|
||||
#ifdef LUA_OVERHEAD
|
||||
LetLuaMyCustomHandleAtNewGridNo(NULL,pSoldier->ubProfile, 0);
|
||||
|
||||
@@ -17372,6 +17372,8 @@ INT16 SOLDIERTYPE::GetInterruptModifier( UINT8 usDistance )
|
||||
return bonus;
|
||||
}
|
||||
|
||||
extern void DisplayCover( const BOOLEAN& forceUpdate );
|
||||
|
||||
void SOLDIERTYPE::SoldierPropertyUpkeep( )
|
||||
{
|
||||
// these effects last only one turn
|
||||
@@ -17427,7 +17429,12 @@ void SOLDIERTYPE::SoldierPropertyUpkeep( )
|
||||
{
|
||||
this->usSoldierFlagMask &= ~SOLDIER_BATTLE_PARTICIPATION;
|
||||
}
|
||||
|
||||
if ( this->bInSector && this->bTeam == gbPlayerNum && !this->bCollapsed )
|
||||
{
|
||||
DisplayCover( TRUE );
|
||||
}
|
||||
}
|
||||
|
||||
// check if Soldier can use the spell skillwise, with fAPCheck = TRUE also check current APs
|
||||
BOOLEAN SOLDIERTYPE::CanUseSkill( INT8 iSkill, BOOLEAN fAPCheck )
|
||||
|
||||
@@ -8231,6 +8231,7 @@ void HandleTacticalCoverMenu( void )
|
||||
gzUserDefinedButtonColor[1] = FONT_MCOLOR_LTYELLOW;
|
||||
gzUserDefinedButtonColor[2] = FONT_MCOLOR_LTYELLOW;
|
||||
gzUserDefinedButtonColor[4] = gDisplayEnemyRoles ? FONT_MCOLOR_LTGREEN : FONT_LTRED;
|
||||
gzUserDefinedButtonColor[6] = (gubDrawModeTracker == TRACKER_DRAW_OFF) ? FONT_LTRED : FONT_MCOLOR_LTGREEN;
|
||||
gzUserDefinedButtonColor[8] = FONT_ORANGE;
|
||||
gzUserDefinedButtonColor[9] = FONT_ORANGE;
|
||||
gzUserDefinedButtonColor[10] = FONT_ORANGE;
|
||||
@@ -8244,22 +8245,18 @@ void HandleTacticalCoverMenu( void )
|
||||
|
||||
void TacticalCoverMessageBoxCallBack( UINT8 ubExitValue )
|
||||
{
|
||||
gubDrawModeMine = MINES_DRAW_OFF;
|
||||
gubDrawMode = COVER_DRAW_OFF;
|
||||
switch( ubExitValue )
|
||||
{
|
||||
case 1:
|
||||
gubDrawModeMine = MINES_DRAW_OFF;
|
||||
gubDrawMode = COVER_DRAW_OFF;
|
||||
DisplayMines(TRUE);
|
||||
ResetOverlayModes( );
|
||||
break;
|
||||
case 2:
|
||||
ResetOverlayModes( );
|
||||
gubDrawMode = COVER_DRAW_ENEMY_VIEW;
|
||||
DisplayCover(TRUE);
|
||||
break;
|
||||
case 3:
|
||||
ResetOverlayModes( );
|
||||
gubDrawMode = COVER_DRAW_MERC_VIEW;
|
||||
DisplayCover(TRUE);
|
||||
break;
|
||||
case 4:
|
||||
break;
|
||||
@@ -8269,40 +8266,52 @@ void TacticalCoverMessageBoxCallBack( UINT8 ubExitValue )
|
||||
case 6:
|
||||
break;
|
||||
case 7:
|
||||
if ( gubDrawModeTracker == TRACKER_DRAW_SMELL )
|
||||
{
|
||||
ResetOverlayModes( );
|
||||
}
|
||||
else
|
||||
{
|
||||
ResetOverlayModes( );
|
||||
gubDrawModeTracker = TRACKER_DRAW_SMELL;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
break;
|
||||
case 9:
|
||||
ResetOverlayModes( );
|
||||
gubDrawModeMine = MINES_DRAW_PLAYERTEAM_NETWORKS;
|
||||
DisplayMines(TRUE);
|
||||
break;
|
||||
case 10:
|
||||
ResetOverlayModes( );
|
||||
gubDrawModeMine = MINES_DRAW_NETWORKCOLOURING;
|
||||
DisplayMines(TRUE);
|
||||
break;
|
||||
case 11:
|
||||
ResetOverlayModes( );
|
||||
gubDrawModeMine = MINES_DRAW_DETECT_ENEMY;
|
||||
DisplayMines(TRUE);
|
||||
break;
|
||||
case 12:
|
||||
break;
|
||||
case 13:
|
||||
ResetOverlayModes( );
|
||||
gubDrawModeMine = MINES_DRAW_NET_A;
|
||||
DisplayMines(TRUE);
|
||||
break;
|
||||
case 14:
|
||||
ResetOverlayModes( );
|
||||
gubDrawModeMine = MINES_DRAW_NET_B;
|
||||
DisplayMines(TRUE);
|
||||
break;
|
||||
case 15:
|
||||
ResetOverlayModes( );
|
||||
gubDrawModeMine = MINES_DRAW_NET_C;
|
||||
DisplayMines(TRUE);
|
||||
break;
|
||||
case 16:
|
||||
ResetOverlayModes( );
|
||||
gubDrawModeMine = MINES_DRAW_NET_D;
|
||||
DisplayMines(TRUE);
|
||||
break;
|
||||
}
|
||||
|
||||
DisplayCover( TRUE );
|
||||
|
||||
if( ubExitValue <= TACTICAL_COVER_DIALOG_NUM )
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szTacticalCoverDialogPrintString[ubExitValue-1]);
|
||||
}
|
||||
|
||||
@@ -128,6 +128,7 @@ backgroundStartElementHandle(void *userData, const XML_Char *name, const XML_Cha
|
||||
strcmp(name, "spotter") == 0 ||
|
||||
strcmp(name, "disease_diagnose" ) == 0 ||
|
||||
strcmp(name, "disease_treatment" ) == 0 ||
|
||||
strcmp(name, "tracker_ability" ) == 0 ||
|
||||
strcmp(name, "dislikebackground" ) == 0 ||
|
||||
strcmp(name, "druguse") == 0 ||
|
||||
strcmp(name, "xenophobic") == 0 ||
|
||||
@@ -137,7 +138,7 @@ backgroundStartElementHandle(void *userData, const XML_Char *name, const XML_Cha
|
||||
strcmp(name, "traplevel") == 0 ||
|
||||
strcmp(name, "no_male") == 0 ||
|
||||
strcmp(name, "no_female") == 0 ||
|
||||
strcmp( name, "loyalitylossondeath" ) == 0 ))
|
||||
strcmp(name, "loyalitylossondeath" ) == 0 ))
|
||||
|
||||
{
|
||||
pData->curElement = ELEMENT_PROPERTY;
|
||||
@@ -538,6 +539,11 @@ backgroundEndElementHandle(void *userData, const XML_Char *name)
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curBackground.value[BG_PERC_DISEASE_TREAT] = min( 50, max( -50, (INT16)atol( pData->szCharData ) ) );
|
||||
}
|
||||
else if ( strcmp( name, "tracker_ability" ) == 0 )
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curBackground.value[BG_TRACKER_ABILITY] = min( 40, max( 0, (INT16)atol( pData->szCharData ) ) );
|
||||
}
|
||||
else if ( strcmp( name, "dislikebackground" ) == 0 )
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
|
||||
Reference in New Issue
Block a user