mirror of
https://github.com/1dot13/source.git
synced 2026-07-29 13:52:17 +02:00
MERGED source code from development trunk revision 4545 up to latest current revision 4882
Development Trunk: https://ja2svn.dyndns.org/source/ja2/branches/Wanne/JA2%201.13%20MP A detailed list of all the features (changes) is visible in the history log of the development trunk: INFO: The source code for the official 2011 release (4870) has been branched here: https://ja2svn.dyndns.org/source/ja2/branches/JA2_rev.4870_2011 This commit contains the following features: *** Externalized Vehicles *** o Now with this feature we can add/remove vehicles o New XML File: TableData\Vehicles.xml o Added a new function parameter to lua file Scripts\Overhead lua to set up the helicopter in method: SetUpHelicopterForPlayer() o Added example mini (Docs\Externalized Vehicles Example.zip) mod which adds 2 additional vehicles (hummer and ice-cream truck to sector A9) *** Up to 255 save slots *** - There is a "Next" and "Prev" button where you can scroll through the save slots - It is now possible to load the automatic save (SAVE_EVERY_N_HOURS) from the load screen. This is the first slot after the quickload slot - Added the 2 alternate players end turn saves (which can be enabled/disabled in option screen) to the save/load game form *** New Feature: Externalized emails from Emails.edt to XML*** o This feature can be enabled/disabled in the Source: --> See email.cpp: If "ReadXMLEmail" == FALSE, then normal way (read from Email.edt) otherwise read from XML files o 2 new XML files: TableData\Email\EmailMercAvailable.xml and EmailMercLevelUp.xml o Renamed SenderNamesList.xml to EmailSenderNamesList.xml and moved from TableData folder to TableData\Email folder o Names for mercenaries are get from the file MercProfiles.xml and different names get from the file EmailSenderNamesList.xml *** Externalized Hidden Towns (Tixa, Orta) *** o Now it is possible to add new hidden towns (locations) o See file: TableData/Map/Cities.xml o New variable in TableData/Map/Cities.xml - hiddenTown: 0 = show on strategy map, 1 = Hide on strategy map - townIcon: 1 = on, 0 = off (This is the icon you see on the strategy map) - szIconFile: The path to the sti icon file (eg: interface\prison.sti, interface\my_icon.sti) - iconPosition: The x,y position of the icon on the strategy map *** Encyclopedia and Briefing Room, reachable from the laptop *** o 2 new ja2_options.ini properties: BRIEFING_ROOM, ENCYCLOPEDIA o demonstration video: http://www.youtube.com/watch?v=7CIXdXWLrAo o Added Example usage of the Briefing Room - Extract it in your JA2 1.13 folder and use the latest development executable - The briefing room can be reached from the laptop. Enter SN5631 for the code and then click the "Exit" button - See "Info_BriefingRoom.txt" and "BriefingRoom_Mission1.png" *** Improved interrupt system (IIS) *** o This system changes the way interrupts work. See: http://www.ja-galaxy-forum.com/board/ubbthreads.php?ubb=showflat&Number=290787#Post290787 o Option system (see ja2_options.ini: IMPROVED_INTERRUPT_SYSTEM) o A few more settings for the interrupt system in ja2_options.ini o INFO: Multiplayer games always use the "old" interrupt system, not matter what the user selects in the ja2_options.ini *** Walking and sidestepping with weapon raised *** o Enable/disable the walking/sidestepping with raised weapon in ja2_options.ini: ALLOW_WALKING_WITH_WEAPON_RAISED o You can set an AP/BP modifier when walking/sidestepping with weapon raised in APBPConstants.ini: AP_MODIFIER_WEAPON_READY o The following feature apply when you walk/sidestep with weapon raised: -> limited angle of view, but you can see more farther when the weapon has a scope -> better change for interrupts if you see an enemy -> less APs and BPs when shooting, because the weapon is already raised -> It should cost more APs when walking. Maybe you can export the additional AP and BP modifier to the APBPConstants.ini *** Increase squad size to 8 (800x600) and 8 and 10 (1024x768) *** o Squad sizes (dependend on the screen resolution) can be selected in the start new game screen o In a multiplayer game, the squad size will always be 6, because it does not work with more soldiers/squad *** Added UB-1.13 source code *** o Merged the UB-1.13 source code (Revision: 4721) from svn: http://subversion.assembla.com/svn/ub-source113 o If you want to build UB-EXE or UB-MapEditor, just enable the 2 defines (JA2UB and JA2UBMAPS) in "builddefines.h" o The UB-Verion reads from "ja2_UB.ini" instead of "ja2.ini" o There are 2 new XML files - Layout\LayoutMainMenu.xml - MapAction\ActionItems.xml o There are 2 new LUA-Script files - Scripts\ExplosionControl.lua - Scripts\InterfaceDialogue.lua *** Hide enemy health text / enemy hit count *** o ja2_options.ini: HIDE_ENEMY_HEALTH_TEXT, HIDE_ENEMY_HIT_COUNT o both new settings only have effect in a singleplayer game o see: http://www.ja-galaxy-forum.com/board/ubbthreads.php?ubb=showflat&Number=128840&page=1 git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@4885 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -593,6 +593,71 @@ void AnimateRoute( PathStPtr pPath );
|
||||
extern void EndConfirmMapMoveMode( void );
|
||||
extern BOOLEAN CanDrawSectorCursor( void );
|
||||
|
||||
void DrawIconL(INT32 MAP_GRID_X2, INT32 MAP_GRID_Y2, INT32 i, INT32 Sector_X , INT32 Sector_Y ); //Legion
|
||||
UINT32 guiIcon2[256];
|
||||
ICON_FILE gHiddenIcon[ 256 ];
|
||||
|
||||
#ifdef JA2UB
|
||||
void SetUpValidCampaignSectors( void );
|
||||
#endif
|
||||
|
||||
BOOLEAN LoadHiddenTownFromLoadGameFile( HWFILE hFile );
|
||||
BOOLEAN SaveHiddenTownToSaveGameFile( HWFILE hFile );
|
||||
|
||||
//--------------Legion 2----Jazz-----------
|
||||
|
||||
void DrawIconL(INT32 MAP_GRID_X2, INT32 MAP_GRID_Y2, INT32 i, INT32 Sector_X , INT32 Sector_Y )
|
||||
{
|
||||
UINT8 *pDestBuf2;
|
||||
UINT32 uiDestPitchBYTES;
|
||||
INT16 sX, sY;
|
||||
HVOBJECT hHandle;
|
||||
INT8 ubVidObjIndex = 0;
|
||||
|
||||
if( fZoomFlag )
|
||||
{
|
||||
pDestBuf2 = LockVideoSurface( guiSAVEBUFFER, &uiDestPitchBYTES );
|
||||
SetClippingRegionAndImageWidth( uiDestPitchBYTES, MAP_VIEW_START_X+MAP_GRID_X - 1, MAP_VIEW_START_Y+MAP_GRID_Y - 1, MAP_VIEW_WIDTH+1,MAP_VIEW_HEIGHT-9 );
|
||||
UnLockVideoSurface(guiSAVEBUFFER);
|
||||
|
||||
GetScreenXYFromMapXYStationary( Sector_X, Sector_Y, &sX, &sY );
|
||||
sX += -MAP_GRID_X + MAP_GRID_X2;
|
||||
sY += -MAP_GRID_Y - MAP_GRID_Y2;
|
||||
ubVidObjIndex = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
GetScreenXYFromMapXY( Sector_X, Sector_Y, &sX, &sY );
|
||||
|
||||
sX = (UINT16) (MAP_VIEW_START_X + MAP_GRID_X + (MAP_GRID_X2 * MAP_GRID_X) / 10);
|
||||
sY = (UINT16) (MAP_VIEW_START_Y + MAP_GRID_Y + ((MAP_GRID_Y2 * MAP_GRID_Y) / 10) + 1);
|
||||
|
||||
/*
|
||||
if (iResolution == 0)
|
||||
{
|
||||
sY += MAP_GRID_Y2;
|
||||
sX += MAP_GRID_X2;
|
||||
}
|
||||
else if (iResolution == 1)
|
||||
{
|
||||
sY += + 5 + MAP_GRID_Y2;
|
||||
sX += - MAP_GRID_X2 + 3;
|
||||
}
|
||||
else if (iResolution == 2)
|
||||
{
|
||||
sY += + 10 + MAP_GRID_Y2;
|
||||
sX += - MAP_GRID_X2 + 10;
|
||||
}
|
||||
*/
|
||||
ubVidObjIndex = 1;
|
||||
}
|
||||
|
||||
// draw Tixa in its sector
|
||||
GetVideoObject( &hHandle, guiIcon2[i]);
|
||||
BltVideoObject( guiSAVEBUFFER, hHandle, ubVidObjIndex, sX, sY, VO_BLT_SRCTRANSPARENCY, NULL );
|
||||
}
|
||||
|
||||
//-----------------------------------
|
||||
|
||||
// This method outputs the numbers (1-16) and letters (A - P)
|
||||
void DrawMapIndexBigMap( BOOLEAN fSelectedCursorIsYellow )
|
||||
@@ -724,6 +789,9 @@ UINT32 DrawMap( void )
|
||||
SGPRect clip;
|
||||
INT16 cnt, cnt2;
|
||||
INT32 iCounter = 0;
|
||||
INT32 iCounter2 = 0;
|
||||
INT16 pSectorX = 0, pSectorY = 0;
|
||||
INT16 sBaseSectorValue = 0;
|
||||
|
||||
//MAP_VIEW_START_X = (SCREEN_WIDTH - 370);
|
||||
//MAP_VIEW_START_Y = 10;
|
||||
@@ -932,7 +1000,27 @@ UINT32 DrawMap( void )
|
||||
// UNFORTUNATELY, WE CAN'T SHADE THESE ICONS AS PART OF SHADING THE MAP, BECAUSE FOR AIRSPACE, THE SHADE FUNCTION
|
||||
// DOESN'T MERELY SHADE THE EXISTING MAP SURFACE, BUT INSTEAD GRABS THE ORIGINAL GRAPHICS FROM BIGMAP, AND CHANGES
|
||||
// THEIR PALETTE. BLITTING ICONS PRIOR TO SHADING WOULD MEAN THEY DON'T SHOW UP IN AIRSPACE VIEW AT ALL.
|
||||
|
||||
for (cnt = 1; cnt < NUM_TOWNS; cnt++)
|
||||
{
|
||||
if ( gfHiddenTown[ cnt ] == TRUE )
|
||||
{
|
||||
if ( gfIconTown[ cnt ] == TRUE && gfDrawHiddenTown[ cnt ] == TRUE )
|
||||
{
|
||||
sBaseSectorValue = sBaseSectorList[ cnt-1 ];
|
||||
pSectorX = SECTORX( sBaseSectorValue );
|
||||
pSectorY = SECTORY( sBaseSectorValue );
|
||||
|
||||
INT8 bTownId = GetTownIdForSector( pSectorX, pSectorY );
|
||||
if ( /*bTownId != 0 &&*/ bTownId < NUM_TOWNS )
|
||||
{
|
||||
DrawIconL(gHiddenIcon[cnt].IconX, gHiddenIcon[cnt].IconY, cnt, pSectorX, pSectorY);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
// if Orta found
|
||||
if( fFoundOrta )
|
||||
{
|
||||
@@ -944,7 +1032,8 @@ UINT32 DrawMap( void )
|
||||
{
|
||||
DrawTixa();
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
// draw SAM sites
|
||||
ShowSAMSitesOnStrategicMap( );
|
||||
|
||||
@@ -1081,7 +1170,8 @@ DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Map Screen1");
|
||||
for( bTown = FIRST_TOWN; bTown < NUM_TOWNS; bTown++)
|
||||
{
|
||||
// skip Orta/Tixa until found
|
||||
if( ( ( fFoundOrta != FALSE ) || ( bTown != ORTA ) ) && ( ( bTown != TIXA ) || ( fFoundTixa != FALSE) ) )
|
||||
//if( ( ( fFoundOrta != FALSE ) || ( bTown != ORTA ) ) && ( ( bTown != TIXA ) || ( fFoundTixa != FALSE) ) )
|
||||
if( gfHiddenTown[ bTown ] == TRUE )
|
||||
{
|
||||
swprintf( sString, L"%s", pTownNames[ bTown ] );
|
||||
|
||||
@@ -4212,6 +4302,18 @@ void DisplayThePotentialPathForHelicopter(INT16 sMapX, INT16 sMapY )
|
||||
|
||||
BOOLEAN IsTheCursorAllowedToHighLightThisSector( INT16 sSectorX, INT16 sSectorY )
|
||||
{
|
||||
//Ja25UB
|
||||
// check to see if this sector is a blocked out sector?
|
||||
/* if ( !SectorInfo[ ( SECTOR( sSectorX, sSectorY ) ) ].fValidSector )
|
||||
{
|
||||
return ( FALSE );
|
||||
}
|
||||
else
|
||||
{
|
||||
// return cursor is allowed to highlight this sector
|
||||
return ( TRUE );
|
||||
}
|
||||
*/
|
||||
// check to see if this sector is a blocked out sector?
|
||||
|
||||
if( sBadSectorsList[ sSectorX ][ sSectorY ] )
|
||||
@@ -4793,7 +4895,7 @@ void DisplayPositionOfHelicopter( void )
|
||||
RemoveVehicleFromList (iHelicopterVehicleId);
|
||||
InitAVehicle (iHelicopterVehicleId, 13, MAP_ROW_B);
|
||||
fSkyRiderSetUp = FALSE;
|
||||
SetUpHelicopterForPlayer( 13, MAP_ROW_B , SKYRIDER );
|
||||
SetUpHelicopterForPlayer( 13, MAP_ROW_B, gNewVehicle[ HELICOPTER ].NewPilot, HELICOPTER );
|
||||
pGroup = GetGroup( pVehicleList[ iHelicopterVehicleId ].ubMovementGroup );
|
||||
if (!pGroup) {
|
||||
static bool heliMsg2Given = false;
|
||||
@@ -5186,7 +5288,8 @@ void BlitTownGridMarkers( void )
|
||||
while( pTownNamesList[ iCounter ] != 0 )
|
||||
{
|
||||
// skip Orta/Tixa until found
|
||||
if( ( ( fFoundOrta != FALSE ) || ( pTownNamesList[ iCounter ] != ORTA ) ) && ( ( pTownNamesList[ iCounter ] != TIXA ) || ( fFoundTixa != FALSE) ) )
|
||||
//if( ( ( fFoundOrta != FALSE ) || ( pTownNamesList[ iCounter ] != ORTA ) ) && ( ( pTownNamesList[ iCounter ] != TIXA ) || ( fFoundTixa != FALSE) ) )
|
||||
if( gfHiddenTown[ pTownNamesList[ iCounter ] ] == TRUE )
|
||||
{
|
||||
if( fZoomFlag )
|
||||
{
|
||||
@@ -7548,9 +7651,17 @@ void HideExistenceOfUndergroundMapSector( UINT8 ubSectorX, UINT8 ubSectorY )
|
||||
void InitMapSecrets( void )
|
||||
{
|
||||
//UINT8 ubSamIndex;
|
||||
INT32 iCounter2 = 0;
|
||||
|
||||
fFoundTixa = FALSE;
|
||||
fFoundOrta = FALSE;
|
||||
|
||||
for( iCounter2 = 1; iCounter2 < NUM_TOWNS; iCounter2++ )
|
||||
{
|
||||
gfHiddenTown [ iCounter2 ] = gfHiddenTownTemp [ iCounter2 ];
|
||||
gfDrawHiddenTown[ iCounter2 ] = FALSE;
|
||||
gfIconTown [ iCounter2 ] = gfIconTownTemp [ iCounter2 ];
|
||||
}
|
||||
|
||||
//for( ubSamIndex = 0; ubSamIndex < NUMBER_OF_SAMS; ubSamIndex++ )
|
||||
//{
|
||||
@@ -7655,3 +7766,152 @@ void MilitiaDisbandYesNoBoxCallback( UINT8 bExitValue )
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef JA2UB
|
||||
void SetUpValidCampaignSectors( void )
|
||||
{
|
||||
/*
|
||||
INT32 iRow, iCol;
|
||||
|
||||
for( iRow=1; iRow<=16; iRow++ )
|
||||
{
|
||||
for( iCol=1; iCol<=16; iCol++ )
|
||||
{
|
||||
SectorInfo[ ( SECTOR( iCol , iRow ) ) ].fValidSector = FALSE;
|
||||
sBadSectorsList[iCol][iRow] = 1;
|
||||
// SectorInfo[ ( SECTOR( iCol , iRow ) ) ].fCampaignSector = FALSE;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
#ifdef JA2UB_PRESS_PREVIEW
|
||||
|
||||
INT32 iRow, iCol;
|
||||
|
||||
for( iRow=1; iRow<=16; iRow++ )
|
||||
{
|
||||
for( iCol=1; iCol<=16; iCol++ )
|
||||
{
|
||||
SectorInfo[ ( SECTOR( iCol , iRow ) ) ].fValidSector = FALSE;
|
||||
SectorInfo[ ( SECTOR( iCol , iRow ) ) ].fCampaignSector = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
SectorInfo[ ( SECTOR( 7 , 8 ) ) ].fValidSector = TRUE; //H7
|
||||
SectorInfo[ ( SECTOR( 7 , 8 ) ) ].fCampaignSector = TRUE;
|
||||
|
||||
SectorInfo[ ( SECTOR( 8 , 8 ) ) ].fValidSector = TRUE; //H8
|
||||
SectorInfo[ ( SECTOR( 8 , 8 ) ) ].fCampaignSector = TRUE;
|
||||
|
||||
SectorInfo[ ( SECTOR( 9 , 8 ) ) ].fValidSector = TRUE; //H9
|
||||
SectorInfo[ ( SECTOR( 9 , 8 ) ) ].fCampaignSector = TRUE; //H9
|
||||
|
||||
SectorInfo[ ( SECTOR( 10 , 8 ) ) ].fValidSector = TRUE; //H10
|
||||
SectorInfo[ ( SECTOR( 10 , 8 ) ) ].fCampaignSector = TRUE;
|
||||
|
||||
#ifndef JA2UB_PRESS_PREVIEW
|
||||
|
||||
SectorInfo[ ( SECTOR( 11, 8 ) ) ].fValidSector = TRUE; //H11
|
||||
SectorInfo[ ( SECTOR( 11, 8 ) ) ].fCampaignSector = TRUE;
|
||||
|
||||
#endif
|
||||
|
||||
SectorInfo[ ( SECTOR( 9 , 9 ) ) ].fValidSector = TRUE; //I9
|
||||
SectorInfo[ ( SECTOR( 9 , 9 ) ) ].fCampaignSector = TRUE;
|
||||
|
||||
SectorInfo[ ( SECTOR( 10 , 9 ) ) ].fValidSector = TRUE; //I10
|
||||
SectorInfo[ ( SECTOR( 10 , 9 ) ) ].fCampaignSector = TRUE;
|
||||
|
||||
#ifndef JA2UB_PRESS_PREVIEW
|
||||
|
||||
SectorInfo[ ( SECTOR( 11 , 9 ) ) ].fValidSector = TRUE; //I11
|
||||
SectorInfo[ ( SECTOR( 11 , 9 ) ) ].fCampaignSector = TRUE;
|
||||
|
||||
SectorInfo[ ( SECTOR( 12 , 9 ) ) ].fValidSector = TRUE; //I12
|
||||
SectorInfo[ ( SECTOR( 12 , 9 ) ) ].fCampaignSector = TRUE;
|
||||
|
||||
SectorInfo[ ( SECTOR( 13 , 9 ) ) ].fValidSector = TRUE; //I13
|
||||
SectorInfo[ ( SECTOR( 13 , 9 ) ) ].fCampaignSector = TRUE;
|
||||
|
||||
SectorInfo[ ( SECTOR( 11 , 10 ) ) ].fValidSector = TRUE; //J11
|
||||
SectorInfo[ ( SECTOR( 11 , 10 ) ) ].fCampaignSector = TRUE;
|
||||
|
||||
SectorInfo[ ( SECTOR( 12 , 10 ) ) ].fValidSector = TRUE; //J12
|
||||
SectorInfo[ ( SECTOR( 12 , 10 ) ) ].fCampaignSector = TRUE;
|
||||
|
||||
SectorInfo[ ( SECTOR( 13 , 10 ) ) ].fValidSector = TRUE; //J13
|
||||
SectorInfo[ ( SECTOR( 13 , 10 ) ) ].fCampaignSector = TRUE;
|
||||
|
||||
SectorInfo[ ( SECTOR( 14 , 10 ) ) ].fValidSector = TRUE; //J14
|
||||
SectorInfo[ ( SECTOR( 14 , 10 ) ) ].fCampaignSector = TRUE;
|
||||
|
||||
SectorInfo[ ( SECTOR( 14 , 11 ) ) ].fValidSector = TRUE; //K14
|
||||
SectorInfo[ ( SECTOR( 14 , 11 ) ) ].fCampaignSector = TRUE;
|
||||
|
||||
SectorInfo[ ( SECTOR( 15 , 11 ) ) ].fValidSector = TRUE; //K15
|
||||
SectorInfo[ ( SECTOR( 15 , 11 ) ) ].fCampaignSector = TRUE;
|
||||
|
||||
SectorInfo[ ( SECTOR( 16 , 11 ) ) ].fValidSector = TRUE; //K16
|
||||
SectorInfo[ ( SECTOR( 16 , 11 ) ) ].fCampaignSector = TRUE;
|
||||
|
||||
SectorInfo[ ( SECTOR( 15 , 12 ) ) ].fValidSector = TRUE; //L15
|
||||
SectorInfo[ ( SECTOR( 15 , 12 ) ) ].fCampaignSector = TRUE;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
BOOLEAN SaveHiddenTownToSaveGameFile( HWFILE hFile )
|
||||
{
|
||||
UINT32 uiNumBytesWritten;
|
||||
|
||||
FileWrite( hFile, &gfHiddenTown, sizeof( gfHiddenTown), &uiNumBytesWritten );
|
||||
if( uiNumBytesWritten != sizeof( gfHiddenTown ) )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
FileWrite( hFile, &gfDrawHiddenTown, sizeof( gfDrawHiddenTown), &uiNumBytesWritten );
|
||||
if( uiNumBytesWritten != sizeof( gfDrawHiddenTown ) )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
FileWrite( hFile, &gfIconTown, sizeof( gfIconTown), &uiNumBytesWritten );
|
||||
if( uiNumBytesWritten != sizeof( gfIconTown ) )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
BOOLEAN LoadHiddenTownFromLoadGameFile( HWFILE hFile )
|
||||
{
|
||||
UINT32 uiNumBytesRead;
|
||||
|
||||
FileRead( hFile, &gfHiddenTown, sizeof( gfHiddenTown), &uiNumBytesRead );
|
||||
if( uiNumBytesRead != sizeof( gfHiddenTown ) )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
FileRead( hFile, &gfDrawHiddenTown, sizeof( gfDrawHiddenTown), &uiNumBytesRead );
|
||||
if( uiNumBytesRead != sizeof( gfDrawHiddenTown ) )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
FileRead( hFile, &gfIconTown, sizeof( gfIconTown), &uiNumBytesRead );
|
||||
if( uiNumBytesRead != sizeof( gfIconTown ) )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user