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:
Flugente
2014-11-04 20:03:18 +00:00
parent 60bffb1352
commit 94ded57962
30 changed files with 599 additions and 614 deletions
+412 -492
View File
File diff suppressed because it is too large Load Diff
+73 -48
View File
@@ -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
-2
View File
@@ -650,8 +650,6 @@ UINT32 HandleTacticalUI( void )
DisplayCover();
DisplayMines(); // added by Flugente
if ( HandleItemPickupMenu( ) )
{
uiNewEvent = A_CHANGE_TO_MOVE;
+1
View File
@@ -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
+6
View File
@@ -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);
+7
View File
@@ -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 )
+23 -14
View File
@@ -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]);
}
+7 -1
View File
@@ -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;