#ifdef PRECOMPILEDHEADERS #include "Laptop All.h" #else #include "laptop.h" #include "AimFacialIndex.h" #include "WordWrap.h" #include "Utilities.h" #include "WCheck.h" #include "stdio.h" #include "Aim.h" #include "Soldier Profile.h" #include "email.h" #include "Text.h" #endif extern UINT8 gubCurrentSortMode; // symbol already defined in AimSort.cpp (jonathanl) extern UINT8 gubCurrentListMode; // symbol already declared globally in AimSort.cpp (jonathanl) extern UINT8 gbCurrentIndex; UINT32 guiMugShotBorder; UINT32 guiAimFiFace[ MAX_NUMBER_MERCS ]; #define AIM_FI_NUM_MUHSHOTS_X 8 #define AIM_FI_NUM_MUHSHOTS_Y 5 #define AIM_FI_PORTRAIT_WIDTH 52 #define AIM_FI_PORTRAIT_HEIGHT 48 #define AIM_FI_FIRST_MUGSHOT_X IMAGE_OFFSET_X + 6 #define AIM_FI_FIRST_MUGSHOT_Y IMAGE_OFFSET_Y + 69//67//70 //68 //65 #define AIM_FI_MUGSHOT_GAP_X 10 #define AIM_FI_MUGSHOT_GAP_Y 13 #define AIM_FI_FACE_OFFSET 2 #define AIM_FI_NNAME_OFFSET_X 2 #define AIM_FI_NNAME_OFFSET_Y AIM_FI_PORTRAIT_HEIGHT+1 #define AIM_FI_NNAME_WIDTH AIM_FI_PORTRAIT_WIDTH+4 #define AIM_FI_MEMBER_TEXT_X IMAGE_OFFSET_X + 155 #define AIM_FI_MEMBER_TEXT_Y AIM_SYMBOL_Y + AIM_SYMBOL_SIZE_Y + 1 #define AIM_FI_MEMBER_TEXT_WIDTH 190 #define AIM_FI_AWAY_TEXT_OFFSET_X 3 #define AIM_FI_AWAY_TEXT_OFFSET_Y 23//3//36 #define AIM_FI_AWAY_TEXT_OFFSET_WIDTH 48 //Mouse Regions //Face regions MOUSE_REGION gMercFaceMouseRegions[ MAX_NUMBER_MERCS ]; void SelectMercFaceRegionCallBack(MOUSE_REGION * pRegion, INT32 iReason ); void SelectMercFaceMoveRegionCallBack(MOUSE_REGION * pRegion, INT32 iReason ); //Screen region, used to right click to go back to previous page MOUSE_REGION gScreenMouseRegions; void SelectScreenRegionCallBack(MOUSE_REGION * pRegion, INT32 iReason ); BOOLEAN DrawMercsFaceToScreen(UINT8 ubMercID, UINT16 usPosX, UINT16 usPosY, UINT8 ubImage); void GameInitAimFacialIndex() { } BOOLEAN EnterAimFacialIndex() { VOBJECT_DESC VObjectDesc; UINT8 i; UINT16 usPosX, usPosY, x,y; STR sFaceLoc = "FACES\\"; char sTemp[100]; // load the Portait graphic and add it VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; FilenameForBPP("LAPTOP\\MugShotBorder3.sti", VObjectDesc.ImageFile); CHECKF(AddVideoObject(&VObjectDesc, &guiMugShotBorder)); usPosX = AIM_FI_FIRST_MUGSHOT_X; usPosY = AIM_FI_FIRST_MUGSHOT_Y; i=0; for(y=0; yuiFlags &= (~BUTTON_CLICKED_ON ); DrawMercsFaceToScreen(ubMercNum, usPosX, usPosY, 1); InvalidateRegion(pRegion->RegionTopLeftX, pRegion->RegionTopLeftY, pRegion->RegionBottomRightX, pRegion->RegionBottomRightY); } else if( reason & MSYS_CALLBACK_REASON_GAIN_MOUSE ) { pRegion->uiFlags |= BUTTON_CLICKED_ON ; DrawMercsFaceToScreen(ubMercNum, usPosX, usPosY, 0); InvalidateRegion(pRegion->RegionTopLeftX, pRegion->RegionTopLeftY, pRegion->RegionBottomRightX, pRegion->RegionBottomRightY); } } BOOLEAN DrawMercsFaceToScreen(UINT8 ubMercID, UINT16 usPosX, UINT16 usPosY, UINT8 ubImage) { HVOBJECT hMugShotBorderHandle; HVOBJECT hFaceHandle; SOLDIERTYPE *pSoldier=NULL; pSoldier = FindSoldierByProfileID( AimMercArray[ubMercID], TRUE ); //Blt the portrait background GetVideoObject(&hMugShotBorderHandle, guiMugShotBorder); BltVideoObject(FRAME_BUFFER, hMugShotBorderHandle, ubImage,usPosX, usPosY, VO_BLT_SRCTRANSPARENCY,NULL); //Blt face to screen GetVideoObject(&hFaceHandle, guiAimFiFace[ubMercID]); BltVideoObject(FRAME_BUFFER, hFaceHandle, 0,usPosX+AIM_FI_FACE_OFFSET, usPosY+AIM_FI_FACE_OFFSET, VO_BLT_SRCTRANSPARENCY,NULL); if( IsMercDead( AimMercArray[ubMercID] ) ) { //get the face object GetVideoObject(&hFaceHandle, guiAimFiFace[ubMercID]); //if the merc is dead //shade the face red, (to signif that he is dead) hFaceHandle->pShades[ 0 ] = Create16BPPPaletteShaded( hFaceHandle->pPaletteEntry, DEAD_MERC_COLOR_RED, DEAD_MERC_COLOR_GREEN, DEAD_MERC_COLOR_BLUE, TRUE ); //set the red pallete to the face SetObjectHandleShade( guiAimFiFace[ubMercID], 0 ); //Blt face to screen BltVideoObject(FRAME_BUFFER, hFaceHandle, 0,usPosX+AIM_FI_FACE_OFFSET, usPosY+AIM_FI_FACE_OFFSET, VO_BLT_SRCTRANSPARENCY,NULL); DrawTextToScreen(AimFiText[AIM_FI_DEAD], (UINT16)(usPosX+AIM_FI_AWAY_TEXT_OFFSET_X), (UINT16)(usPosY+AIM_FI_AWAY_TEXT_OFFSET_Y), AIM_FI_AWAY_TEXT_OFFSET_WIDTH, FONT10ARIAL, 145, FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED ); } //else if the merc is currently a POW or, the merc was fired as a pow else if( gMercProfiles[ AimMercArray[ubMercID] ].bMercStatus == MERC_FIRED_AS_A_POW || ( pSoldier && pSoldier->bAssignment == ASSIGNMENT_POW ) ) { ShadowVideoSurfaceRect( FRAME_BUFFER, usPosX+AIM_FI_FACE_OFFSET, usPosY+AIM_FI_FACE_OFFSET, usPosX + 48+AIM_FI_FACE_OFFSET, usPosY + 43+AIM_FI_FACE_OFFSET); DrawTextToScreen( pPOWStrings[0], (UINT16)(usPosX+AIM_FI_AWAY_TEXT_OFFSET_X), (UINT16)(usPosY+AIM_FI_AWAY_TEXT_OFFSET_Y), AIM_FI_AWAY_TEXT_OFFSET_WIDTH, FONT10ARIAL, 145, FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED ); } //if the merc is on our team else if( pSoldier != NULL ) { ShadowVideoSurfaceRect( FRAME_BUFFER, usPosX+AIM_FI_FACE_OFFSET, usPosY+AIM_FI_FACE_OFFSET, usPosX + 48+AIM_FI_FACE_OFFSET, usPosY + 43+AIM_FI_FACE_OFFSET); DrawTextToScreen( MercInfo[MERC_FILES_ALREADY_HIRED], (UINT16)(usPosX+AIM_FI_AWAY_TEXT_OFFSET_X), (UINT16)(usPosY+AIM_FI_AWAY_TEXT_OFFSET_Y), AIM_FI_AWAY_TEXT_OFFSET_WIDTH, FONT10ARIAL, 145, FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED ); } //if the merc is away, shadow his/her face and blit 'away' over top else if( !IsMercHireable( AimMercArray[ubMercID] ) ) { ShadowVideoSurfaceRect( FRAME_BUFFER, usPosX+AIM_FI_FACE_OFFSET, usPosY+AIM_FI_FACE_OFFSET, usPosX + 48+AIM_FI_FACE_OFFSET, usPosY + 43+AIM_FI_FACE_OFFSET); DrawTextToScreen( AimFiText[AIM_FI_DEAD+1], (UINT16)(usPosX+AIM_FI_AWAY_TEXT_OFFSET_X), (UINT16)(usPosY+AIM_FI_AWAY_TEXT_OFFSET_Y), AIM_FI_AWAY_TEXT_OFFSET_WIDTH, FONT10ARIAL, 145, FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED ); //if not enough room use this.. //AimFiText[AIM_FI_AWAY] } return(TRUE); }