From f65f029305180e7cf06dbc8ba155106b30701d24 Mon Sep 17 00:00:00 2001 From: Wanne Date: Thu, 30 Jun 2011 14:53:16 +0000 Subject: [PATCH] MERGED FEATURE FROM DEVELOPMENT TRUNK: Enlarging Strategy Map (Revision: 4527 - 4534) - This feature enlarges the strategy map in 800x600 and 1024x768 (like in Wildfire 6.0) - You also have to update the GameDir folder from the official SVN GameDir folder with the latest graphics git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@4551 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Strategic/Map Screen Interface Border.cpp | 79 ++-- Strategic/Map Screen Interface Map.cpp | 281 ++++++++++---- Strategic/Map Screen Interface Map.h | 49 ++- Strategic/mapscreen.cpp | 452 +++++++++++----------- Strategic/mapscreen.h | 1 - 5 files changed, 500 insertions(+), 362 deletions(-) diff --git a/Strategic/Map Screen Interface Border.cpp b/Strategic/Map Screen Interface Border.cpp index 50d87ec6..07d40018 100644 --- a/Strategic/Map Screen Interface Border.cpp +++ b/Strategic/Map Screen Interface Border.cpp @@ -139,9 +139,6 @@ void LevelMarkerBtnCallback(MOUSE_REGION * pRegion, INT32 iReason ); void CommonBtnCallbackBtnDownChecks( void ); -void DrawTextOnMapBorder( void ); - - /* void BtnScrollNorthMapScreenCallback( GUI_BUTTON *btn,INT32 reason ); void BtnScrollSouthMapScreenCallback( GUI_BUTTON *btn,INT32 reason ); @@ -151,31 +148,6 @@ void BtnLowerLevelBtnCallback(GUI_BUTTON *btn,INT32 reason); void BtnRaiseLevelBtnCallback(GUI_BUTTON *btn,INT32 reason); */ -void DrawTextOnMapBorder( void ) -{ - INT16 sX = 0, sY = 0; - CHAR16 sString[ 64 ]; - - // parse the string - swprintf( sString, zMarksMapScreenText[ 24 ] ); - - SetFontDestBuffer( guiSAVEBUFFER, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, FALSE ); - - //FindFontCenterCoordinates( MAP_INV_X_OFFSET + MAP_INVENTORY_POOL_SLOT_START_X, MAP_INVENTORY_POOL_SLOT_START_Y - 20, 630 - MAP_INVENTORY_POOL_SLOT_START_X, GetFontHeight( FONT14ARIAL ), sString, FONT14ARIAL, &sX, &sY ); - - FindFontCenterCoordinates( 271, 18, SCREEN_WIDTH - 271, GetFontHeight( FONT14ARIAL ), sString, FONT14ARIAL, &sX, &sY ); - - SetFont( FONT14ARIAL ); - SetFontForeground( FONT_WHITE ); - SetFontBackground( FONT_BLACK ); - - mprintf( sX, sY, sString ); - - SetFontDestBuffer( FRAME_BUFFER, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, FALSE ); - -} - - BOOLEAN LoadMapBorderGraphics( void ) { // this procedure will load the graphics needed for the map border @@ -256,11 +228,6 @@ void RenderMapBorder( void ) BltVideoObject( guiSAVEBUFFER , hHandle, 0, MAP_BORDER_X, MAP_BORDER_Y, VO_BLT_SRCTRANSPARENCY,NULL ); } - if (iResolution == 1 || iResolution == 2) - { - DrawTextOnMapBorder(); - } - RestoreExternBackgroundRect( MAP_BORDER_X, MAP_BORDER_Y, SCREEN_WIDTH - MAP_BORDER_X, SCREEN_HEIGHT ); // show the level marker @@ -325,13 +292,31 @@ void RenderMapBorderEtaPopUp( void ) // get and blt ETA box GetVideoObject(&hHandle, guiMapBorderEtaPopUp ); - /*BltVideoObject( FRAME_BUFFER , hHandle, 0, MAP_BORDER_X + 215, 291, VO_BLT_SRCTRANSPARENCY,NULL ); + UINT16 offsetX = 0; + UINT16 offsetY = 0; + UINT16 offsetBorderY = 0; - InvalidateRegion( MAP_BORDER_X + 215, 291, MAP_BORDER_X + 215 + 100 , 310);*/ + if (iResolution == 0) + { + offsetX = 215; + offsetY = 291; + offsetBorderY = offsetY + 19; + } + else if (iResolution == 1) + { + offsetX = 215 + 80; + offsetY = 291 + 120; + offsetBorderY = offsetY + 19; + } + else if (iResolution == 2) + { + offsetX = 215 + 180; + offsetY = 291 + 285; + offsetBorderY = offsetY + 19; + } - BltVideoObject( FRAME_BUFFER , hHandle, 0, MAP_BORDER_X + MAP_BORDER_X_OFFSET + 215, MAP_BORDER_Y_OFFSET + 291, VO_BLT_SRCTRANSPARENCY,NULL ); - - InvalidateRegion( MAP_BORDER_X + MAP_BORDER_X_OFFSET + 215, MAP_BORDER_Y_OFFSET + 291, MAP_BORDER_X + MAP_BORDER_X_OFFSET + 215 + 100 , MAP_BORDER_Y_OFFSET + 310); + BltVideoObject( FRAME_BUFFER , hHandle, 0, MAP_BORDER_X + MAP_BORDER_X_OFFSET + offsetX, MAP_BORDER_Y_OFFSET + offsetY, VO_BLT_SRCTRANSPARENCY,NULL ); + InvalidateRegion( MAP_BORDER_X + MAP_BORDER_X_OFFSET + offsetX, MAP_BORDER_Y_OFFSET + offsetY, MAP_BORDER_X + MAP_BORDER_X_OFFSET + offsetX + 100 , MAP_BORDER_Y_OFFSET + offsetBorderY); return; } @@ -1884,23 +1869,25 @@ void MapBorderButtonOn( UINT8 ubBorderButtonIndex ) // HEADROCK HAM 4: Init the coordinates for all Map Border buttons void InitMapBorderButtonCoordinates() { + UINT32 buttonOffset = 155; // 160 + MAP_BORDER_TOWN_BTN_X = MAP_BORDER_X + ((SCREEN_WIDTH - MAP_BORDER_X) / 2 - 152); - MAP_BORDER_TOWN_BTN_Y = (SCREEN_HEIGHT - 160); + MAP_BORDER_TOWN_BTN_Y = (SCREEN_HEIGHT - buttonOffset); MAP_BORDER_MINE_BTN_X = MAP_BORDER_X + ((SCREEN_WIDTH - MAP_BORDER_X) / 2 - 109); - MAP_BORDER_MINE_BTN_Y = (SCREEN_HEIGHT - 160); + MAP_BORDER_MINE_BTN_Y = (SCREEN_HEIGHT - buttonOffset); MAP_BORDER_TEAMS_BTN_X = MAP_BORDER_X + ((SCREEN_WIDTH - MAP_BORDER_X) / 2 - 66); - MAP_BORDER_TEAMS_BTN_Y = (SCREEN_HEIGHT - 160); + MAP_BORDER_TEAMS_BTN_Y = (SCREEN_HEIGHT - buttonOffset); MAP_BORDER_AIRSPACE_BTN_X = MAP_BORDER_X + ((SCREEN_WIDTH - MAP_BORDER_X) / 2 + 20); - MAP_BORDER_AIRSPACE_BTN_Y = (SCREEN_HEIGHT - 160); + MAP_BORDER_AIRSPACE_BTN_Y = (SCREEN_HEIGHT - buttonOffset); MAP_BORDER_ITEM_BTN_X = MAP_BORDER_X + ((SCREEN_WIDTH - MAP_BORDER_X) / 2 + 63); - MAP_BORDER_ITEM_BTN_Y = (SCREEN_HEIGHT - 160); + MAP_BORDER_ITEM_BTN_Y = (SCREEN_HEIGHT - buttonOffset); MAP_BORDER_MILITIA_BTN_X = MAP_BORDER_X + ((SCREEN_WIDTH - MAP_BORDER_X) / 2 - 23); - MAP_BORDER_MILITIA_BTN_Y = (SCREEN_HEIGHT - 160); + MAP_BORDER_MILITIA_BTN_Y = (SCREEN_HEIGHT - buttonOffset); MAP_BORDER_MOBILE_BTN_X = 0; MAP_BORDER_MOBILE_BTN_Y = 0; MAP_LEVEL_MARKER_X = (MAP_BORDER_X + ((SCREEN_WIDTH - MAP_BORDER_X) / 2 + 114)); - MAP_LEVEL_MARKER_Y = (SCREEN_HEIGHT - 160); //(SCREEN_HEIGHT - 157) //323 + MAP_LEVEL_MARKER_Y = (SCREEN_HEIGHT - buttonOffset); //(SCREEN_HEIGHT - 157) //323 MAP_LEVEL_MARKER_DELTA = 8; MAP_LEVEL_MARKER_WIDTH = 55; //( (SCREEN_WIDTH - 20) - MAP_LEVEL_MARKER_X ) @@ -1908,7 +1895,7 @@ void InitMapBorderButtonCoordinates() { // Mobile button appears next to Militia button. MAP_BORDER_MOBILE_BTN_X = MAP_BORDER_X + ((SCREEN_WIDTH - MAP_BORDER_X) / 2 + 16); - MAP_BORDER_MOBILE_BTN_Y = (SCREEN_HEIGHT - 160); + MAP_BORDER_MOBILE_BTN_Y = (SCREEN_HEIGHT - buttonOffset); // Airspace, Items, ZLevel buttons all moved to the right (+22px, +22px, +10px). MAP_BORDER_AIRSPACE_BTN_X = MAP_BORDER_X + ((SCREEN_WIDTH - MAP_BORDER_X) / 2 + 42); diff --git a/Strategic/Map Screen Interface Map.cpp b/Strategic/Map Screen Interface Map.cpp index 3f7757a4..d7c5488f 100644 --- a/Strategic/Map Screen Interface Map.cpp +++ b/Strategic/Map Screen Interface Map.cpp @@ -53,6 +53,46 @@ #include "Facilities.h" #include "MilitiaSquads.h" +UINT16 MAP_GRID_X; +UINT16 MAP_GRID_Y; + +UINT16 MAP_BORDER_X_OFFSET; +UINT16 MAP_BORDER_Y_OFFSET; + +UINT16 MAP_VIEW_START_X; +UINT16 MAP_VIEW_START_Y; +UINT16 MAP_VIEW_WIDTH; +UINT16 MAP_VIEW_HEIGHT; + + +INT32 MAP_FONT; +// x start of hort index +UINT16 MAP_HORT_INDEX_X; +// y position of hort index +UINT16 MAP_HORT_INDEX_Y; +// height of hort index +UINT16 MAP_HORT_HEIGHT; + +// The letters on the left side of the map +// vert index start x +UINT16 MAP_VERT_INDEX_X; +// vert index start y +UINT16 MAP_VERT_INDEX_Y; +// vert width +UINT16 MAP_VERT_WIDTH; + +// Helicopter eta popup position +UINT16 MAP_HELICOPTER_ETA_POPUP_X; +UINT16 MAP_HELICOPTER_ETA_POPUP_Y; +UINT16 MAP_HELICOPTER_UPPER_ETA_POPUP_Y; +UINT16 MAP_HELICOPTER_ETA_POPUP_WIDTH; +UINT16 MAP_HELICOPTER_ETA_POPUP_HEIGHT; + +// sublevel text string position +UINT16 MAP_LEVEL_STRING_X; +UINT16 MAP_LEVEL_STRING_Y; + + // zoom x and y coords for map scrolling INT32 iZoomX = 0; INT32 iZoomY = 0; @@ -83,18 +123,9 @@ INT32 iZoomY = 0; #define HORT_SCROLL 14 #define VERT_SCROLL 10 -// the pop up for helicopter stuff -#define MAP_HELICOPTER_ETA_POPUP_X (400 + iScreenWidthOffset) -#define MAP_HELICOPTER_ETA_POPUP_Y (250 + iScreenHeightOffset) -#define MAP_HELICOPTER_UPPER_ETA_POPUP_Y (50 + iScreenHeightOffset) -#define MAP_HELICOPTER_ETA_POPUP_WIDTH 120 -#define MAP_HELICOPTER_ETA_POPUP_HEIGHT 68 - -#define MAP_LEVEL_STRING_X (SCREEN_WIDTH - 208) //432 -#define MAP_LEVEL_STRING_Y (SCREEN_HEIGHT - 175) //305 - // font -#define MAP_FONT BLOCKFONT2 +//#define MAP_FONT BLOCKFONT2 +// ---------------------- // index color #define MAP_INDEX_COLOR 32*4-9 @@ -103,27 +134,6 @@ INT32 iZoomY = 0; #define MAX_VIEW_SECTORS 16 -//Map Location index regions - - -// WANNE: The numbers above the map -// x start of hort index -#define MAP_HORT_INDEX_X (MAP_BORDER_X + MAP_BORDER_X_OFFSET + 31)//(SCREEN_WIDTH - 348) //292 -// y position of hort index -#define MAP_HORT_INDEX_Y (MAP_BORDER_Y + MAP_BORDER_Y_OFFSET + 8) -// height of hort index -#define MAP_HORT_HEIGHT GetFontHeight(MAP_FONT) - - -// WANNE: The letters on the left side of the map) -// vert index start x -#define MAP_VERT_INDEX_X (MAP_BORDER_X + MAP_BORDER_X_OFFSET + 13) //(SCREEN_WIDTH - 367) // 273 -// vert index start y -#define MAP_VERT_INDEX_Y (MAP_BORDER_Y + MAP_BORDER_Y_OFFSET + 29) -// vert width -#define MAP_VERT_WIDTH GetFontHeight(MAP_FONT) - - // "Boxes" Icons #define SMALL_YELLOW_BOX 0 #define BIG_YELLOW_BOX 1 @@ -136,13 +146,9 @@ INT32 iZoomY = 0; #define SMALL_QUESTION_MARK 8 #define BIG_QUESTION_MARK 9 - #define MERC_ICONS_PER_LINE 6 #define ROWS_PER_SECTOR 5 -#define MAP_X_ICON_OFFSET 2 -#define MAP_Y_ICON_OFFSET 1 - // Arrow Offsets #define UP_X 13 #define UP_Y 7 @@ -295,6 +301,8 @@ UINT32 guiCHARICONS; // the merc arrival sector landing zone icon UINT32 guiBULLSEYE; +UINT16 MAP_MILITIA_BOX_POS_X; +UINT16 MAP_MILITIA_BOX_POS_Y; // the max allowable towns militia in a sector #define MAP_MILITIA_MAP_X 4 @@ -304,8 +312,8 @@ UINT32 guiBULLSEYE; #define MILITIA_BOX_ROWS 3 #define MILITIA_BOX_BOX_HEIGHT 36 #define MILITIA_BOX_BOX_WIDTH 42 -#define MAP_MILITIA_BOX_POS_X 400 -#define MAP_MILITIA_BOX_POS_Y 125 + + #define POPUP_MILITIA_ICONS_PER_ROW 5 // max 6 rows gives the limit of 30 militia #define MEDIUM_MILITIA_ICON_SPACING 5 @@ -445,10 +453,14 @@ INT16 gpSamSectorY[ MAX_NUMBER_OF_SAMS ]; extern BOOLEAN fSamSiteFoundOrig[ MAX_NUMBER_OF_SAMS ]; // map region +/* SGPRect MapScreenRect={ (MAP_VIEW_START_X+MAP_GRID_X - 2), ( MAP_VIEW_START_Y+MAP_GRID_Y - 1), MAP_VIEW_START_X + MAP_VIEW_WIDTH - 1 + MAP_GRID_X , MAP_VIEW_START_Y+MAP_VIEW_HEIGHT-10+MAP_GRID_Y}; +*/ + +SGPRect MapScreenRect; extern SGPRect gOldClipRect; // symbol already declared globally in renderworld.cpp (jonathanl) @@ -581,7 +593,7 @@ extern void EndConfirmMapMoveMode( void ); extern BOOLEAN CanDrawSectorCursor( void ); - +// This method outputs the numbers (1-16) and letters (A - P) void DrawMapIndexBigMap( BOOLEAN fSelectedCursorIsYellow ) { // this procedure will draw the coord indexes on the zoomed out map @@ -589,9 +601,7 @@ void DrawMapIndexBigMap( BOOLEAN fSelectedCursorIsYellow ) INT32 iCount=0; BOOLEAN fDrawCursors; - SetFontDestBuffer( FRAME_BUFFER, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, FALSE ); - //SetFontColors(FONT_FCOLOR_GREEN) SetFont(MAP_FONT); SetFontForeground(MAP_INDEX_COLOR); // Dk Red is 163 @@ -1110,9 +1120,8 @@ DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Map Screen1"); } // red for low loyalty, green otherwise - SetFontForeground( ( UINT8 ) ( fLoyaltyTooLowToTrainMilitia ? FONT_MCOLOR_RED : FONT_MCOLOR_LTGREEN ) ); - - DrawTownLabels(sString, sStringA, usX, usY); + SetFontForeground( ( UINT8 ) ( fLoyaltyTooLowToTrainMilitia ? FONT_MCOLOR_RED : FONT_MCOLOR_LTGREEN ) ); + DrawTownLabels(sString, sStringA, usX, usY); } } } @@ -1306,13 +1315,29 @@ void ShowEnemiesInSector( INT16 sSectorX, INT16 sSectorY, INT16 sNumberOfEnemies } } - - void ShowUncertainNumberEnemiesInSector( INT16 sSectorX, INT16 sSectorY ) { INT16 sXPosition = 0, sYPosition = 0; HVOBJECT hIconHandle; + UINT8 iconOffsetX = 0; + UINT8 iconOffsetY = 0; + + if (iResolution == 0) + { + iconOffsetX = 2; + iconOffsetY = 1; + } + else if (iResolution == 1) + { + iconOffsetX = 8; + iconOffsetY = 12; + } + else if (iResolution == 2) + { + iconOffsetX = 12; + iconOffsetY = 13; + } // grab the x and y postions sXPosition = sSectorX; @@ -1324,8 +1349,8 @@ void ShowUncertainNumberEnemiesInSector( INT16 sSectorX, INT16 sSectorY ) // check if we are zoomed in...need to offset in case for scrolling purposes if(!fZoomFlag) { - sXPosition = ( INT16 )( MAP_X_ICON_OFFSET + ( MAP_VIEW_START_X + ( sSectorX * MAP_GRID_X + 1 ) ) - 1 ); - sYPosition = ( INT16 )( ( ( MAP_VIEW_START_Y + ( sSectorY * MAP_GRID_Y ) + 1 ) ) ); + sXPosition = ( INT16 )( iconOffsetX + ( MAP_VIEW_START_X + ( sSectorX * MAP_GRID_X + 1 ) ) - 1 ); + sYPosition = ( INT16 )( ( ( iconOffsetY + ( sSectorY * MAP_GRID_Y ) + 1 ) ) ); sYPosition -= 2; // small question mark @@ -1436,7 +1461,7 @@ BOOLEAN ShadeMapElem( INT16 sMapX, INT16 sMapY, INT32 iColor ) sScreenX += 1; // compensate for original BIG_MAP blit being done at MAP_VIEW_START_X + 1 - clip.iLeft = 2 * ( sScreenX - ( MAP_VIEW_START_X + 1 ) ); + clip.iLeft = 2 * ( sScreenX - ( MAP_VIEW_START_X + 1 ) ); clip.iTop = 2 * ( sScreenY - MAP_VIEW_START_Y ); clip.iRight = clip.iLeft + ( 2 * MAP_GRID_X ); clip.iBottom = clip.iTop + ( 2 * MAP_GRID_Y ); @@ -1925,6 +1950,25 @@ BOOLEAN ShadeMapElemZoomIn(INT16 sMapX, INT16 sMapY, INT32 iColor ) return ( TRUE ); } +void InitializeMilitiaPopup(void) +{ + // WANNE.MAP.TODO: + if (iResolution == 0) + { + MAP_MILITIA_BOX_POS_X = 400; + MAP_MILITIA_BOX_POS_Y = 125; + } + else if (iResolution == 1) + { + MAP_MILITIA_BOX_POS_X = 400 + 77; + MAP_MILITIA_BOX_POS_Y = 125 + 116; + } + else if (iResolution == 2) + { + MAP_MILITIA_BOX_POS_X = 400 + 190; + MAP_MILITIA_BOX_POS_Y = 125 + 285; + } +} BOOLEAN InitializePalettesForMap( void ) { @@ -1936,7 +1980,14 @@ BOOLEAN InitializePalettesForMap( void ) // load image vs_desc.fCreateFlags = VSURFACE_CREATE_FROMFILE | VSURFACE_SYSTEM_MEM_USAGE; - strcpy(vs_desc.ImageFile, "INTERFACE\\b_map.pcx"); + + if (iResolution == 0) + strcpy(vs_desc.ImageFile, "INTERFACE\\b_map.pcx"); + else if (iResolution == 1) + strcpy(vs_desc.ImageFile, "INTERFACE\\b_map_800x600.pcx"); + else if (iResolution == 2) + strcpy(vs_desc.ImageFile, "INTERFACE\\b_map_1024x768.pcx"); + CHECKF(AddVideoSurface(&vs_desc, &uiTempMap)); // get video surface @@ -4328,6 +4379,24 @@ void ShowPeopleInMotion( INT16 sX, INT16 sY ) return; } + UINT8 iconOffsetX = 0; + UINT8 iconOffsetY = 0; + + if (iResolution == 0) + { + iconOffsetX = 2; + iconOffsetY = 1; + } + else if (iResolution == 1) + { + iconOffsetX = 3; + iconOffsetY = 2; + } + else if (iResolution == 2) + { + iconOffsetX = 4; + iconOffsetY = 3; + } // show the icons for people in motion from this sector to the next guy over for( iCounter = 0; iCounter < 4; iCounter++ ) @@ -4479,7 +4548,7 @@ void ShowPeopleInMotion( INT16 sX, INT16 sY ) if(!fZoomFlag) { iX = MAP_VIEW_START_X+( iX * MAP_GRID_X ) + sOffsetX; - iY = MAP_Y_ICON_OFFSET + MAP_VIEW_START_Y + ( iY * MAP_GRID_Y ) + sOffsetY; + iY = iconOffsetY + MAP_VIEW_START_Y + ( iY * MAP_GRID_Y ) + sOffsetY; BltVideoObject(guiSAVEBUFFER, hIconHandle, ( UINT16 )iCounter , ( INT16 ) iX, ( INT16 ) iY , VO_BLT_SRCTRANSPARENCY, NULL ); } @@ -4771,6 +4840,13 @@ void DisplayPositionOfHelicopter( void ) ClipBlitsToMapViewRegion( ); GetVideoObject( &hHandle, guiHelicopterIcon ); + + if (iResolution > 0) + { + x = x + (MAP_GRID_X / 2) - 10; + y = y + 1 + (MAP_GRID_Y / 2) - 10; + } + BltVideoObject( FRAME_BUFFER, hHandle, HELI_ICON, x, y, VO_BLT_SRCTRANSPARENCY, NULL ); // now get number of people and blit that too @@ -4834,6 +4910,13 @@ void DisplayDestinationOfHelicopter( void ) GetVideoObject( &hHandle, guiHelicopterIcon ); BltVideoObject( FRAME_BUFFER, hHandle, HELI_SHADOW_ICON, x, y, VO_BLT_SRCTRANSPARENCY, NULL ); + + if (iResolution > 0) + { + x = x + (MAP_GRID_X / 2) - 10; + y = y + 1 + (MAP_GRID_Y / 2) - 10; + } + InvalidateRegion( x, y, x + HELI_SHADOW_ICON_WIDTH, y + HELI_SHADOW_ICON_HEIGHT ); RestoreClipRegionToFullScreen( ); @@ -5408,7 +5491,14 @@ BOOLEAN LoadMilitiaPopUpBox( void ) // load the militia pop up box VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\Militia.sti", VObjectDesc.ImageFile); + + if (iResolution == 0) + FilenameForBPP("INTERFACE\\Militia.sti", VObjectDesc.ImageFile); + else if (iResolution == 1) + FilenameForBPP("INTERFACE\\Militia_800x600.sti", VObjectDesc.ImageFile); + else if (iResolution == 2) + FilenameForBPP("INTERFACE\\Militia_1024x768.sti", VObjectDesc.ImageFile); + CHECKF(AddVideoObject(&VObjectDesc, &guiMilitia)); VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; @@ -5438,14 +5528,11 @@ void RemoveMilitiaPopUpBox( void ) return; } - - BOOLEAN DrawMilitiaPopUpBox( void ) { HVOBJECT hVObject; ETRLEObject *pTrav; - if( !fShowMilitia ) { sSelectedMilitiaTown = 0; @@ -5556,7 +5643,6 @@ void CreateDestroyMilitiaPopUPRegions( void ) return; } - void RenderIconsPerSectorForSelectedTown( void ) { INT16 sBaseSectorValue = 0; @@ -5804,7 +5890,12 @@ void CreateDestroyMilitiaSectorButtons( void ) sY += ( iCounter * ( MILITIA_BTN_HEIGHT ) + 2 ); // set the button image - giMapMilitiaButtonImage[ iCounter ]= LoadButtonImage( "INTERFACE\\militia.sti" ,-1,3,-1,4,-1 ); + if (iResolution == 0) + giMapMilitiaButtonImage[ iCounter ]= LoadButtonImage( "INTERFACE\\militia.sti", -1,3,-1,4,-1 ); + else if (iResolution == 1) + giMapMilitiaButtonImage[ iCounter ]= LoadButtonImage( "INTERFACE\\militia_800x600.sti", -1,3,-1,4,-1 ); + else if (iResolution == 2) + giMapMilitiaButtonImage[ iCounter ]= LoadButtonImage( "INTERFACE\\militia_1024x768.sti", -1,3,-1,4,-1 ); // set the button value giMapMilitiaButton[ iCounter ] = QuickCreateButton( giMapMilitiaButtonImage[ iCounter ], sX, sY, @@ -6267,9 +6358,21 @@ DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"Map Screen4"); void CreateMilitiaPanelBottomButton( void ) { // set the button image - giMapMilitiaButtonImage[ 3 ]= LoadButtonImage( "INTERFACE\\militia.sti" ,-1,1,-1,2,-1 ); - giMapMilitiaButtonImage[ 4 ]= LoadButtonImage( "INTERFACE\\militia.sti" ,-1,1,-1,2,-1 ); - + if (iResolution == 0) + { + giMapMilitiaButtonImage[ 3 ]= LoadButtonImage( "INTERFACE\\militia.sti" ,-1,1,-1,2,-1 ); + giMapMilitiaButtonImage[ 4 ]= LoadButtonImage( "INTERFACE\\militia.sti" ,-1,1,-1,2,-1 ); + } + else if (iResolution == 1) + { + giMapMilitiaButtonImage[ 3 ]= LoadButtonImage( "INTERFACE\\militia_800x600.sti" ,-1,1,-1,2,-1 ); + giMapMilitiaButtonImage[ 4 ]= LoadButtonImage( "INTERFACE\\militia_800x600.sti" ,-1,1,-1,2,-1 ); + } + else if (iResolution == 2) + { + giMapMilitiaButtonImage[ 3 ]= LoadButtonImage( "INTERFACE\\militia_1024x768.sti" ,-1,1,-1,2,-1 ); + giMapMilitiaButtonImage[ 4 ]= LoadButtonImage( "INTERFACE\\militia_1024x768.sti" ,-1,1,-1,2,-1 ); + } giMapMilitiaButton[ 3 ] = QuickCreateButton( giMapMilitiaButtonImage[ 3 ], MAP_MILITIA_BOX_POS_X + MAP_MILITIA_BOX_AUTO_BOX_X, MAP_MILITIA_BOX_POS_Y + MAP_MILITIA_BOX_AUTO_BOX_Y, BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1, @@ -6416,7 +6519,6 @@ void RenderShadingForUnControlledSectors( void ) return; } - void DrawTownMilitiaForcesOnMap( void ) { INT32 iCounterB = 0, iTotalNumberOfTroops = 0, iIconValue = 0; @@ -6646,6 +6748,9 @@ void ShadeSubLevelsNotVisited( void ) void HandleLowerLevelMapBlit( void ) { + UINT8 offsetX = 0; + UINT8 offsetY = 0; + HVOBJECT hHandle; // blits the sub level maps @@ -6665,8 +6770,24 @@ void HandleLowerLevelMapBlit( void ) return; } + if (iResolution == 0) + { + offsetX = 21; + offsetY = 17; + } + else if (iResolution == 1) + { + offsetX = 21 + 8; + offsetY = 17 + 7; + } + else if (iResolution == 2) + { + offsetX = 21 + 21; + offsetY = 17 + 17; + } + // handle the blt of the sublevel - BltVideoObject( guiSAVEBUFFER, hHandle, 0,MAP_VIEW_START_X + 21, MAP_VIEW_START_Y + 17, VO_BLT_SRCTRANSPARENCY, NULL ); + BltVideoObject( guiSAVEBUFFER, hHandle, iResolution, MAP_VIEW_START_X + offsetX, MAP_VIEW_START_Y + offsetY, VO_BLT_SRCTRANSPARENCY, NULL ); // handle shading of sublevels ShadeSubLevelsNotVisited( ); @@ -7249,13 +7370,36 @@ void ShowItemsOnMap( void ) } - void DrawMapBoxIcon( HVOBJECT hIconHandle, UINT16 usVOIndex, INT16 sMapX, INT16 sMapY, UINT8 ubIconPosition ) { INT32 iRowNumber, iColumnNumber; INT32 iX, iY; + UINT8 iconOffsetX = 0; + UINT8 iconOffsetY = 0; + UINT8 iconSize = 0; + + if (iResolution == 0) + { + iconOffsetX = 2; + iconOffsetY = 1; + iconSize = 3; + } + else if (iResolution == 1) + { + iconOffsetX = 2; + iconOffsetY = 1; + iconSize = 4; + } + else if (iResolution == 2) + { + iconOffsetX = 2; + iconOffsetY = 1; + iconSize = 6; + } + + // don't show any more icons than will fit into one sector, to keep them from spilling into sector(s) beneath if ( ubIconPosition >= ( MERC_ICONS_PER_LINE * ROWS_PER_SECTOR ) ) { @@ -7268,8 +7412,8 @@ void DrawMapBoxIcon( HVOBJECT hIconHandle, UINT16 usVOIndex, INT16 sMapX, INT16 if ( !fZoomFlag ) { - iX = MAP_VIEW_START_X + ( sMapX * MAP_GRID_X ) + MAP_X_ICON_OFFSET + ( 3 * iColumnNumber ); - iY = MAP_VIEW_START_Y + ( sMapY * MAP_GRID_Y ) + MAP_Y_ICON_OFFSET + ( 3 * iRowNumber ); + iX = MAP_VIEW_START_X + ( sMapX * MAP_GRID_X ) + iconOffsetX + ( iconSize * iColumnNumber ); + iY = MAP_VIEW_START_Y + ( sMapY * MAP_GRID_Y ) + iconOffsetY + ( iconSize * iRowNumber ); BltVideoObject( guiSAVEBUFFER, hIconHandle, usVOIndex , iX, iY, VO_BLT_SRCTRANSPARENCY, NULL ); InvalidateRegion( iX, iY, iX + DMAP_GRID_X, iY + DMAP_GRID_Y ); @@ -7376,6 +7520,13 @@ void DrawBullseye() // draw the bullseye in that sector GetVideoObject( &hHandle, guiBULLSEYE); + + if (iResolution > 0) + { + sX = sX + MAP_GRID_X / 2 - 10; + sY = sY + 1 + MAP_GRID_Y / 2 - 10; + } + BltVideoObject( guiSAVEBUFFER, hHandle, 0, sX, sY, VO_BLT_SRCTRANSPARENCY, NULL ); } diff --git a/Strategic/Map Screen Interface Map.h b/Strategic/Map Screen Interface Map.h index 1b8eae3a..02a026aa 100644 --- a/Strategic/Map Screen Interface Map.h +++ b/Strategic/Map Screen Interface Map.h @@ -15,6 +15,8 @@ void GetScreenXYFromMapXY( INT16 sMapX, INT16 sMapY, INT16 *psX, INT16 *psY ); void GetScreenXYFromMapXYStationary( INT16 sMapX, INT16 sMapY, INT16 *psX, INT16 *psY ); BOOLEAN InitializePalettesForMap( void ); +void InitializeMilitiaPopup(void); + void ShutDownPalettesForMap( void ); // plot path for helicopter @@ -145,9 +147,7 @@ enum { }; -// size of squares on the map -#define MAP_GRID_X 21 -#define MAP_GRID_Y 18 + // scroll bounds @@ -160,28 +160,45 @@ enum { #define MAP_BORDER_X 261 #define MAP_BORDER_Y 0 +// size of squares on the map +extern UINT16 MAP_GRID_X; +extern UINT16 MAP_GRID_Y; -// WANNE: The offset of the map border -#define MAP_BORDER_X_OFFSET (((SCREEN_WIDTH - 261) - 380) / 2) -#define MAP_BORDER_Y_OFFSET (((SCREEN_HEIGHT - 121) - 360) / 2) +extern UINT16 MAP_BORDER_X_OFFSET; +extern UINT16 MAP_BORDER_Y_OFFSET; -// WANNE: The map view region (map image pcx) -#define MAP_VIEW_START_X (MAP_BORDER_X + MAP_BORDER_X_OFFSET + 9) -#define MAP_VIEW_START_Y (MAP_BORDER_Y + MAP_BORDER_Y_OFFSET + 10) -#define MAP_VIEW_WIDTH 336 -#define MAP_VIEW_HEIGHT 298 +extern UINT16 MAP_VIEW_START_X; +extern UINT16 MAP_VIEW_START_Y; +extern UINT16 MAP_VIEW_WIDTH; +extern UINT16 MAP_VIEW_HEIGHT; + +extern INT32 MAP_FONT; + +extern UINT16 MAP_HORT_INDEX_X; +extern UINT16 MAP_HORT_INDEX_Y; +extern UINT16 MAP_HORT_HEIGHT; +extern UINT16 MAP_VERT_INDEX_X; +extern UINT16 MAP_VERT_INDEX_Y; +extern UINT16 MAP_VERT_WIDTH; + +// Helicopter eta popup position +extern UINT16 MAP_HELICOPTER_ETA_POPUP_X; +extern UINT16 MAP_HELICOPTER_ETA_POPUP_Y; +extern UINT16 MAP_HELICOPTER_UPPER_ETA_POPUP_Y; +extern UINT16 MAP_HELICOPTER_ETA_POPUP_WIDTH; +extern UINT16 MAP_HELICOPTER_ETA_POPUP_HEIGHT; + +// sublevel text string position +extern UINT16 MAP_LEVEL_STRING_X; +extern UINT16 MAP_LEVEL_STRING_Y; -//#define MAP_VIEW_START_X 270 -//#define MAP_VIEW_START_Y 10 -//#define MAP_VIEW_WIDTH 336 -//#define MAP_VIEW_HEIGHT 298 // zoomed in grid sizes #define MAP_GRID_ZOOM_X MAP_GRID_X*2 #define MAP_GRID_ZOOM_Y MAP_GRID_Y*2 // number of units wide -#define WORLD_MAP_X 18 +#define WORLD_MAP_X 18 // WANNE: 18 darf nicht geändert werden! // dirty regions for the map #define DMAP_GRID_X ( MAP_GRID_X + 1 ) diff --git a/Strategic/mapscreen.cpp b/Strategic/mapscreen.cpp index 86866ce3..674c570b 100644 --- a/Strategic/mapscreen.cpp +++ b/Strategic/mapscreen.cpp @@ -1168,14 +1168,41 @@ BOOLEAN InitializeInvPanelCoordsOld() TIME_REMAINING_X = 215; TIME_REMAINING_WIDTH = 243 - TIME_REMAINING_X; - CLOCK_Y_START = (MAP_BORDER_Y_OFFSET + 298); + if (iResolution == 0) + { + CLOCK_Y_START = (MAP_BORDER_Y_OFFSET + 298); - DEST_PLOT_X = (MAP_BORDER_X_OFFSET + 463); - DEST_PLOT_Y = (MAP_BORDER_Y_OFFSET + 345); + DEST_PLOT_X = (MAP_BORDER_X_OFFSET + 463); + DEST_PLOT_Y = (MAP_BORDER_Y_OFFSET + 345); - CLOCK_ETA_X = (MAP_BORDER_X_OFFSET + 484); - CLOCK_HOUR_X_START = (MAP_BORDER_X_OFFSET + 518); - CLOCK_MIN_X_START = (MAP_BORDER_X_OFFSET + 538); + CLOCK_ETA_X = (MAP_BORDER_X_OFFSET + 484); + CLOCK_HOUR_X_START = (MAP_BORDER_X_OFFSET + 518); + CLOCK_MIN_X_START = (MAP_BORDER_X_OFFSET + 538); + } + else if (iResolution == 1) + { + CLOCK_Y_START = (MAP_BORDER_Y_OFFSET + 298 + 120); + + DEST_PLOT_X = (MAP_BORDER_X_OFFSET + 463 + 80); + DEST_PLOT_Y = (MAP_BORDER_Y_OFFSET + 345 + 120); + + CLOCK_ETA_X = (MAP_BORDER_X_OFFSET + 484 + 80); + CLOCK_HOUR_X_START = (MAP_BORDER_X_OFFSET + 518 + 80); + CLOCK_MIN_X_START = (MAP_BORDER_X_OFFSET + 538 + 80); + } + else if (iResolution == 2) + { + CLOCK_Y_START = (MAP_BORDER_Y_OFFSET + 298 + 285); + + DEST_PLOT_X = (MAP_BORDER_X_OFFSET + 463 + 180); + DEST_PLOT_Y = (MAP_BORDER_Y_OFFSET + 345 + 285); + + CLOCK_ETA_X = (MAP_BORDER_X_OFFSET + 484 + 180); + CLOCK_HOUR_X_START = (MAP_BORDER_X_OFFSET + 518 + 180); + CLOCK_MIN_X_START = (MAP_BORDER_X_OFFSET + 538 + 180); + } + + // ----------------- // contract CONTRACT_X = 185; @@ -1479,14 +1506,39 @@ BOOLEAN InitializeInvPanelCoordsNew() TIME_REMAINING_X = 215; TIME_REMAINING_WIDTH = 243 - TIME_REMAINING_X; - CLOCK_Y_START = (MAP_BORDER_Y_OFFSET + 298); + if (iResolution == 0) + { + CLOCK_Y_START = (MAP_BORDER_Y_OFFSET + 298); - DEST_PLOT_X = (MAP_BORDER_X_OFFSET + 463); - DEST_PLOT_Y = (MAP_BORDER_Y_OFFSET + 345); + DEST_PLOT_X = (MAP_BORDER_X_OFFSET + 463); + DEST_PLOT_Y = (MAP_BORDER_Y_OFFSET + 345); - CLOCK_ETA_X = (MAP_BORDER_X_OFFSET + 484); - CLOCK_HOUR_X_START = (MAP_BORDER_X_OFFSET + 518); - CLOCK_MIN_X_START = (MAP_BORDER_X_OFFSET + 538); + CLOCK_ETA_X = (MAP_BORDER_X_OFFSET + 484); + CLOCK_HOUR_X_START = (MAP_BORDER_X_OFFSET + 518); + CLOCK_MIN_X_START = (MAP_BORDER_X_OFFSET + 538); + } + else if (iResolution == 1) + { + CLOCK_Y_START = (MAP_BORDER_Y_OFFSET + 298 + 120); + + DEST_PLOT_X = (MAP_BORDER_X_OFFSET + 463 + 80); + DEST_PLOT_Y = (MAP_BORDER_Y_OFFSET + 345 + 120); + + CLOCK_ETA_X = (MAP_BORDER_X_OFFSET + 484 + 80); + CLOCK_HOUR_X_START = (MAP_BORDER_X_OFFSET + 518 + 80); + CLOCK_MIN_X_START = (MAP_BORDER_X_OFFSET + 538 + 80); + } + else if (iResolution == 2) + { + CLOCK_Y_START = (MAP_BORDER_Y_OFFSET + 298 + 285); + + DEST_PLOT_X = (MAP_BORDER_X_OFFSET + 463 + 180); + DEST_PLOT_Y = (MAP_BORDER_Y_OFFSET + 345 + 285); + + CLOCK_ETA_X = (MAP_BORDER_X_OFFSET + 484 + 180); + CLOCK_HOUR_X_START = (MAP_BORDER_X_OFFSET + 518 + 180); + CLOCK_MIN_X_START = (MAP_BORDER_X_OFFSET + 538 + 180); + } // contract CONTRACT_X = 185; @@ -4334,6 +4386,8 @@ UINT32 MapScreenInit(void) // set up leave list arrays for dismissed mercs InitLeaveList( ); + + InitializeMilitiaPopup(); VObjectDesc.fCreateFlags = VOBJECT_CREATE_FROMFILE; FilenameForBPP("INTERFACE\\group_confirm.sti", VObjectDesc.ImageFile); @@ -4499,18 +4553,151 @@ UINT32 MapScreenHandle(void) if(fPreLoadedMapGraphics == FALSE ) { + vs_desc.fCreateFlags = VSURFACE_CREATE_FROMFILE | VSURFACE_SYSTEM_MEM_USAGE; + + if (iResolution == 0) + { + // ------------ + // 336 x 288 (size without the black area on top and left + // Important: The size (including black area on top and left) of the PCX file has to be an even number for width and height, + // otherwise the blitting method which shrinks the image by 50% does not work. + // ------------ + + MAP_GRID_X = 21; // Horizontal size of a square + MAP_GRID_Y = 18; // Vertical size of a square + + MAP_BORDER_X_OFFSET = (((SCREEN_WIDTH - 261) - 380) / 2); // 380: Width of the MBS.sti file + MAP_BORDER_Y_OFFSET = (((SCREEN_HEIGHT - 121) - 360) / 2); // 360: Height of the MBS.sti file + + MAP_VIEW_START_X = (MAP_BORDER_X + MAP_BORDER_X_OFFSET + 9); // 9: Constant, do not change it. + MAP_VIEW_START_Y = (MAP_BORDER_Y + MAP_BORDER_Y_OFFSET + 10); // 10: Constant, do not change it. + + // Maus Area (Ist die reine Größe der Karte/2 (ohne dem schwarzen Rand (links und oben)) + MAP_VIEW_WIDTH = 336; // Width of the map (without the black area on the left) + MAP_VIEW_HEIGHT = 288 + 10; // Height of the map (without the black area on the top) + constant value of 10 + + + MAP_FONT = BLOCKFONT2; + + // The postion of the map numbers (1-16) above the map (horizontal) + MAP_HORT_INDEX_X = (MAP_BORDER_X + MAP_BORDER_X_OFFSET + 31); + MAP_HORT_INDEX_Y = (MAP_BORDER_Y + MAP_BORDER_Y_OFFSET + 11); + MAP_HORT_HEIGHT = GetFontHeight(MAP_FONT); + + // The position of the latters (A-P) on the left side of the map (vertical) + MAP_VERT_INDEX_X = (MAP_BORDER_X + MAP_BORDER_X_OFFSET + 15); + MAP_VERT_INDEX_Y = (MAP_BORDER_Y + MAP_BORDER_Y_OFFSET + 29); + + MAP_VERT_WIDTH = GetFontHeight(MAP_FONT); + + // Helicopter ETA box + MAP_HELICOPTER_ETA_POPUP_X = (400 + iScreenWidthOffset); + MAP_HELICOPTER_ETA_POPUP_Y = (250 + iScreenHeightOffset); + MAP_HELICOPTER_UPPER_ETA_POPUP_Y = (50 + iScreenHeightOffset); + MAP_HELICOPTER_ETA_POPUP_WIDTH = 120; + MAP_HELICOPTER_ETA_POPUP_HEIGHT = 68; + + // Map Level string + MAP_LEVEL_STRING_X = (SCREEN_WIDTH - 208); + MAP_LEVEL_STRING_Y = (SCREEN_HEIGHT - 175); + + strcpy(vs_desc.ImageFile, "INTERFACE\\b_map.pcx"); + } + else if (iResolution == 1) + { + // ------------ + // 480 x 400 + // ------------ + + MAP_GRID_X = 30; + MAP_GRID_Y = 25; + + MAP_BORDER_X_OFFSET = (((SCREEN_WIDTH - 261) - 540) / 2); + MAP_BORDER_Y_OFFSET = (((SCREEN_HEIGHT - 121) - 480) / 2); + + MAP_VIEW_START_X = (MAP_BORDER_X + MAP_BORDER_X_OFFSET + 9); + MAP_VIEW_START_Y = (MAP_BORDER_Y + MAP_BORDER_Y_OFFSET + 10); + + MAP_VIEW_WIDTH = 480; + MAP_VIEW_HEIGHT = 400 + 10 + 7; + + // The numbers on the horizontal line + MAP_FONT = BLOCKFONT2; + + MAP_HORT_INDEX_X = (MAP_BORDER_X + MAP_BORDER_X_OFFSET + 38); + MAP_HORT_INDEX_Y = (MAP_BORDER_Y + MAP_BORDER_Y_OFFSET + 15); + MAP_HORT_HEIGHT = GetFontHeight(MAP_FONT); + + MAP_VERT_INDEX_X = (MAP_BORDER_X + MAP_BORDER_X_OFFSET + 19); + MAP_VERT_INDEX_Y = (MAP_BORDER_Y + MAP_BORDER_Y_OFFSET + 36); + MAP_VERT_WIDTH = GetFontHeight(MAP_FONT); + + // Helicopter ETA box + MAP_HELICOPTER_ETA_POPUP_X = (400 + iScreenWidthOffset); + MAP_HELICOPTER_ETA_POPUP_Y = (250 + iScreenHeightOffset + 58); + MAP_HELICOPTER_UPPER_ETA_POPUP_Y = (50 + iScreenHeightOffset - 40); + MAP_HELICOPTER_ETA_POPUP_WIDTH = 120; + MAP_HELICOPTER_ETA_POPUP_HEIGHT = 68; + + // Map Level string + MAP_LEVEL_STRING_X = (SCREEN_WIDTH - 208 - 80); + MAP_LEVEL_STRING_Y = (SCREEN_HEIGHT - 175); + + strcpy(vs_desc.ImageFile, "INTERFACE\\b_map_800x600.pcx"); + } + else if (iResolution == 2) + { + // ------------ + // 688 x 560 + // ------------ + + MAP_GRID_X = 43; + MAP_GRID_Y = 35; + + MAP_BORDER_X_OFFSET = (((SCREEN_WIDTH - 261) - 764) / 2); + MAP_BORDER_Y_OFFSET = (((SCREEN_HEIGHT - 121) - 648) / 2); + + MAP_VIEW_START_X = (MAP_BORDER_X + MAP_BORDER_X_OFFSET + 9); + MAP_VIEW_START_Y = (MAP_BORDER_Y + MAP_BORDER_Y_OFFSET + 10); + + MAP_VIEW_WIDTH = 688; + MAP_VIEW_HEIGHT = 560 + 10 + 17; + + MAP_FONT = BLOCKFONT2; + + MAP_HORT_INDEX_X = (MAP_BORDER_X + MAP_BORDER_X_OFFSET + 53); + MAP_HORT_INDEX_Y = (MAP_BORDER_Y + MAP_BORDER_Y_OFFSET + 19); + MAP_HORT_HEIGHT = GetFontHeight(MAP_FONT); + + MAP_VERT_INDEX_X = (MAP_BORDER_X + MAP_BORDER_X_OFFSET + 25); + MAP_VERT_INDEX_Y = (MAP_BORDER_Y + MAP_BORDER_Y_OFFSET + 47); + MAP_VERT_WIDTH = GetFontHeight(MAP_FONT); + + // Helicopter ETA box + MAP_HELICOPTER_ETA_POPUP_X = (400 + iScreenWidthOffset); + MAP_HELICOPTER_ETA_POPUP_Y = (250 + iScreenHeightOffset + 140); + MAP_HELICOPTER_UPPER_ETA_POPUP_Y = (50 + iScreenHeightOffset - 100); + MAP_HELICOPTER_ETA_POPUP_WIDTH = 120; + MAP_HELICOPTER_ETA_POPUP_HEIGHT = 68; + + // Map Level string + MAP_LEVEL_STRING_X = (SCREEN_WIDTH - 208 - 187); + MAP_LEVEL_STRING_Y = (SCREEN_HEIGHT - 175); + + strcpy(vs_desc.ImageFile, "INTERFACE\\b_map_1024x768.pcx"); + } - // load border graphics LoadMapBorderGraphics( ); //fInterfacePanelDirty=DIRTYLEVEL2; //RenderTacticalInterface(); - vs_desc.fCreateFlags = VSURFACE_CREATE_FROMFILE | VSURFACE_SYSTEM_MEM_USAGE; + // Grab the Map image - strcpy(vs_desc.ImageFile, "INTERFACE\\b_map.pcx"); + CHECKF(AddVideoSurface(&vs_desc, &guiBIGMAP)); + vs_desc.fCreateFlags = VSURFACE_CREATE_FROMFILE | VSURFACE_SYSTEM_MEM_USAGE; strcpy(vs_desc.ImageFile, "INTERFACE\\popupbackground.pcx"); CHECKF(AddVideoSurface(&vs_desc, &guiPOPUPTEX)); @@ -4598,7 +4785,14 @@ UINT32 MapScreenHandle(void) // CHECKF(AddVideoObject(&VObjectDesc, &guiPOPUPBORDERS)); VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\boxes.sti", VObjectDesc.ImageFile); + + if (iResolution == 0) + FilenameForBPP("INTERFACE\\boxes.sti", VObjectDesc.ImageFile); + else if (iResolution == 1) + FilenameForBPP("INTERFACE\\boxes_800x600.sti", VObjectDesc.ImageFile); + else if (iResolution == 2) + FilenameForBPP("INTERFACE\\boxes_1024x768.sti", VObjectDesc.ImageFile); + CHECKF(AddVideoObject(&VObjectDesc, &guiCHARICONS)); VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; @@ -4682,7 +4876,14 @@ UINT32 MapScreenHandle(void) CHECKF( AddVideoObject( &VObjectDesc, &guiMINEICON ) ); VObjectDesc.fCreateFlags = VOBJECT_CREATE_FROMFILE; - sprintf( VObjectDesc.ImageFile, "INTERFACE\\hilite.sti" ); + + if (iResolution == 0) + sprintf( VObjectDesc.ImageFile, "INTERFACE\\hilite.sti" ); + else if (iResolution == 1) + sprintf( VObjectDesc.ImageFile, "INTERFACE\\hilite_800x600.sti" ); + else if (iResolution == 2) + sprintf( VObjectDesc.ImageFile, "INTERFACE\\hilite_1024x768.sti" ); + AddVideoObject( &VObjectDesc, &guiSectorLocatorGraphicID ); VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; @@ -12628,223 +12829,6 @@ BOOLEAN AnyMercsLeavingRealSoon() } - -BOOLEAN HandlePreloadOfMapGraphics( void ) -{ - // check amt of memory, if above required amt...use it - VSURFACE_DESC vs_desc; - VOBJECT_DESC VObjectDesc; - - fPreLoadedMapGraphics = TRUE; - - vs_desc.fCreateFlags = VSURFACE_CREATE_FROMFILE | VSURFACE_SYSTEM_MEM_USAGE; - strcpy(vs_desc.ImageFile, "INTERFACE\\b_map.pcx"); - CHECKF(AddVideoSurface(&vs_desc, &guiBIGMAP)); - //strcpy(vs_desc.ImageFile, "INTERFACE\\popupbackground.pcx"); - //CHECKF(AddVideoSurface(&vs_desc, &guiPOPUPTEX)); - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\mapcursr.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiMAPCURSORS)); - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\SAM.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiSAMICON)); - - // VObjectDesc.fCreateFlags = VOBJECT_CREATE_FROMFILE; - // FilenameForBPP("INTERFACE\\s_map.sti", VObjectDesc.ImageFile); - // CHECKF( AddVideoObject( &VObjectDesc, &guiMAP ) ); - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\mapcursr.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiMAPCURSORS)); - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\sleepicon.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiSleepIcon)); - - //VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - //FilenameForBPP("INTERFACE\\addonslcp.sti", VObjectDesc.ImageFile); - //CHECKF(AddVideoObject(&VObjectDesc, &guiCORNERADDONS)); - - //VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - //FilenameForBPP("INTERFACE\\mapborder.sti", VObjectDesc.ImageFile); - //CHECKF(AddVideoObject(&VObjectDesc, &guiMAPBORDER)); - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\charinfo.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiCHARINFO)); - /*strcpy(vs_desc.ImageFile, "INTERFACE\\playlist3.pcx"); - CHECKF(AddVideoSurface( &vs_desc, &guiCHARLIST ));*/ - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - if (!is_networked) - { - if (iResolution == 0) - { - FilenameForBPP("INTERFACE\\newgoldpiece3.sti", VObjectDesc.ImageFile ); - } - else if (iResolution == 1) - { - FilenameForBPP("INTERFACE\\newgoldpiece3_800x600.sti", VObjectDesc.ImageFile ); - } - else if (iResolution == 2) - { - FilenameForBPP("INTERFACE\\newgoldpiece3_1024x768.sti", VObjectDesc.ImageFile ); - } - } - else - { - // OJW - 20081204 - change mapscreen interface for MP games - if (iResolution == 0) - { - FilenameForBPP("INTERFACE\\mpgoldpiece3.sti", VObjectDesc.ImageFile ); - } - else if (iResolution == 1) - { - FilenameForBPP("INTERFACE\\mpgoldpiece3_800x600.sti", VObjectDesc.ImageFile ); - } - else if (iResolution == 2) - { - FilenameForBPP("INTERFACE\\mpgoldpiece3_1024x768.sti", VObjectDesc.ImageFile ); - } - } - CHECKF(AddVideoObject(&VObjectDesc, &guiCHARLIST)); - - //VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - //FilenameForBPP("INTERFACE\\mapbordercorner.sti", VObjectDesc.ImageFile); - //CHECKF(AddVideoObject(&VObjectDesc, &guiMAPCORNER)); - - // VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - // FilenameForBPP("INTERFACE\\popup.sti", VObjectDesc.ImageFile); - // CHECKF(AddVideoObject(&VObjectDesc, &guiPOPUPBORDERS)); - - // the sublevels - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\Mine_1.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiSubLevel1)); - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\Mine_2.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiSubLevel2)); - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\Mine_3.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiSubLevel3)); - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\boxes.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiCHARICONS)); - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\incross.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiCROSS)); - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - if (iResolution == 0) - { - FilenameForBPP("INTERFACE\\mapinv.sti", VObjectDesc.ImageFile); - } - else if (iResolution == 1) - { - FilenameForBPP("INTERFACE\\mapinv_800x600.sti", VObjectDesc.ImageFile); - } - else if (iResolution == 2) - { - FilenameForBPP("INTERFACE\\mapinv_1024x768.sti", VObjectDesc.ImageFile); - } - if(!AddVideoObject(&VObjectDesc, &guiMAPINV)) - { - FilenameForBPP("INTERFACE\\mapinv.sti", VObjectDesc.ImageFile); - } - CHECKF(AddVideoObject(&VObjectDesc, &guiMAPINV)); - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\map_inv_2nd_gun_cover.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiMapInvSecondHandBlockout)); - - // the upper left corner piece icons - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\top_left_corner_icons.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiULICONS)); - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\prison.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiTIXAICON)); - - HandleLoadOfMapBottomGraphics( ); - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\map_item.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiORTAICON)); - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\mapcursr.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiMAPCURSORS)); - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\merc_between_sector_icons.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiCHARBETWEENSECTORICONS)); - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\merc_mvt_green_arrows.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiCHARBETWEENSECTORICONSCLOSE)); - - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\GreenArr.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiLEVELMARKER)); - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\Helicop.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiHelicopterIcon)); - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\eta_pop_up.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiMapBorderEtaPopUp)); - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\pos2.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiMapBorderHeliSectors)); - - VObjectDesc.fCreateFlags = VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\secondary_gun_hidden.sti", VObjectDesc.ImageFile); - CHECKF( AddVideoObject( &VObjectDesc, &guiSecItemHiddenVO ) ); - - VObjectDesc.fCreateFlags = VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\selectedchararrow.sti", VObjectDesc.ImageFile); - CHECKF( AddVideoObject( &VObjectDesc, &guiSelectedCharArrow ) ); - - VObjectDesc.fCreateFlags = VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\mine.sti", VObjectDesc.ImageFile); - CHECKF( AddVideoObject( &VObjectDesc, &guiMINEICON ) ); - - VObjectDesc.fCreateFlags = VOBJECT_CREATE_FROMFILE; - sprintf( VObjectDesc.ImageFile, "INTERFACE\\hilite.sti" ); - AddVideoObject( &VObjectDesc, &guiSectorLocatorGraphicID ); - - //Kris: Added this because I need to blink the icons button. - VObjectDesc.fCreateFlags = VOBJECT_CREATE_FROMFILE; - sprintf( VObjectDesc.ImageFile, "INTERFACE\\newemail.sti" ); - AddVideoObject( &VObjectDesc, &guiNewMailIcons ); - - VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; - FilenameForBPP("INTERFACE\\BullsEye.sti", VObjectDesc.ImageFile); - CHECKF(AddVideoObject(&VObjectDesc, &guiBULLSEYE)); - - - // graphic for pool inventory - LoadInventoryPoolGraphic( ); - - // load border graphics - LoadMapBorderGraphics( ); - - // load the pop up for the militia pop up box - LoadMilitiaPopUpBox( ); - - return( TRUE ); -} - - void HandleRemovalOfPreLoadedMapGraphics( void ) { diff --git a/Strategic/mapscreen.h b/Strategic/mapscreen.h index 16a216a7..7ca9a52f 100644 --- a/Strategic/mapscreen.h +++ b/Strategic/mapscreen.h @@ -64,7 +64,6 @@ void ReBuildCharactersList( void ); // WANNE - BMP: Initialize world size for a multiplayer game void InitializeWorldSize( INT16 sSectorX, INT16 sSectorY , INT8 bSectorZ ); -BOOLEAN HandlePreloadOfMapGraphics( void ); void HandleRemovalOfPreLoadedMapGraphics( void ); void ChangeSelectedMapSector( INT16 sMapX, INT16 sMapY, INT8 bMapZ );