Files
source/Laptop/IMP Portraits.cpp
majcostaandGitHub 24425a82b1 More unused stuff removal (#49)
* More unused stuff removal

delete:
- giant 'metaheaders' (JA2 All.h, Laptop All.h, etc), preferring to add #includes directly where needed
- unused ExceptionHandling and DbMan translation units
- unused WizShare.h, Bitmap.h, trle.h, video_private.h headers

* remove mentions from vc proj files too

* remove preprocessor conditionals for unused definitions

find . -iname '*.h' -o -iname '*.cpp' -exec unifdef.exe -m -UPRECOMPILED_HEADERS -UJA2_PRECOMPILED_HEADERS -UWIZ8_PRECOMPILED_HEADERS -UPRECOMPILEDHEADERS {} ';'

then manually fixed a couple files the tool errored out on

* yes, the comments too

as title
2023-01-03 15:51:48 +02:00

363 lines
10 KiB
C++

#include "CharProfile.h"
#include "IMP Portraits.h"
#include "IMP MainPage.h"
#include "IMPVideoObjects.h"
#include "Utilities.h"
#include "WCheck.h"
#include "input.h"
#include "Isometric Utils.h"
#include "Debug.h"
#include "WordWrap.h"
#include "Encrypted File.h"
#include "cursors.h"
#include "laptop.h"
#include "IMP Text System.h"
#include "IMP Confirm.h"
//current and last pages
INT32 iCurrentPortrait = 0;
INT32 iLastPicture = 7;
INT32 iLastPictureF;
INT32 iLastPictureM;
// buttons needed for the IMP portrait screen
INT32 giIMPPortraitButton[ 3 ];
INT32 giIMPPortraitButtonImage[ 3 ];
// redraw protrait screen
BOOLEAN fReDrawPortraitScreenFlag = FALSE;
// face index
INT32 iPortraitNumber = 0;
// function definitions
void IncrementPictureIndex( void );
void DecrementPicture( void );
void CreateIMPPortraitButtons( void );
void DestroyIMPPortraitButtons( void );
BOOLEAN CameBackToPortraitsPageButNotFinished();
// callbacks
void BtnIMPPortraitNextCallback(GUI_BUTTON *btn,INT32 reason);
void BtnIMPPortraitPreviousCallback(GUI_BUTTON *btn,INT32 reason);
void BtnIMPPortraitDoneCallback(GUI_BUTTON *btn,INT32 reason);
void EnterIMPPortraits( void )
{
iCurrentPortrait = 0;
// Flugente: for safety, make sure we have a pic of the fitting gender
// this will lead to a loop if there is no data for a gender - then again, this was always the case
if ( gIMPValues[iCurrentPortrait].bSex == fCharacterIsMale )
{
IncrementPictureIndex( );
}
// create buttons
CreateIMPPortraitButtons( );
// render background
RenderIMPPortraits( );
}
void RenderIMPPortraits( void )
{
// render background
RenderProfileBackGround( );
// the Voices frame
RenderPortraitFrame( 191, 167 );
// render the current portrait
RenderPortrait( 200, 176 );
// indent for the text
RenderAttrib1IndentFrame( 128, 65);
// text
PrintImpText( );
}
void ExitIMPPortraits( void )
{
// destroy buttons for IMP portrait page
DestroyIMPPortraitButtons( );
}
void HandleIMPPortraits( void )
{
// do we need to re write screen
if ( fReDrawPortraitScreenFlag == TRUE )
{
RenderIMPPortraits( );
// reset redraw flag
fReDrawPortraitScreenFlag = FALSE;
}
}
BOOLEAN RenderPortrait( INT16 sX, INT16 sY )
{
// render the portrait of the current picture
VOBJECT_DESC VObjectDesc;
HVOBJECT hHandle;
UINT32 uiGraphicHandle;
// load it
VObjectDesc.fCreateFlags = VOBJECT_CREATE_FROMFILE;
if ( gIMPValues[iCurrentPortrait].Enabled == 1 )
{
///sprintf( VObjectDesc.ImageFile, "Faces\\BigFaces\\%02d.sti", gIMPMaleValues[ iCurrentPortrait ].PortraitId );
sprintf( VObjectDesc.ImageFile, "IMPFaces\\BigFaces\\%02d.sti", gIMPValues[iCurrentPortrait].PortraitId );
}
//FilenameForBPP( pPlayerSelectedBigFaceFileNames[ iCurrentPortrait ] , VObjectDesc.ImageFile);
CHECKF( AddVideoObject( &VObjectDesc, &uiGraphicHandle ) );
// show it
GetVideoObject( &hHandle, uiGraphicHandle );
BltVideoObject( FRAME_BUFFER, hHandle, 0, LAPTOP_SCREEN_UL_X + sX, LAPTOP_SCREEN_WEB_UL_Y + sY, VO_BLT_SRCTRANSPARENCY, NULL );
// and kick it's sorry ..umm never mind, outta here
DeleteVideoObjectFromIndex( uiGraphicHandle );
return ( TRUE );
}
void IncrementPictureIndex( void )
{
++iCurrentPortrait;
if ( gIMPValues[iCurrentPortrait].uiIndex == iCurrentPortrait && gIMPValues[iCurrentPortrait].PortraitId != 0 )
{
iCurrentPortrait = gIMPValues[iCurrentPortrait].uiIndex;
}
else
{
iCurrentPortrait = 0;
}
// if gender of face is wrong, repeat process
if ( gIMPValues[iCurrentPortrait].bSex == fCharacterIsMale )
{
IncrementPictureIndex( );
}
}
void DecrementPicture( void )
{
--iCurrentPortrait;
if ( iCurrentPortrait < 0 )
{
for ( UINT32 cnt = 0; cnt < MAX_NEW_IMP_PORTRAITS; cnt++ )
{
if ( gIMPValues[cnt].uiIndex == cnt && gIMPValues[cnt].PortraitId != 0 )
{
iLastPictureM = gIMPValues[cnt].uiIndex;
}
}
iLastPicture = iLastPictureM;
iCurrentPortrait = iLastPicture;
}
// if gender of face is wrong, repeat process
if ( gIMPValues[iCurrentPortrait].bSex == fCharacterIsMale )
{
DecrementPicture();
}
}
void CreateIMPPortraitButtons( void )
{
// will create buttons need for the IMP portrait screen
// next button
giIMPPortraitButtonImage[0]= LoadButtonImage( "LAPTOP\\voicearrows.sti" ,-1,1,-1,3,-1 );
/*giIMPPortraitButton[0] = QuickCreateButton( giIMPPortraitButtonImage[0], LAPTOP_SCREEN_UL_X + ( 18 ), LAPTOP_SCREEN_WEB_UL_Y + ( 184 ),
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPPortraitNextCallback );
*/
giIMPPortraitButton[0] = CreateIconAndTextButton( giIMPPortraitButtonImage[0], pImpButtonText[ 13 ], FONT12ARIAL,
FONT_WHITE, DEFAULT_SHADOW,
FONT_WHITE, DEFAULT_SHADOW,
TEXT_CJUSTIFIED,
LAPTOP_SCREEN_UL_X + ( 343 ), LAPTOP_SCREEN_WEB_UL_Y + ( 205 ),BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPPortraitNextCallback);
// previous button
giIMPPortraitButtonImage[ 1 ]= LoadButtonImage( "LAPTOP\\voicearrows.sti" ,-1,0,-1,2,-1 );
/* giIMPPortraitButton[ 1 ] = QuickCreateButton( giIMPPortraitButtonImage[ 1 ], LAPTOP_SCREEN_UL_X + ( 18 ), LAPTOP_SCREEN_WEB_UL_Y + ( 254 ),
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPPortraitPreviousCallback );
*/
giIMPPortraitButton[ 1 ] = CreateIconAndTextButton( giIMPPortraitButtonImage[ 1 ], pImpButtonText[ 12 ], FONT12ARIAL,
FONT_WHITE, DEFAULT_SHADOW,
FONT_WHITE, DEFAULT_SHADOW,
TEXT_CJUSTIFIED,
LAPTOP_SCREEN_UL_X + ( 93), LAPTOP_SCREEN_WEB_UL_Y + ( 205 ), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPPortraitPreviousCallback);
// done button
giIMPPortraitButtonImage[ 2 ]= LoadButtonImage( "LAPTOP\\button_5.sti" ,-1,0,-1,1,-1 );
/* giIMPPortraitButton[ 2 ] = QuickCreateButton( giIMPPortraitButtonImage[ 1 ], LAPTOP_SCREEN_UL_X + ( 349 ), LAPTOP_SCREEN_WEB_UL_Y + ( 220 ),
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPPortraitDoneCallback );
*/
giIMPPortraitButton[ 2 ] = CreateIconAndTextButton( giIMPPortraitButtonImage[ 2 ], pImpButtonText[ 13 ], FONT12ARIAL, // changed text on button to [13]("Next") - SANDRO
FONT_WHITE, DEFAULT_SHADOW,
FONT_WHITE, DEFAULT_SHADOW,
TEXT_CJUSTIFIED,
LAPTOP_SCREEN_UL_X + ( 187 ), LAPTOP_SCREEN_WEB_UL_Y + ( 330 ), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPPortraitDoneCallback);
SetButtonCursor(giIMPPortraitButton[0], CURSOR_WWW);
SetButtonCursor(giIMPPortraitButton[1], CURSOR_WWW);
SetButtonCursor(giIMPPortraitButton[2], CURSOR_WWW);
}
void DestroyIMPPortraitButtons( void )
{
// will destroy buttons created for IMP Portrait screen
// the next button
RemoveButton(giIMPPortraitButton[ 0 ] );
UnloadButtonImage(giIMPPortraitButtonImage[ 0 ] );
// the previous button
RemoveButton(giIMPPortraitButton[ 1 ] );
UnloadButtonImage(giIMPPortraitButtonImage[ 1 ] );
// the done button
RemoveButton(giIMPPortraitButton[ 2 ] );
UnloadButtonImage(giIMPPortraitButtonImage[ 2 ] );
}
void BtnIMPPortraitNextCallback(GUI_BUTTON *btn,INT32 reason)
{
// btn callback for IMP attrbite begin button
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
}
else if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
// next picture!!
IncrementPictureIndex( );
fReDrawPortraitScreenFlag = TRUE;
}
}
}
void BtnIMPPortraitPreviousCallback(GUI_BUTTON *btn,INT32 reason)
{
// btn callback for IMP attrbite begin button
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
}
else if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
// previous picture, please!!!
DecrementPicture( );
fReDrawPortraitScreenFlag = TRUE;
}
}
}
void BtnIMPPortraitDoneCallback(GUI_BUTTON *btn,INT32 reason)
{
// btn callback for IMP attrbite begin button
if (!(btn->uiFlags & BUTTON_ENABLED))
return;
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
{
btn->uiFlags|=(BUTTON_CLICKED_ON);
}
else if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if (btn->uiFlags & BUTTON_CLICKED_ON)
{
btn->uiFlags&=~(BUTTON_CLICKED_ON);
// Changed to go to voice selection after portrait selection - SANDRO
iCurrentImpPage = IMP_VOICE;
// Following part has been cut out
// go to main page
//iCurrentImpPage = IMP_MAIN_PAGE;
/*
// current mode now is voice
if( iCurrentProfileMode < IMP__VOICE )
{
iCurrentProfileMode = IMP__VOICE;
}
*/
// if we are already done, leave
/* if( iCurrentProfileMode == IMP__FINISH )
{
iCurrentImpPage = IMP_FINISH;
}
else
{
if( CameBackToPortraitsPageButNotFinished() )
{
// iCurrentProfileMode = IMP__VOICE;
iCurrentImpPage = IMP_MAIN_PAGE;
}
else
{
iCurrentProfileMode = IMP__VOICE;
}
}*/
// grab picture number
iPortraitNumber = gIMPValues[iCurrentPortrait].uiIndex; //iCurrentPortrait
fButtonPendingFlag = TRUE;
}
}
}
BOOLEAN CameBackToPortraitsPageButNotFinished()
{
//if we are in a page that comes after this one
if( iCurrentProfileMode == IMP__PERSONALITY ||
iCurrentProfileMode == IMP__ATTRIBUTES ||
iCurrentProfileMode == IMP__VOICE )
{
return( TRUE );
}
else
{
return( FALSE );
}
}