mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
Merged "Enhanced IMP Creation" (by Sandro)
- For code changes search for // SANDRO - Tooltips can now be toggled on/off in the options screen instead of "Random IMP Personality" option - Updated Version Number for new Release Build (2949) git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@2949 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -25,6 +25,11 @@
|
||||
#include "IMP Confirm.h"
|
||||
#include "messageboxscreen.h"
|
||||
#include "LaptopSave.h"
|
||||
// These 4 added - SANDRO
|
||||
#include "IMP Character and Disability Entrance.h"
|
||||
#include "IMP Character Trait.h"
|
||||
#include "IMP Disability Trait.h"
|
||||
#include "IMP Color Choosing.h"
|
||||
#endif
|
||||
|
||||
|
||||
@@ -250,6 +255,19 @@ void HandleCharProfile()
|
||||
case( IMP_CONFIRM ):
|
||||
HandleIMPConfirm( );
|
||||
break;
|
||||
// These 4 added - SANDRO
|
||||
case( IMP_CHARACTER_AND_DISABILITY_ENTRANCE ):
|
||||
HandleIMPCharacterAndDisabilityEntrance( );
|
||||
break;
|
||||
case( IMP_CHARACTER_PAGE ):
|
||||
HandleIMPCharacterTrait( );
|
||||
break;
|
||||
case( IMP_DISABILITY_PAGE ):
|
||||
HandleIMPDisabilityTrait( );
|
||||
break;
|
||||
case( IMP_COLOR_CHOICE_PAGE ):
|
||||
HandleIMPColorChoice( );
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
@@ -310,6 +328,19 @@ void RenderCharProfile()
|
||||
case( IMP_CONFIRM ):
|
||||
RenderIMPConfirm( );
|
||||
break;
|
||||
// These 4 added - SANDRO
|
||||
case( IMP_CHARACTER_AND_DISABILITY_ENTRANCE ):
|
||||
RenderIMPCharacterAndDisabilityEntrance( );
|
||||
break;
|
||||
case( IMP_CHARACTER_PAGE ):
|
||||
RenderIMPCharacterTrait( );
|
||||
break;
|
||||
case( IMP_DISABILITY_PAGE ):
|
||||
RenderIMPDisabilityTrait( );
|
||||
break;
|
||||
case( IMP_COLOR_CHOICE_PAGE ):
|
||||
RenderIMPColorChoice( );
|
||||
break;
|
||||
}
|
||||
|
||||
// render title bar
|
||||
@@ -394,6 +425,23 @@ void ExitOldIMPMode( void )
|
||||
case( IMP_CONFIRM ):
|
||||
ExitIMPConfirm( );
|
||||
break;
|
||||
// These 4 added - SANDRO
|
||||
case( IMP_CHARACTER_AND_DISABILITY_ENTRANCE ):
|
||||
DestroyIMPButtons( );
|
||||
ExitIMPCharacterAndDisabilityEntrance( );
|
||||
break;
|
||||
case( IMP_CHARACTER_PAGE ):
|
||||
DestroyIMPButtons( );
|
||||
ExitIMPCharacterTrait( );
|
||||
break;
|
||||
case( IMP_DISABILITY_PAGE ):
|
||||
DestroyIMPButtons( );
|
||||
ExitIMPDisabilityTrait( );
|
||||
break;
|
||||
case( IMP_COLOR_CHOICE_PAGE ):
|
||||
DestroyIMPButtons( );
|
||||
ExitIMPColorChoice( );
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
@@ -460,6 +508,23 @@ void EnterNewIMPMode( void )
|
||||
case( IMP_CONFIRM ):
|
||||
EnterIMPConfirm( );
|
||||
break;
|
||||
// These 4 added - SANDRO
|
||||
case( IMP_CHARACTER_AND_DISABILITY_ENTRANCE ):
|
||||
CreateIMPButtons( );
|
||||
EnterIMPCharacterAndDisabilityEntrance( );
|
||||
break;
|
||||
case( IMP_CHARACTER_PAGE ):
|
||||
CreateIMPButtons( );
|
||||
EnterIMPCharacterTrait( );
|
||||
break;
|
||||
case( IMP_DISABILITY_PAGE ):
|
||||
CreateIMPButtons( );
|
||||
EnterIMPDisabilityTrait( );
|
||||
break;
|
||||
case( IMP_COLOR_CHOICE_PAGE ):
|
||||
CreateIMPButtons( );
|
||||
EnterIMPColorChoice( );
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -549,6 +614,8 @@ void LoadImpGraphics( void )
|
||||
LoadAvgMercIndentFrame( );
|
||||
LoadAboutUsIndentFrame( );
|
||||
|
||||
LoadAttribStartingLevelFrame( ); // Added by SANDRO
|
||||
LoadColorChoiceFrame( ); // Added by SANDRO
|
||||
|
||||
return;
|
||||
|
||||
@@ -599,6 +666,10 @@ void RemoveImpGraphics( void )
|
||||
DeleteAttrib2IndentFrame( );
|
||||
DeleteAvgMercIndentFrame( );
|
||||
DeleteAboutUsIndentFrame( );
|
||||
|
||||
DeleteAttribStartingLevelFrame( ); // Added by SANDRO
|
||||
DeleteColorChoiceFrame( ); // Added by SANDRO
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -78,6 +78,11 @@ enum{
|
||||
IMP_VOICE,
|
||||
IMP_ABOUT_US,
|
||||
IMP_CONFIRM,
|
||||
// These 4 added - SANDRO
|
||||
IMP_CHARACTER_AND_DISABILITY_ENTRANCE,
|
||||
IMP_CHARACTER_PAGE,
|
||||
IMP_DISABILITY_PAGE,
|
||||
IMP_COLOR_CHOICE_PAGE,
|
||||
|
||||
IMP_NUM_PAGES,
|
||||
};
|
||||
|
||||
@@ -23,8 +23,14 @@
|
||||
#include "IMP Compile Character.h"
|
||||
#include "text.h"
|
||||
#include "GameSettings.h"
|
||||
#include "IMP Disability Trait.h" // Added this one - SANDRO
|
||||
|
||||
#endif
|
||||
|
||||
#define STARTING_LEVEL_BOX_POS_X ( 51 )
|
||||
#define STARTING_LEVEL_BOX_POS_Y ( 296 )
|
||||
|
||||
|
||||
// width of the slider bar region
|
||||
#define BAR_WIDTH 423 - 197
|
||||
|
||||
@@ -63,6 +69,9 @@ enum
|
||||
|
||||
// Snap: these globals will be properly initialized in SetAttributes
|
||||
|
||||
INT32 iStartingLevel = 1; // Added by SANDRO
|
||||
INT32 iLevelCostMultiplier; // Added by SANDRO
|
||||
|
||||
// the skills as they stand
|
||||
INT32 iCurrentStrength = 0;
|
||||
INT32 iCurrentAgility = 0;
|
||||
@@ -99,6 +108,11 @@ BOOLEAN fReviewStats = FALSE;
|
||||
UINT32 giIMPAttributeSelectionButton[ 1 ];
|
||||
UINT32 giIMPAttributeSelectionButtonImage[ 1 ];
|
||||
|
||||
// STARTING LEVEL BUTTONS ADDED - SANDRO
|
||||
UINT32 giIMPStartingLevelButton[ 2 ];
|
||||
UINT32 giIMPStartingLevelButtonImage[ 2 ];
|
||||
|
||||
|
||||
// slider buttons
|
||||
UINT32 giIMPAttributeSelectionSliderButton[ 20 ];
|
||||
UINT32 giIMPAttributeSelectionSliderButtonImage[ 20 ];
|
||||
@@ -120,6 +134,9 @@ INT32 uiBarToReRender = -1;
|
||||
// are we actually coming back to edit, or are we restarting?
|
||||
BOOLEAN fReturnStatus = FALSE;
|
||||
|
||||
UINT32 guiIST_GreyGoldBoxLvl;
|
||||
|
||||
|
||||
// function definition
|
||||
void ProcessAttributes( void );
|
||||
void DestroyIMPAttributeSelectionButtons( void );
|
||||
@@ -148,6 +165,12 @@ void SliderRegionButtonCallback(MOUSE_REGION * pRegion, INT32 iReason );
|
||||
void SliderBarRegionButtonCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
||||
void StatAtZeroBoxCallBack( UINT8 bExitValue );
|
||||
|
||||
// added starting level choosing
|
||||
void CreateIMPStartingLevelSelectionButtons( void );
|
||||
void BtnIMPLevelSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason );
|
||||
void BtnIMPLevelSelectionRightCallback( GUI_BUTTON *btn,INT32 reason );
|
||||
INT32 iBonusPointsNeededForLevelUp();
|
||||
INT32 iBonusPointsRecievedForLevelDown();
|
||||
|
||||
void EnterIMPAttributeSelection( void )
|
||||
{
|
||||
@@ -157,7 +180,9 @@ void EnterIMPAttributeSelection( void )
|
||||
if( ( fReturnStatus == FALSE ) && ( fFirstIMPAttribTime == TRUE ) )
|
||||
{
|
||||
// re starting
|
||||
SetAttributes( );
|
||||
SetAttributes( );
|
||||
|
||||
iStartingLevel = 1; // ADDED - SADNRO
|
||||
|
||||
gpCurrentScrollBox = NULL;
|
||||
giCurrentlySelectedStat = -1;
|
||||
@@ -186,6 +211,9 @@ void EnterIMPAttributeSelection( void )
|
||||
CreateSlideRegionMouseRegions( );
|
||||
//CreateSliderBarMouseRegions( );
|
||||
|
||||
// create starting level choice button
|
||||
CreateIMPStartingLevelSelectionButtons( );
|
||||
|
||||
// render background
|
||||
RenderIMPAttributeSelection( );
|
||||
|
||||
@@ -197,6 +225,7 @@ void EnterIMPAttributeSelection( void )
|
||||
void RenderIMPAlteredAttribute( void )
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
void RenderIMPAttributeSelection( void )
|
||||
{
|
||||
@@ -223,9 +252,71 @@ void RenderIMPAttributeSelection( void )
|
||||
// print text for screen
|
||||
PrintImpText( );
|
||||
|
||||
// texts around
|
||||
// don't blit bonus if reviewing
|
||||
if( fReviewStats != TRUE )
|
||||
{
|
||||
DisplayWrappedString( LAPTOP_SCREEN_UL_X + 355, LAPTOP_SCREEN_WEB_UL_Y + 51, ( 640 ), 2, FONT12ARIAL, FONT_WHITE, sgAttributeSelectionText[2],FONT_BLACK,FALSE,0);
|
||||
DisplayWrappedString( LAPTOP_SCREEN_UL_X + 59, LAPTOP_SCREEN_WEB_UL_Y + 36, ( 240 ), 2, FONT10ARIAL, 142, sgAttributeSelectionText[0],FONT_BLACK,FALSE,0);
|
||||
|
||||
// this show us the exact maximum attribute based on ini option
|
||||
CHAR16 sMaxPntsString[64];
|
||||
INT32 iMaxPointsToShow = gGameExternalOptions.iMaxAttribute;
|
||||
|
||||
if (iMaxPointsToShow > 100 )
|
||||
iMaxPointsToShow = 100;
|
||||
|
||||
swprintf(sMaxPntsString, L"%d", iMaxPointsToShow);
|
||||
|
||||
// set font color
|
||||
SetFontForeground( 142 );
|
||||
SetFontBackground( FONT_BLACK );
|
||||
SetFont( FONT10ARIAL );
|
||||
// print string
|
||||
mprintf( LAPTOP_SCREEN_UL_X + 88 ,LAPTOP_SCREEN_WEB_UL_Y + 58, sMaxPntsString );
|
||||
|
||||
InvalidateRegion( LAPTOP_SCREEN_UL_X + 65, LAPTOP_SCREEN_WEB_UL_Y + 51, LAPTOP_SCREEN_UL_X + 85, LAPTOP_SCREEN_WEB_UL_Y + 71 );
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
//LoadAndDisplayIMPText( LAPTOP_SCREEN_UL_X + 60, LAPTOP_SCREEN_WEB_UL_Y + 44, ( 200 ), sgAttributeSelectionTextReview, FONT10ARIAL, 142, TRUE, 0);
|
||||
DisplayWrappedString( LAPTOP_SCREEN_UL_X + 60, LAPTOP_SCREEN_WEB_UL_Y + 44, ( 240 ), 2, FONT10ARIAL, 142, sgAttributeSelectionText[1],FONT_BLACK,FALSE,0);
|
||||
}
|
||||
|
||||
// amt of bonus pts
|
||||
DrawBonusPointsRemaining( );
|
||||
|
||||
//***********************************************************************************************
|
||||
// STARTING LEVEL BOX
|
||||
///////////////////////////
|
||||
|
||||
// Bonus frame for starting level
|
||||
RenderAttribStartingLevelFrame( STARTING_LEVEL_BOX_POS_X, STARTING_LEVEL_BOX_POS_Y );
|
||||
|
||||
// text
|
||||
DrawTextToScreen( sgAttributeSelectionText[3], LAPTOP_SCREEN_UL_X + STARTING_LEVEL_BOX_POS_X + 9, LAPTOP_SCREEN_WEB_UL_Y + STARTING_LEVEL_BOX_POS_Y + 4, ( 100 ), FONT12ARIAL, FONT_WHITE, FONT_BLACK, FALSE, RIGHT_JUSTIFIED );
|
||||
|
||||
// show level index
|
||||
HVOBJECT hImageHandle;
|
||||
GetVideoObject(&hImageHandle, guiIST_GreyGoldBoxLvl );
|
||||
BltVideoObject(FRAME_BUFFER, hImageHandle, 0,STARTING_LEVEL_BOX_POS_X + LAPTOP_SCREEN_UL_X + 20, STARTING_LEVEL_BOX_POS_Y + LAPTOP_SCREEN_WEB_UL_Y + 70, VO_BLT_SRCTRANSPARENCY,NULL);
|
||||
|
||||
CHAR16 sStartLevelString[64];
|
||||
|
||||
swprintf(sStartLevelString, L"%d", iStartingLevel );
|
||||
|
||||
// set font color
|
||||
SetFontForeground( 142 );
|
||||
SetFontBackground( FONT_BLACK );
|
||||
SetFont( FONT14ARIAL );
|
||||
// print string
|
||||
mprintf( STARTING_LEVEL_BOX_POS_X + LAPTOP_SCREEN_UL_X + 144 , STARTING_LEVEL_BOX_POS_Y + LAPTOP_SCREEN_WEB_UL_Y + 6, sStartLevelString );
|
||||
|
||||
InvalidateRegion( STARTING_LEVEL_BOX_POS_X + LAPTOP_SCREEN_UL_X + 130, STARTING_LEVEL_BOX_POS_Y + LAPTOP_SCREEN_WEB_UL_Y + 10, STARTING_LEVEL_BOX_POS_X + LAPTOP_SCREEN_UL_X + 172, STARTING_LEVEL_BOX_POS_Y + LAPTOP_SCREEN_WEB_UL_Y + 42 );
|
||||
|
||||
//****************************************
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -914,7 +1005,7 @@ void CreateIMPAttributeSelectionButtons( void )
|
||||
{
|
||||
|
||||
// the finished button
|
||||
giIMPAttributeSelectionButtonImage[0]= LoadButtonImage( "LAPTOP\\button_2.sti" ,-1,0,-1,1,-1 );
|
||||
giIMPAttributeSelectionButtonImage[0]= LoadButtonImage( "LAPTOP\\button_5.sti" ,-1,0,-1,1,-1 );
|
||||
/* giIMPAttributeSelectionButton[0] = QuickCreateButton( giIMPAttributeSelectionButtonImage[0], LAPTOP_SCREEN_UL_X + ( 136 ), LAPTOP_SCREEN_WEB_UL_Y + ( 314 ),
|
||||
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
||||
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPAttributeFinishCallback );
|
||||
@@ -923,7 +1014,7 @@ void CreateIMPAttributeSelectionButtons( void )
|
||||
FONT_WHITE, DEFAULT_SHADOW,
|
||||
FONT_WHITE, DEFAULT_SHADOW,
|
||||
TEXT_CJUSTIFIED,
|
||||
LAPTOP_SCREEN_UL_X + ( 136 ), LAPTOP_SCREEN_WEB_UL_Y + ( 314 ), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
||||
LAPTOP_SCREEN_UL_X + ( 350 ), LAPTOP_SCREEN_WEB_UL_Y + ( 340 ), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
||||
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPAttributeFinishCallback);
|
||||
|
||||
|
||||
@@ -940,11 +1031,16 @@ void DestroyIMPAttributeSelectionButtons( void )
|
||||
RemoveButton(giIMPAttributeSelectionButton[ 0 ] );
|
||||
UnloadButtonImage(giIMPAttributeSelectionButtonImage[ 0 ] );
|
||||
|
||||
// Destroy also starting level buttons
|
||||
RemoveButton(giIMPStartingLevelButton[ 0 ] );
|
||||
RemoveButton(giIMPStartingLevelButton[ 1 ] );
|
||||
UnloadButtonImage(giIMPStartingLevelButtonImage[ 0 ] );
|
||||
UnloadButtonImage(giIMPStartingLevelButtonImage[ 1 ] );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void BtnIMPAttributeFinishCallback(GUI_BUTTON *btn,INT32 reason)
|
||||
{
|
||||
|
||||
@@ -962,22 +1058,175 @@ void BtnIMPAttributeFinishCallback(GUI_BUTTON *btn,INT32 reason)
|
||||
{
|
||||
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
||||
|
||||
//are we done diting, or just reviewing the stats?
|
||||
if( fReviewStats == TRUE )
|
||||
{
|
||||
//iCurrentImpPage = IMP_MAIN_PAGE;
|
||||
|
||||
// SANDRO WAS HERE - THE FINISH PAGE AFTER ATTRIBUTES IS WORTHLESS AND HAVE BEEN CUT OUT
|
||||
//if ( fReviewStats == TRUE )
|
||||
//{
|
||||
iCurrentImpPage = IMP_FINISH;
|
||||
}
|
||||
else
|
||||
{
|
||||
iCurrentImpPage = IMP_ATTRIBUTE_FINISH;
|
||||
}
|
||||
fButtonPendingFlag = TRUE;
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
iCurrentProfileMode = IMP__FINISH; // All done
|
||||
//}
|
||||
|
||||
// SET ATTRIBUTES NOW
|
||||
SetGeneratedCharacterAttributes( );
|
||||
//fButtonPendingFlag = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CreateIMPStartingLevelSelectionButtons( void )
|
||||
{
|
||||
giIMPStartingLevelButtonImage[ 0 ]= LoadButtonImage( "LAPTOP\\AttributeArrows.sti" ,-1,0,-1,1,-1 );
|
||||
giIMPStartingLevelButtonImage[ 1 ]= LoadButtonImage( "LAPTOP\\AttributeArrows.sti" ,-1,3,-1,4,-1 );
|
||||
|
||||
|
||||
// left button - decrement level
|
||||
giIMPStartingLevelButton[ 0 ] = QuickCreateButton( giIMPStartingLevelButtonImage[ 0 ], STARTING_LEVEL_BOX_POS_X + LAPTOP_SCREEN_UL_X + 112, STARTING_LEVEL_BOX_POS_Y + LAPTOP_SCREEN_WEB_UL_Y + 3,
|
||||
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
||||
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPLevelSelectionLeftCallback );
|
||||
|
||||
// right button - increment level
|
||||
giIMPStartingLevelButton[ 1 ] = QuickCreateButton( giIMPStartingLevelButtonImage[ 1 ], STARTING_LEVEL_BOX_POS_X + LAPTOP_SCREEN_UL_X + 166, STARTING_LEVEL_BOX_POS_Y + LAPTOP_SCREEN_WEB_UL_Y + 3,
|
||||
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
||||
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPLevelSelectionRightCallback );
|
||||
|
||||
SetButtonCursor(giIMPStartingLevelButton[0], CURSOR_WWW);
|
||||
SetButtonCursor(giIMPStartingLevelButton[1 ], CURSOR_WWW);
|
||||
|
||||
// set user data
|
||||
MSYS_SetBtnUserData(giIMPStartingLevelButton[0],0, 0 / 2 );
|
||||
MSYS_SetBtnUserData(giIMPStartingLevelButton[1],0, 1 / 2 );
|
||||
|
||||
//Get rid of playing the button sound, it will be handled here
|
||||
//ButtonList[ giIMPStartingLevelButton[0] ]->ubSoundSchemeID = 0;
|
||||
//ButtonList[ giIMPStartingLevelButton[1] ]->ubSoundSchemeID = 0;
|
||||
|
||||
MarkButtonsDirty( );
|
||||
}
|
||||
void BtnIMPLevelSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason )
|
||||
{
|
||||
// btn callback for IMP personality quiz answer button
|
||||
if (!(btn->uiFlags & BUTTON_ENABLED))
|
||||
return;
|
||||
|
||||
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
|
||||
{
|
||||
if ( (iStartingLevel > 1) && !fReviewStats )
|
||||
{
|
||||
PlayButtonSound( giIMPStartingLevelButton[0], BUTTON_SOUND_CLICKED_ON );
|
||||
|
||||
iCurrentBonusPoints += iBonusPointsRecievedForLevelDown();
|
||||
iStartingLevel--;
|
||||
|
||||
fHasAnySlidingBarMoved = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayButtonSound( giIMPStartingLevelButton[0], BUTTON_SOUND_DISABLED_CLICK );
|
||||
}
|
||||
}
|
||||
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
||||
{
|
||||
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
||||
|
||||
if ( (iStartingLevel > 1) && !fReviewStats )
|
||||
{
|
||||
PlayButtonSound( giIMPStartingLevelButton[0], BUTTON_SOUND_CLICKED_ON );
|
||||
|
||||
iCurrentBonusPoints += iBonusPointsRecievedForLevelDown();
|
||||
iStartingLevel--;
|
||||
|
||||
fHasAnySlidingBarMoved = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayButtonSound( giIMPStartingLevelButton[0], BUTTON_SOUND_DISABLED_CLICK );
|
||||
}
|
||||
}
|
||||
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
||||
{
|
||||
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
||||
{
|
||||
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
||||
}
|
||||
}
|
||||
}
|
||||
void BtnIMPLevelSelectionRightCallback( GUI_BUTTON *btn,INT32 reason )
|
||||
{
|
||||
// btn callback for IMP personality quiz answer button
|
||||
if (!(btn->uiFlags & BUTTON_ENABLED))
|
||||
return;
|
||||
|
||||
if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT )
|
||||
{
|
||||
if ((iBonusPointsNeededForLevelUp() <= iCurrentBonusPoints) && ( iStartingLevel < 10 ) && !fReviewStats )
|
||||
{
|
||||
PlayButtonSound( giIMPStartingLevelButton[1], BUTTON_SOUND_CLICKED_ON );
|
||||
|
||||
iCurrentBonusPoints -= iBonusPointsNeededForLevelUp();
|
||||
iStartingLevel++;
|
||||
|
||||
fHasAnySlidingBarMoved = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayButtonSound( giIMPStartingLevelButton[1], BUTTON_SOUND_DISABLED_CLICK );
|
||||
}
|
||||
}
|
||||
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
||||
{
|
||||
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
||||
|
||||
if ((iBonusPointsNeededForLevelUp() <= iCurrentBonusPoints) && ( iStartingLevel < 10 ) && !fReviewStats )
|
||||
{
|
||||
PlayButtonSound( giIMPStartingLevelButton[1], BUTTON_SOUND_CLICKED_ON );
|
||||
|
||||
iCurrentBonusPoints -= iBonusPointsNeededForLevelUp();
|
||||
iStartingLevel++;
|
||||
|
||||
fHasAnySlidingBarMoved = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayButtonSound( giIMPStartingLevelButton[1], BUTTON_SOUND_DISABLED_CLICK );
|
||||
}
|
||||
}
|
||||
else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
||||
{
|
||||
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
||||
{
|
||||
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
INT32 iBonusPointsNeededForLevelUp()
|
||||
{
|
||||
INT32 iBonusPointsNeeded = 0;
|
||||
|
||||
if (iStartingLevel > 0 && iStartingLevel < 10)
|
||||
{
|
||||
iBonusPointsNeeded = (iStartingLevel + 1) * iLevelCostMultiplier;
|
||||
}
|
||||
|
||||
return( iBonusPointsNeeded );
|
||||
|
||||
}
|
||||
|
||||
INT32 iBonusPointsRecievedForLevelDown()
|
||||
{
|
||||
INT32 iBonusPointsRecieved;
|
||||
|
||||
if (iStartingLevel > 1 && iStartingLevel <= 10)
|
||||
{
|
||||
iBonusPointsRecieved = iStartingLevel * iLevelCostMultiplier;
|
||||
}
|
||||
|
||||
return( iBonusPointsRecieved );
|
||||
}
|
||||
void RenderAttributeBoxes( void )
|
||||
{
|
||||
|
||||
@@ -1185,7 +1434,7 @@ void CreateAttributeSliderButtons( void )
|
||||
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPAttributeSliderLeftCallback );
|
||||
|
||||
// right button - increment stat
|
||||
giIMPAttributeSelectionSliderButton[ iCounter + 1 ] = QuickCreateButton( giIMPAttributeSelectionSliderButtonImage[ 1 ], LAPTOP_SCREEN_UL_X + ( 419 ), ( INT16 ) ( LAPTOP_SCREEN_WEB_UL_Y + ( 99 + iCounter / 2 * 20 ) ),
|
||||
giIMPAttributeSelectionSliderButton[ iCounter + 1 ] = QuickCreateButton( giIMPAttributeSelectionSliderButtonImage[ 1 ], LAPTOP_SCREEN_UL_X + ( 420 ), ( INT16 ) ( LAPTOP_SCREEN_WEB_UL_Y + ( 99 + iCounter / 2 * 20 ) ),
|
||||
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
||||
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPAttributeSliderRightCallback );
|
||||
|
||||
@@ -1647,7 +1896,7 @@ INT32 GetCurrentAttributeValue( INT32 iAttribute )
|
||||
|
||||
void SetAttributes( void )
|
||||
{
|
||||
INT8 bExtraPoints;
|
||||
INT8 bExtraPoints = 0;
|
||||
/*
|
||||
// set attributes and skills based on what is in charprofile.c
|
||||
|
||||
@@ -1669,6 +1918,9 @@ void SetAttributes( void )
|
||||
iCurrentBonusPoints = 40;
|
||||
*/
|
||||
|
||||
// added externilized multiplier for starting level - SADNRO
|
||||
iLevelCostMultiplier = gGameExternalOptions.iIMPStartingLevelCostMultiplier;
|
||||
|
||||
iCurrentStrength = gGameExternalOptions.iStartAttribute;
|
||||
iCurrentDexterity = gGameExternalOptions.iStartAttribute;
|
||||
iCurrentHealth = gGameExternalOptions.iStartAttribute;
|
||||
@@ -1689,7 +1941,8 @@ void SetAttributes( void )
|
||||
|
||||
|
||||
//Determine if the player has any extra points
|
||||
bExtraPoints = DoesPlayerHaveExtraAttibutePointsToDistributeBasedOnSkillSelection();
|
||||
bExtraPoints += iPlayersAttributePointsBonusForDisabilitySelected(); // Added attribute bonus for chosen disability - SANDRO
|
||||
bExtraPoints += DoesPlayerHaveExtraAttibutePointsToDistributeBasedOnSkillSelection();
|
||||
|
||||
if( bExtraPoints > 0 )
|
||||
{
|
||||
@@ -1815,3 +2068,11 @@ INT32 DetermineNewPosition( INT32 iAttribute )
|
||||
|
||||
return( iNewLoc );
|
||||
}
|
||||
|
||||
INT8 StartingLevelChosen()
|
||||
{
|
||||
if ( (iStartingLevel > 0) && (iStartingLevel <= 10) )
|
||||
return(iStartingLevel);
|
||||
else
|
||||
return(1);
|
||||
}
|
||||
@@ -20,5 +20,6 @@ extern BOOLEAN fReturnStatus;
|
||||
#define SKILL_SLIDE_START_Y 100
|
||||
#define SKILL_SLIDE_HEIGHT 20
|
||||
|
||||
INT8 StartingLevelChosen(); // added - SANDRO
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,446 @@
|
||||
#ifdef PRECOMPILEDHEADERS
|
||||
#include "Laptop All.h"
|
||||
#include "IMP Character Trait.h"
|
||||
#include "_Ja25Englishtext.h"
|
||||
#else
|
||||
#include "IMP Character Trait.h"
|
||||
#include "Button System.h"
|
||||
#include "utilities.h"
|
||||
#include "Debug.h"
|
||||
#include "Text.h"
|
||||
#include "Font Control.h"
|
||||
#include "font.h"
|
||||
#include "laptop.h"
|
||||
#include "cursors.h"
|
||||
#include "IMP MainPage.h"
|
||||
#include "IMPVideoObjects.h"
|
||||
#include "_Ja25EnglishText.h"
|
||||
#include "wordwrap.h"
|
||||
#include "CharProfile.h"
|
||||
#include "soldier profile type.h"
|
||||
#include "IMP Compile Character.h"
|
||||
#endif
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
//
|
||||
// Local Defines
|
||||
//
|
||||
//*******************************************************************
|
||||
|
||||
#define IMP_CHARACTER_TRAIT__TITLE_FONT FONT14ARIAL
|
||||
|
||||
#define IMP_CHARACTER_TRAIT__FONT FONT12ARIAL
|
||||
#define IMP_CHARACTER_TRAIT__COLOR FONT_MCOLOR_WHITE
|
||||
|
||||
enum
|
||||
{
|
||||
IMP_CHARACTER_TRAIT__TITLE_TEXT=IMP_CHARACTER_TRAITS_NUMBER,
|
||||
};
|
||||
|
||||
|
||||
|
||||
#define IMP_CHARACTER_1ST_COLUMN_START_X ( LAPTOP_SCREEN_UL_X + 15 )
|
||||
#define IMP_CHARACTER_1ST_COLUMN_START_Y ( LAPTOP_SCREEN_WEB_UL_Y + 40 )
|
||||
|
||||
#define IMP_CHARACTER_2ND_COLUMN_START_X ( IMP_CHARACTER_1ST_COLUMN_START_X + 241 )
|
||||
#define IMP_CHARACTER_2ND_COLUMN_START_Y IMP_CHARACTER_1ST_COLUMN_START_Y
|
||||
|
||||
#define IMP_CHARACTER_TRAIT__SPACE_BTN_BUTTONS 38
|
||||
|
||||
#define IMP_CHARACTER_TRAIT_NUMBER_TO_START_2ND_COLUMN 5
|
||||
|
||||
#define IMP_CHARACTER_TRAIT__TEXT_OFFSET_X 65
|
||||
#define IMP_CHARACTER_TRAIT__TEXT_OFFSET_Y 12
|
||||
|
||||
#define IMP_CHARACTER_TRAIT__TITLE_X LAPTOP_SCREEN_UL_X - 111
|
||||
#define IMP_CHARACTER_TRAIT__TITLE_Y iScreenHeightOffset + 53
|
||||
#define IMP_CHARACTER_TRAIT__TITLE_WIDTH ( LAPTOP_SCREEN_LR_X - LAPTOP_SCREEN_UL_X )
|
||||
|
||||
#define IMP_CHARACTER_TRAIT__GREY_BOX_OFFSET_X 5
|
||||
#define IMP_CHARACTER_TRAIT__GREY_BOX_OFFSET_Y 7
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
//
|
||||
// Global Variables
|
||||
//
|
||||
//*******************************************************************
|
||||
|
||||
BOOLEAN gfIST_Redraw2=FALSE;
|
||||
|
||||
BOOLEAN gfCharacterTraitQuestions[ IMP_CHARACTER_TRAITS_NUMBER ];
|
||||
|
||||
// these are the buttons for the questions
|
||||
INT32 giIMPCharacterTraitAnswerButton[ IMP_CHARACTER_TRAITS_NUMBER ];
|
||||
INT32 giIMPCharacterTraitAnswerButtonImage[ IMP_CHARACTER_TRAITS_NUMBER ];
|
||||
|
||||
// this is the Done buttons
|
||||
INT32 giIMPCharacterTraitFinsihButton;
|
||||
INT32 giIMPCharacterTraitFinsihButtonImage;
|
||||
|
||||
//image handle
|
||||
UINT32 guiIST_GreyGoldBox2;
|
||||
|
||||
//*******************************************************************
|
||||
//
|
||||
// Function Prototypes
|
||||
//
|
||||
//*******************************************************************
|
||||
|
||||
void BtnIMPCharacterTraitAnswerCallback(GUI_BUTTON *btn,INT32 reason);
|
||||
void BtnIMPCharacterTraitFinishCallback(GUI_BUTTON *btn,INT32 reason);
|
||||
void AddImpCharacterTraitButtons();
|
||||
void HandleCharacterTraitButtonStates( );
|
||||
void HandleIMPCharacterTraitAnswers( UINT32 uiSkillPressed );
|
||||
void IMPCharacterTraitDisplayCharacterTraits();
|
||||
//INT8 CountNumCharacterTraitsSelected( BOOLEAN fIncludeNoneSkill );
|
||||
//BOOLEAN ShouldTraitBeSkipped( UINT32 uiTrait );
|
||||
//void SaveSelectedPersonality();
|
||||
//void HandleLastSelectedCharacterTraits( INT8 bNewTrait );
|
||||
BOOLEAN CameBackToCharacterTraitPageButNotFinished();
|
||||
//ppp
|
||||
|
||||
//*******************************************************************
|
||||
//
|
||||
// Functions
|
||||
//
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
|
||||
void EnterIMPCharacterTrait( void )
|
||||
{
|
||||
// UINT32 uiCnt;
|
||||
VOBJECT_DESC VObjectDesc;
|
||||
|
||||
//add the skill trait buttons
|
||||
AddImpCharacterTraitButtons();
|
||||
|
||||
// load the stats graphic and add it
|
||||
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
||||
FilenameForBPP("LAPTOP\\SkillTraitSmallGreyIdent.sti", VObjectDesc.ImageFile);
|
||||
if( !AddVideoObject(&VObjectDesc, &guiIST_GreyGoldBox2 ) )
|
||||
{
|
||||
Assert( 0 );
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
giIMPCharacterTraitFinsihButtonImage = LoadButtonImage( "LAPTOP\\button_5.sti" ,-1,0,-1,1,-1 );
|
||||
giIMPCharacterTraitFinsihButton = CreateIconAndTextButton( giIMPCharacterTraitFinsihButtonImage, pImpButtonText[ 13 ], FONT12ARIAL,
|
||||
FONT_WHITE, DEFAULT_SHADOW,
|
||||
FONT_WHITE, DEFAULT_SHADOW,
|
||||
TEXT_CJUSTIFIED,
|
||||
LAPTOP_SCREEN_UL_X + ( 350 ), LAPTOP_SCREEN_WEB_UL_Y + ( 340 ), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
||||
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPCharacterTraitFinishCallback );
|
||||
|
||||
|
||||
|
||||
SetButtonCursor( giIMPCharacterTraitFinsihButton, CURSOR_WWW);
|
||||
|
||||
//if we are not DONE and are just reviewing
|
||||
if( iCurrentProfileMode != IMP__FINISH )
|
||||
{
|
||||
//Have the NONE trait initially selected
|
||||
gfCharacterTraitQuestions[ IMP_CHARACTER_TRAIT_NORMAL ] = TRUE;
|
||||
}
|
||||
|
||||
HandleCharacterTraitButtonStates( );
|
||||
|
||||
}
|
||||
|
||||
|
||||
void RenderIMPCharacterTrait( void )
|
||||
{
|
||||
//render the metal background graphic
|
||||
RenderProfileBackGround();
|
||||
|
||||
//Display the title
|
||||
DrawTextToScreen( gzIMPCharacterTraitText[IMP_CHARACTER_TRAITS_NUMBER], LAPTOP_SCREEN_UL_X - 111, iScreenHeightOffset + 53, ( LAPTOP_SCREEN_LR_X - LAPTOP_SCREEN_UL_X ), FONT14ARIAL, FONT_MCOLOR_WHITE, FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
||||
|
||||
IMPCharacterTraitDisplayCharacterTraits();
|
||||
}
|
||||
|
||||
|
||||
void ExitIMPCharacterTrait( void )
|
||||
{
|
||||
INT32 iCnt;
|
||||
|
||||
DeleteVideoObjectFromIndex( guiIST_GreyGoldBox2 );
|
||||
|
||||
//remove the skill buttons
|
||||
for(iCnt = 0; iCnt < IMP_CHARACTER_TRAITS_NUMBER; iCnt++)
|
||||
{
|
||||
//if there is a button allocated
|
||||
if( giIMPCharacterTraitAnswerButton[iCnt] != -1 )
|
||||
{
|
||||
RemoveButton(giIMPCharacterTraitAnswerButton[ iCnt ] );
|
||||
UnloadButtonImage(giIMPCharacterTraitAnswerButtonImage[ iCnt ] );
|
||||
}
|
||||
}
|
||||
|
||||
RemoveButton( giIMPCharacterTraitFinsihButton );
|
||||
UnloadButtonImage( giIMPCharacterTraitFinsihButtonImage );
|
||||
}
|
||||
|
||||
|
||||
void HandleIMPCharacterTrait( void )
|
||||
{
|
||||
if( gfIST_Redraw2 )
|
||||
{
|
||||
RenderIMPCharacterTrait( );
|
||||
gfIST_Redraw2 = FALSE;
|
||||
}
|
||||
|
||||
InvalidateRegion(LAPTOP_SCREEN_UL_X,LAPTOP_SCREEN_WEB_UL_Y,LAPTOP_SCREEN_LR_X,LAPTOP_SCREEN_WEB_LR_Y);
|
||||
}
|
||||
|
||||
void AddImpCharacterTraitButtons()
|
||||
{
|
||||
INT32 iCnt = 0;
|
||||
UINT16 usPosX, usPosY;
|
||||
|
||||
usPosX = IMP_CHARACTER_1ST_COLUMN_START_X;
|
||||
usPosY = IMP_CHARACTER_1ST_COLUMN_START_Y;
|
||||
|
||||
for(iCnt = 0; iCnt < IMP_CHARACTER_TRAITS_NUMBER; iCnt++)
|
||||
{
|
||||
//reset
|
||||
giIMPCharacterTraitAnswerButton[iCnt] = -1;
|
||||
|
||||
//if we are not DONE and are just reviewing
|
||||
if( iCurrentProfileMode != IMP__FINISH )
|
||||
{
|
||||
gfCharacterTraitQuestions[ iCnt ] = FALSE;
|
||||
}
|
||||
|
||||
if( iCnt == 0 )
|
||||
giIMPCharacterTraitAnswerButtonImage[ iCnt ] = LoadButtonImage( "LAPTOP\\button_6.sti", -1,0,-1,1,-1 );
|
||||
else
|
||||
giIMPCharacterTraitAnswerButtonImage[ iCnt ] = UseLoadedButtonImage( giIMPCharacterTraitAnswerButtonImage[ 0 ], -1,0,-1,1,-1 );
|
||||
|
||||
giIMPCharacterTraitAnswerButton[iCnt] = QuickCreateButton( giIMPCharacterTraitAnswerButtonImage[ iCnt ], usPosX, usPosY,
|
||||
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 3,
|
||||
MSYS_NO_CALLBACK, (GUI_CALLBACK)BtnIMPCharacterTraitAnswerCallback);
|
||||
|
||||
//Set the button data
|
||||
MSYS_SetBtnUserData( giIMPCharacterTraitAnswerButton[iCnt], 0, iCnt );
|
||||
SetButtonCursor( giIMPCharacterTraitAnswerButton[iCnt], CURSOR_WWW);
|
||||
|
||||
//Get rid of playing the button sound, it will be handled here
|
||||
//ButtonList[ giIMPCharacterTraitAnswerButton[ iCnt ] ]->ubSoundSchemeID = 0;
|
||||
|
||||
//Determine the next x location
|
||||
if( iCnt < IMP_CHARACTER_TRAIT_NUMBER_TO_START_2ND_COLUMN )
|
||||
usPosX = IMP_CHARACTER_1ST_COLUMN_START_X;
|
||||
else
|
||||
usPosX = IMP_CHARACTER_2ND_COLUMN_START_X;
|
||||
|
||||
//Determine the next Y location
|
||||
if( iCnt == IMP_CHARACTER_TRAIT_NUMBER_TO_START_2ND_COLUMN )
|
||||
usPosY = IMP_CHARACTER_2ND_COLUMN_START_Y;
|
||||
else
|
||||
usPosY += IMP_CHARACTER_TRAIT__SPACE_BTN_BUTTONS;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void BtnIMPCharacterTraitAnswerCallback(GUI_BUTTON *btn,INT32 reason)
|
||||
{
|
||||
// btn callback for IMP personality quiz answer button
|
||||
if (!(btn->uiFlags & BUTTON_ENABLED))
|
||||
return;
|
||||
|
||||
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
||||
{
|
||||
// btn->uiFlags|=(BUTTON_CLICKED_ON);
|
||||
|
||||
INT32 iCharacterTrait = MSYS_GetBtnUserData( btn, 0 );
|
||||
|
||||
HandleIMPCharacterTraitAnswers( iCharacterTrait );
|
||||
}
|
||||
}
|
||||
|
||||
void HandleIMPCharacterTraitAnswers( UINT32 uiSkillPressed )
|
||||
{
|
||||
UINT32 uiCnt;
|
||||
|
||||
//if we are DONE and are just reviewing
|
||||
if( iCurrentProfileMode == IMP__FINISH )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//reset all other buttons
|
||||
for( uiCnt=0; uiCnt<IMP_CHARACTER_TRAITS_NUMBER; uiCnt++ )
|
||||
{
|
||||
gfCharacterTraitQuestions[ uiCnt ] = FALSE;
|
||||
}
|
||||
|
||||
//make sure its a valid character trait
|
||||
if( uiSkillPressed > IMP_CHARACTER_TRAITS_NUMBER )
|
||||
{
|
||||
Assert( 0 );
|
||||
return;
|
||||
}
|
||||
|
||||
//if its allready set
|
||||
if( gfCharacterTraitQuestions[ uiSkillPressed ] )
|
||||
{
|
||||
//dont need to do anything
|
||||
return;
|
||||
}
|
||||
|
||||
//Set the skill
|
||||
gfCharacterTraitQuestions[ uiSkillPressed ] = TRUE;
|
||||
|
||||
//Play the button sound
|
||||
if( gfCharacterTraitQuestions[ uiSkillPressed ] )
|
||||
{
|
||||
PlayButtonSound( giIMPCharacterTraitAnswerButton[ uiSkillPressed ], BUTTON_SOUND_CLICKED_ON );
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayButtonSound( giIMPCharacterTraitAnswerButton[ uiSkillPressed ], BUTTON_SOUND_CLICKED_OFF );
|
||||
}
|
||||
|
||||
//update buttons
|
||||
HandleCharacterTraitButtonStates( );
|
||||
|
||||
//redraw the screen
|
||||
gfIST_Redraw2 = TRUE;
|
||||
}
|
||||
|
||||
void HandleCharacterTraitButtonStates( )
|
||||
{
|
||||
UINT32 uiCnt;
|
||||
|
||||
for( uiCnt=0; uiCnt<IMP_CHARACTER_TRAITS_NUMBER; uiCnt++ )
|
||||
{
|
||||
|
||||
//if the skill is selected ( ie depressed )
|
||||
if( gfCharacterTraitQuestions[ uiCnt ] )
|
||||
{
|
||||
ButtonList[ giIMPCharacterTraitAnswerButton[ uiCnt ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
||||
}
|
||||
else
|
||||
{
|
||||
ButtonList[ giIMPCharacterTraitAnswerButton[ uiCnt ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void IMPCharacterTraitDisplayCharacterTraits()
|
||||
{
|
||||
UINT32 uiCnt;
|
||||
UINT16 usPosX, usPosY;
|
||||
UINT16 usBoxPosX, usBoxPosY;
|
||||
HVOBJECT hImageHandle;
|
||||
|
||||
// Stats
|
||||
GetVideoObject(&hImageHandle, guiIST_GreyGoldBox2 );
|
||||
|
||||
usPosX = IMP_CHARACTER_1ST_COLUMN_START_X + IMP_CHARACTER_TRAIT__TEXT_OFFSET_X;
|
||||
usPosY = IMP_CHARACTER_1ST_COLUMN_START_Y + IMP_CHARACTER_TRAIT__TEXT_OFFSET_Y;
|
||||
|
||||
for( uiCnt=0; uiCnt<IMP_CHARACTER_TRAITS_NUMBER; uiCnt++ )
|
||||
{
|
||||
usBoxPosX = usPosX - IMP_CHARACTER_TRAIT__GREY_BOX_OFFSET_X;
|
||||
usBoxPosY = usPosY - IMP_CHARACTER_TRAIT__GREY_BOX_OFFSET_Y;
|
||||
|
||||
//if the trait is selected
|
||||
if( gfCharacterTraitQuestions[ uiCnt ] )
|
||||
{
|
||||
//Display the gold background box
|
||||
BltVideoObject(FRAME_BUFFER, hImageHandle, 1, usBoxPosX, usBoxPosY, VO_BLT_SRCTRANSPARENCY,NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Display the grey background box
|
||||
BltVideoObject(FRAME_BUFFER, hImageHandle, 0,usBoxPosX, usBoxPosY, VO_BLT_SRCTRANSPARENCY,NULL);
|
||||
}
|
||||
|
||||
//draw the text to the screenx
|
||||
DrawTextToScreen( gzIMPCharacterTraitText[ uiCnt ], usPosX, usPosY, 0, IMP_CHARACTER_TRAIT__FONT, IMP_CHARACTER_TRAIT__COLOR, FONT_MCOLOR_BLACK, FALSE, LEFT_JUSTIFIED );
|
||||
|
||||
//Determine the next x location
|
||||
if( uiCnt < IMP_CHARACTER_TRAIT_NUMBER_TO_START_2ND_COLUMN )
|
||||
usPosX = IMP_CHARACTER_1ST_COLUMN_START_X + IMP_CHARACTER_TRAIT__TEXT_OFFSET_X;
|
||||
else
|
||||
usPosX = IMP_CHARACTER_2ND_COLUMN_START_X + IMP_CHARACTER_TRAIT__TEXT_OFFSET_X;
|
||||
|
||||
//Determine the next Y location
|
||||
if( uiCnt == IMP_CHARACTER_TRAIT_NUMBER_TO_START_2ND_COLUMN )
|
||||
usPosY = IMP_CHARACTER_2ND_COLUMN_START_Y + IMP_CHARACTER_TRAIT__TEXT_OFFSET_Y;
|
||||
else
|
||||
usPosY += IMP_CHARACTER_TRAIT__SPACE_BTN_BUTTONS;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void BtnIMPCharacterTraitFinishCallback(GUI_BUTTON *btn,INT32 reason)
|
||||
{
|
||||
// btn callback for IMP personality quiz answer button
|
||||
if (!(btn->uiFlags & BUTTON_ENABLED))
|
||||
return;
|
||||
|
||||
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
||||
{
|
||||
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
||||
|
||||
//if we are just reviewing the page
|
||||
//if( iCurrentProfileMode == IMP__FINISH )
|
||||
//{
|
||||
//go back tot he done screen
|
||||
iCurrentImpPage = IMP_DISABILITY_PAGE;
|
||||
fButtonPendingFlag = TRUE;
|
||||
//}
|
||||
/*else
|
||||
{
|
||||
iCurrentImpPage = IMP_DISABILITY_PAGE;
|
||||
|
||||
if( CameBackToCharacterTraitPageButNotFinished() )
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
//We are finished on this page
|
||||
iCurrentProfileMode = IMP__PERSONALITY;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BOOLEAN CameBackToCharacterTraitPageButNotFinished()
|
||||
{
|
||||
//if we are in a page that comes after this one
|
||||
if( iCurrentProfileMode == IMP__ATTRIBUTES || iCurrentProfileMode == IMP__PERSONALITY )
|
||||
{
|
||||
return( TRUE );
|
||||
}
|
||||
else
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
}
|
||||
|
||||
INT8 iChosenCharacterTrait()
|
||||
{
|
||||
UINT32 uiCnt;
|
||||
INT8 iCharacterTraitNumber = 0;
|
||||
|
||||
//loop through all the buttons and reset them
|
||||
for( uiCnt=0; uiCnt<IMP_CHARACTER_TRAITS_NUMBER; uiCnt++ )
|
||||
{
|
||||
//if the trait is selected
|
||||
if( gfCharacterTraitQuestions[ uiCnt ] )
|
||||
{
|
||||
iCharacterTraitNumber = uiCnt;
|
||||
}
|
||||
}
|
||||
return( iCharacterTraitNumber );
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
#ifndef __IMP_CHARACTER_TRAIT__H_
|
||||
#define __IMP_CHARACTER_TRAIT__H_
|
||||
|
||||
#include "Types.h"
|
||||
|
||||
void EnterIMPCharacterTrait( void );
|
||||
void RenderIMPCharacterTrait( void );
|
||||
void ExitIMPCharacterTrait( void );
|
||||
void HandleIMPCharacterTrait( void );
|
||||
|
||||
//enum
|
||||
//{
|
||||
typedef enum
|
||||
{
|
||||
IMP_CHARACTER_TRAIT_NORMAL = 0,
|
||||
IMP_CHARACTER_TRAIT_FRIENDLY,
|
||||
IMP_CHARACTER_TRAIT_LONER,
|
||||
IMP_CHARACTER_TRAIT_OPTIMIST,
|
||||
IMP_CHARACTER_TRAIT_PESSIMIST,
|
||||
IMP_CHARACTER_TRAIT_AGGRESSIVE,
|
||||
IMP_CHARACTER_TRAIT_ARROGANT,
|
||||
IMP_CHARACTER_TRAIT_BIGSHOT,
|
||||
IMP_CHARACTER_TRAIT_ASSHOLE,
|
||||
IMP_CHARACTER_TRAIT_COWARD,
|
||||
IMP_CHARACTER_TRAITS_NUMBER,
|
||||
} ;
|
||||
|
||||
INT8 iChosenCharacterTrait();
|
||||
|
||||
STR16 gzIMPCharacterTraitText[];
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,133 @@
|
||||
#ifdef PRECOMPILEDHEADERS
|
||||
#include "Laptop All.h"
|
||||
#else
|
||||
#include "CharProfile.h"
|
||||
#include "IMP Character and Disability Entrance.h"
|
||||
#include "IMP MainPage.h"
|
||||
#include "IMP HomePage.h"
|
||||
#include "IMPVideoObjects.h"
|
||||
#include "Utilities.h"
|
||||
#include "WCheck.h"
|
||||
#include "Debug.h"
|
||||
#include "WordWrap.h"
|
||||
#include "Render Dirty.h"
|
||||
#include "Encrypted File.h"
|
||||
#include "cursors.h"
|
||||
#include "laptop.h"
|
||||
#include "IMP Text System.h"
|
||||
#include "text.h"
|
||||
|
||||
#endif
|
||||
|
||||
// IMP personality entrance buttons
|
||||
INT32 giIMPCharacterAndDisabilityEntranceButton[1];
|
||||
INT32 giIMPCharacterAndDisabilityEntranceButtonImage[1];
|
||||
|
||||
|
||||
// function definitions
|
||||
void CreateIMPCharacterAndDisabilityEntranceButtons( void );
|
||||
void BtnIMPCharacterAndDisabilityEntranceDoneCallback(GUI_BUTTON *btn,INT32 reason);
|
||||
void WriteIMPCharacterAndDisabilityEntranceText( void );
|
||||
|
||||
|
||||
void EnterIMPCharacterAndDisabilityEntrance( void )
|
||||
{
|
||||
// create buttons needed
|
||||
CreateIMPCharacterAndDisabilityEntranceButtons( );
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void RenderIMPCharacterAndDisabilityEntrance( void )
|
||||
{
|
||||
// the background
|
||||
RenderProfileBackGround( );
|
||||
|
||||
// the IMP symbol
|
||||
//RenderIMPSymbol( 112, 30 );
|
||||
|
||||
// indent
|
||||
RenderAvgMercIndentFrame(90, 40 );
|
||||
return;
|
||||
}
|
||||
|
||||
void ExitIMPCharacterAndDisabilityEntrance( void )
|
||||
{
|
||||
// destroy buttons needed
|
||||
RemoveButton(giIMPCharacterAndDisabilityEntranceButton[0] );
|
||||
UnloadButtonImage(giIMPCharacterAndDisabilityEntranceButtonImage[0] );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
void HandleIMPCharacterAndDisabilityEntrance( void )
|
||||
{
|
||||
// Show the text
|
||||
WriteIMPCharacterAndDisabilityEntranceText( );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void CreateIMPCharacterAndDisabilityEntranceButtons( void )
|
||||
{
|
||||
// this function will create the buttons needed for the IMP personality Page
|
||||
|
||||
// ths begin button
|
||||
giIMPCharacterAndDisabilityEntranceButtonImage[0]= LoadButtonImage( "LAPTOP\\button_2.sti" ,-1,0,-1,1,-1 );
|
||||
/*giIMPCharacterAndDisabilityEntranceButton[0] = QuickCreateButton( giIMPCharacterAndDisabilityEntranceButtonImage[0], LAPTOP_SCREEN_UL_X + ( 136 ), LAPTOP_SCREEN_WEB_UL_Y + ( 314 ),
|
||||
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
||||
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPCharacterAndDisabilityEntranceDoneCallback);
|
||||
*/
|
||||
giIMPCharacterAndDisabilityEntranceButton[0] = CreateIconAndTextButton( giIMPCharacterAndDisabilityEntranceButtonImage[0], pImpButtonText[ 1 ], FONT12ARIAL,
|
||||
FONT_WHITE, DEFAULT_SHADOW,
|
||||
FONT_WHITE, DEFAULT_SHADOW,
|
||||
TEXT_CJUSTIFIED,
|
||||
LAPTOP_SCREEN_UL_X + ( 136 ), LAPTOP_SCREEN_WEB_UL_Y + ( 314 ), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
||||
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPCharacterAndDisabilityEntranceDoneCallback);
|
||||
|
||||
|
||||
SetButtonCursor(giIMPCharacterAndDisabilityEntranceButton[0], CURSOR_WWW);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void WriteIMPCharacterAndDisabilityEntranceText( void )
|
||||
{
|
||||
//Display the title
|
||||
DrawTextToScreen( pCharacterTraitBeginIMPStrings[ 0 ], LAPTOP_SCREEN_UL_X - 111, iScreenHeightOffset + 53, ( LAPTOP_SCREEN_LR_X - LAPTOP_SCREEN_UL_X ), FONT14ARIAL, FONT_MCOLOR_WHITE, FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
||||
|
||||
// The personality part
|
||||
DisplayWrappedString( LAPTOP_SCREEN_UL_X + 106, LAPTOP_SCREEN_WEB_UL_Y + 63, ( 400 - 100 ), 2, FONT12ARIAL, FONT_WHITE, pCharacterTraitBeginIMPStrings[ 1 ],FONT_BLACK,FALSE,CENTER_JUSTIFIED);
|
||||
|
||||
// The disability part
|
||||
DisplayWrappedString( LAPTOP_SCREEN_UL_X + 106, LAPTOP_SCREEN_WEB_UL_Y + 145, ( 400 - 100 ), 2, FONT12ARIAL, FONT_WHITE, pCharacterTraitBeginIMPStrings[ 2 ],FONT_BLACK,FALSE,CENTER_JUSTIFIED);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void BtnIMPCharacterAndDisabilityEntranceDoneCallback(GUI_BUTTON *btn,INT32 reason)
|
||||
{
|
||||
|
||||
// btn callback for IMP Begin Screen done 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);
|
||||
|
||||
// done with begin screen, next screen
|
||||
iCurrentImpPage = IMP_CHARACTER_PAGE;
|
||||
fButtonPendingFlag = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
#ifndef _CHARACTERANDDISABILITY_ENTRANCE_H
|
||||
#define _CHARACTERANDDISABILITY_ENTRANCE_H
|
||||
|
||||
|
||||
void EnterIMPCharacterAndDisabilityEntrance( void );
|
||||
void RenderIMPCharacterAndDisabilityEntrance( void );
|
||||
void ExitIMPCharacterAndDisabilityEntrance( void );
|
||||
void HandleIMPCharacterAndDisabilityEntrance( void );
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,20 @@
|
||||
#ifndef __IMP_COLOR_CHOOSING_SKIN_HAIR__H_
|
||||
#define __IMP_COLOR_CHOOSING_SKIN_HAIR__H_
|
||||
|
||||
#include "Types.h"
|
||||
|
||||
void EnterIMPColorChoice( void );
|
||||
void RenderIMPColorChoice( void );
|
||||
void ExitIMPColorChoice( void );
|
||||
void HandleIMPColorChoice( void );
|
||||
|
||||
|
||||
INT8 iChosenSkin();
|
||||
INT8 iChosenHair();
|
||||
INT8 iChosenShirt();
|
||||
INT8 iChosenPants();
|
||||
|
||||
BOOLEAN bBigBodySelected();
|
||||
BOOLEAN bBadAssSelected();
|
||||
|
||||
#endif
|
||||
@@ -34,6 +34,10 @@
|
||||
#include "Animation Data.h"
|
||||
#include "random.h"
|
||||
#include "LaptopSave.h"
|
||||
// These 3 added - SANDRO
|
||||
#include "IMP Character Trait.h"
|
||||
#include "IMP Disability Trait.h"
|
||||
#include "IMP Color Choosing.h"
|
||||
#endif
|
||||
|
||||
// how many times should a 'die' be rolled for skills of the same type?
|
||||
@@ -176,16 +180,20 @@ void CreateACharacterFromPlayerEnteredStats( void )
|
||||
gMercProfiles[ LaptopSaveInfo.iIMPIndex ].bAttitude = ( INT8 )iAttitude;
|
||||
|
||||
// WDS: Advanced start
|
||||
gMercProfiles[ LaptopSaveInfo.iIMPIndex ].bExpLevel = gGameExternalOptions.ubIMPStartingLevel;
|
||||
//gMercProfiles[ LaptopSaveInfo.iIMPIndex ].bExpLevel = gGameExternalOptions.ubIMPStartingLevel;
|
||||
gMercProfiles[ LaptopSaveInfo.iIMPIndex ].bExpLevel = StartingLevelChosen(); // We now choose the starting level on IMP creation - SANDRO
|
||||
|
||||
// set time away
|
||||
gMercProfiles[ LaptopSaveInfo.iIMPIndex ].bMercStatus = 0;
|
||||
|
||||
|
||||
|
||||
// face
|
||||
SelectMercFace( );
|
||||
|
||||
// Option for badass added - SANDRO
|
||||
if (bBadAssSelected())
|
||||
gMercProfiles[ LaptopSaveInfo.iIMPIndex ].uiBodyTypeSubFlags = 1;
|
||||
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
@@ -251,8 +259,8 @@ BOOLEAN DoesCharacterHaveAPersoanlity( void )
|
||||
|
||||
void CreatePlayerAttitude( void )
|
||||
{
|
||||
|
||||
if(gGameSettings.fOptions[TOPTION_USE_RANDOM_PERSONALITY] == TRUE)
|
||||
// We no longer need this - SANDRO
|
||||
/*if(gGameSettings.fOptions[TOPTION_USE_RANDOM_PERSONALITY] == TRUE)
|
||||
{
|
||||
AddAnAttitudeToAttitudeList( ATT_OPTIMIST );
|
||||
AddAnAttitudeToAttitudeList( ATT_LONER );
|
||||
@@ -328,7 +336,10 @@ void CreatePlayerAttitude( void )
|
||||
else
|
||||
{
|
||||
iAttitude = gGameExternalOptions.iCustomAttitude;
|
||||
}
|
||||
}*/
|
||||
|
||||
// Chosen by ourselves - SANDRO
|
||||
iAttitude = iChosenCharacterTrait();
|
||||
}
|
||||
|
||||
|
||||
@@ -595,8 +606,8 @@ void CreatePlayerPersonality( void )
|
||||
{
|
||||
|
||||
// Kaiden: Added for optional Mercenary personalities and attitudes
|
||||
|
||||
if(gGameSettings.fOptions[TOPTION_USE_RANDOM_PERSONALITY] == TRUE)
|
||||
// We don't need this - SANDRO
|
||||
/*if(gGameSettings.fOptions[TOPTION_USE_RANDOM_PERSONALITY] == TRUE)
|
||||
{
|
||||
// Kaiden: More chances for Psycho and Normal.
|
||||
AddAPersonalityToPersonalityList( NO_PERSONALITYTRAIT );
|
||||
@@ -652,7 +663,12 @@ void CreatePlayerPersonality( void )
|
||||
else
|
||||
{
|
||||
iPersonality = gGameExternalOptions.iCustomPersonality;
|
||||
}
|
||||
}*/
|
||||
|
||||
// Chosen by ourselves - SANDRO
|
||||
iPersonality = iChosenDisabilityTrait();
|
||||
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
@@ -738,7 +754,8 @@ void SelectMercFace( void )
|
||||
|
||||
void SetMercSkinAndHairColors( void )
|
||||
{
|
||||
enum{ PINKSKIN, TANSKIN, DARKSKIN, BLACKSKIN, NUMSKINS };
|
||||
// We don't need this - SANDRO
|
||||
/*enum{ PINKSKIN, TANSKIN, DARKSKIN, BLACKSKIN, NUMSKINS };
|
||||
enum{ BROWNHEAD, BLACKHEAD, //black skin (only this line )
|
||||
WHITEHEAD, //dark skin (this line plus all above)
|
||||
BLONDHEAD, REDHEAD, //pink/tan skin (this line plus all above )
|
||||
@@ -770,7 +787,7 @@ void SetMercSkinAndHairColors( void )
|
||||
BEIGEPANTS,
|
||||
GREENPANTS,
|
||||
NUMPANTS
|
||||
};//pants
|
||||
};//pants*/
|
||||
|
||||
// skin strings
|
||||
STR sSkinStrings[]={
|
||||
@@ -815,8 +832,9 @@ void SetMercSkinAndHairColors( void )
|
||||
"GREENPANTS",
|
||||
};//pants
|
||||
|
||||
// We don't need this - SANDRO
|
||||
// given the portrait number, set the merc's skin and hair color
|
||||
INT16 sSkinColor = 0, sHairColor = 0, sShirtColor, sPantColor;
|
||||
/*INT16 sSkinColor = 0, sHairColor = 0, sShirtColor, sPantColor;
|
||||
|
||||
switch( iPortraitNumber )
|
||||
{
|
||||
@@ -922,8 +940,13 @@ void SetMercSkinAndHairColors( void )
|
||||
strcpy( gMercProfiles[ LaptopSaveInfo.iIMPIndex ].HAIR, sHairStrings[ sHairColor ] );
|
||||
strcpy( gMercProfiles[ LaptopSaveInfo.iIMPIndex ].SKIN, sSkinStrings[ sSkinColor ] );
|
||||
strcpy( gMercProfiles[ LaptopSaveInfo.iIMPIndex ].PANTS, sPantStrings[ sPantColor ] );
|
||||
strcpy( gMercProfiles[ LaptopSaveInfo.iIMPIndex ].VEST, sShirtStrings[ sShirtColor ] );
|
||||
strcpy( gMercProfiles[ LaptopSaveInfo.iIMPIndex ].VEST, sShirtStrings[ sShirtColor ] );*/
|
||||
|
||||
// Cosen colors by ourselves - SANDRO
|
||||
strcpy( gMercProfiles[ LaptopSaveInfo.iIMPIndex ].HAIR, sHairStrings[ iChosenHair() ] );
|
||||
strcpy( gMercProfiles[ LaptopSaveInfo.iIMPIndex ].SKIN, sSkinStrings[ iChosenSkin() ] );
|
||||
strcpy( gMercProfiles[ LaptopSaveInfo.iIMPIndex ].PANTS, sPantStrings[ iChosenPants() ] );
|
||||
strcpy( gMercProfiles[ LaptopSaveInfo.iIMPIndex ].VEST, sShirtStrings[ iChosenShirt() ] );
|
||||
}
|
||||
|
||||
|
||||
@@ -992,11 +1015,14 @@ BOOLEAN ShouldThisMercHaveABigBody( void )
|
||||
// Madd - don't limit it by portrait
|
||||
//if ( ( iPortraitNumber == 0 ) || ( iPortraitNumber == 6 ) || ( iPortraitNumber == 7 ) )
|
||||
//{
|
||||
if ( gMercProfiles[ LaptopSaveInfo.iIMPIndex ].bStrength >= 75 )
|
||||
{
|
||||
return( TRUE );
|
||||
}
|
||||
// if ( gMercProfiles[ LaptopSaveInfo.iIMPIndex ].bStrength >= 75 )
|
||||
// {
|
||||
// return( TRUE );
|
||||
// }
|
||||
//}
|
||||
|
||||
return( FALSE );
|
||||
//return( FALSE );
|
||||
|
||||
// We can now choose this ourselves - SANDRO
|
||||
return( bBigBodySelected() );
|
||||
}
|
||||
|
||||
@@ -0,0 +1,460 @@
|
||||
#ifdef PRECOMPILEDHEADERS
|
||||
#include "Laptop All.h"
|
||||
#include "IMP Disability Trait.h"
|
||||
#include "_Ja25Englishtext.h"
|
||||
#else
|
||||
#include "IMP Disability Trait.h"
|
||||
#include "Button System.h"
|
||||
#include "utilities.h"
|
||||
#include "Debug.h"
|
||||
#include "Text.h"
|
||||
#include "Font Control.h"
|
||||
#include "font.h"
|
||||
#include "laptop.h"
|
||||
#include "cursors.h"
|
||||
#include "IMP MainPage.h"
|
||||
#include "IMPVideoObjects.h"
|
||||
#include "_Ja25EnglishText.h"
|
||||
#include "wordwrap.h"
|
||||
#include "CharProfile.h"
|
||||
#include "soldier profile type.h"
|
||||
#include "IMP Compile Character.h"
|
||||
#include "GameSettings.h"
|
||||
#endif
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
//
|
||||
// Local Defines
|
||||
//
|
||||
//*******************************************************************
|
||||
|
||||
#define IMP_DISABILITY_TRAIT__TITLE_FONT FONT14ARIAL
|
||||
|
||||
#define IMP_DISABILITY_TRAIT__FONT FONT12ARIAL
|
||||
#define IMP_DISABILITY_TRAIT__COLOR FONT_MCOLOR_WHITE
|
||||
|
||||
enum
|
||||
{
|
||||
IMP_DISABILITY_TRAIT__TITLE_TEXT=IMP_DISABILITIES_NUMBER,
|
||||
};
|
||||
|
||||
|
||||
|
||||
#define IMP_DISABILITY_COLUMN_START_X ( LAPTOP_SCREEN_UL_X + 136 )
|
||||
#define IMP_DISABILITY_COLUMN_START_Y ( LAPTOP_SCREEN_WEB_UL_Y + 40 )
|
||||
|
||||
#define IMP_DISABILITY_TRAIT__SPACE_BTN_BUTTONS 38
|
||||
|
||||
#define IMP_DISABILITY_TRAIT__TEXT_OFFSET_X 65
|
||||
#define IMP_DISABILITY_TRAIT__TEXT_OFFSET_Y 12
|
||||
|
||||
#define IMP_DISABILITY_TRAIT__TITLE_X LAPTOP_SCREEN_UL_X - 111
|
||||
#define IMP_DISABILITY_TRAIT__TITLE_Y iScreenHeightOffset + 53
|
||||
#define IMP_DISABILITY_TRAIT__TITLE_WIDTH ( LAPTOP_SCREEN_LR_X - LAPTOP_SCREEN_UL_X )
|
||||
|
||||
#define IMP_DISABILITY_TRAIT__GREY_BOX_OFFSET_X 5
|
||||
#define IMP_DISABILITY_TRAIT__GREY_BOX_OFFSET_Y 7
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
//
|
||||
// Global Variables
|
||||
//
|
||||
//*******************************************************************
|
||||
|
||||
BOOLEAN gfIST_Redraw3=FALSE;
|
||||
|
||||
BOOLEAN gfDisabilityTraitQuestions[ IMP_DISABILITIES_NUMBER ];
|
||||
|
||||
// these are the buttons for the questions
|
||||
INT32 giIMPDisabilityTraitAnswerButton[ IMP_DISABILITIES_NUMBER ];
|
||||
INT32 giIMPDisabilityTraitAnswerButtonImage[ IMP_DISABILITIES_NUMBER ];
|
||||
|
||||
// this is the Done buttons
|
||||
INT32 giIMPDisabilityTraitFinsihButton;
|
||||
INT32 giIMPDisabilityTraitFinsihButtonImage;
|
||||
|
||||
//image handle
|
||||
UINT32 guiIST_GreyGoldBox3;
|
||||
|
||||
//*******************************************************************
|
||||
//
|
||||
// Function Prototypes
|
||||
//
|
||||
//*******************************************************************
|
||||
|
||||
void BtnIMPDisabilityTraitAnswerCallback(GUI_BUTTON *btn,INT32 reason);
|
||||
void BtnIMPDisabilityTraitFinishCallback(GUI_BUTTON *btn,INT32 reason);
|
||||
void AddImpDisabilityTraitButtons();
|
||||
void HandleDisabilityTraitButtonStates( );
|
||||
void HandleIMPDisabilityTraitAnswers( UINT32 uiSkillPressed );
|
||||
void IMPDisabilityTraitDisplayDisabilityTraits();
|
||||
|
||||
BOOLEAN CameBackToDisabilityTraitPageButNotFinished();
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
//
|
||||
// Functions
|
||||
//
|
||||
//*******************************************************************
|
||||
|
||||
|
||||
|
||||
void EnterIMPDisabilityTrait( void )
|
||||
{
|
||||
|
||||
VOBJECT_DESC VObjectDesc;
|
||||
|
||||
//add the disability trait buttons
|
||||
AddImpDisabilityTraitButtons();
|
||||
|
||||
// load the stats graphic and add it
|
||||
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
||||
FilenameForBPP("LAPTOP\\SkillTraitSmallGreyIdent.sti", VObjectDesc.ImageFile);
|
||||
if( !AddVideoObject(&VObjectDesc, &guiIST_GreyGoldBox3 ) )
|
||||
{
|
||||
Assert( 0 );
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
giIMPDisabilityTraitFinsihButtonImage = LoadButtonImage( "LAPTOP\\button_5.sti" ,-1,0,-1,1,-1 );
|
||||
giIMPDisabilityTraitFinsihButton = CreateIconAndTextButton( giIMPDisabilityTraitFinsihButtonImage, pImpButtonText[ 24 ], FONT12ARIAL,
|
||||
FONT_WHITE, DEFAULT_SHADOW,
|
||||
FONT_WHITE, DEFAULT_SHADOW,
|
||||
TEXT_CJUSTIFIED,
|
||||
LAPTOP_SCREEN_UL_X + ( 350 ), LAPTOP_SCREEN_WEB_UL_Y + ( 340 ), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
||||
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPDisabilityTraitFinishCallback );
|
||||
|
||||
|
||||
|
||||
SetButtonCursor( giIMPDisabilityTraitFinsihButton, CURSOR_WWW);
|
||||
|
||||
//if we are not DONE and are just reviewing
|
||||
if( iCurrentProfileMode != IMP__FINISH )
|
||||
{
|
||||
//Have the NONE trait initially selected
|
||||
gfDisabilityTraitQuestions[ IMP_NO_DISABILITY ] = TRUE;
|
||||
}
|
||||
|
||||
HandleDisabilityTraitButtonStates( );
|
||||
|
||||
}
|
||||
|
||||
|
||||
void RenderIMPDisabilityTrait( void )
|
||||
{
|
||||
//render the metal background graphic
|
||||
RenderProfileBackGround();
|
||||
|
||||
// Display title
|
||||
DrawTextToScreen( gzIMPDisabilityTraitText[IMP_DISABILITIES_NUMBER], LAPTOP_SCREEN_UL_X - 111, iScreenHeightOffset + 53, ( LAPTOP_SCREEN_LR_X - LAPTOP_SCREEN_UL_X ), FONT14ARIAL, FONT_MCOLOR_WHITE, FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
||||
|
||||
IMPDisabilityTraitDisplayDisabilityTraits();
|
||||
}
|
||||
|
||||
|
||||
void ExitIMPDisabilityTrait( void )
|
||||
{
|
||||
INT32 iCnt;
|
||||
|
||||
DeleteVideoObjectFromIndex( guiIST_GreyGoldBox3 );
|
||||
|
||||
//remove the skill buttons
|
||||
for(iCnt = 0; iCnt < IMP_DISABILITIES_NUMBER; iCnt++)
|
||||
{
|
||||
//if there is a button allocated
|
||||
if( giIMPDisabilityTraitAnswerButton[iCnt] != -1 )
|
||||
{
|
||||
RemoveButton(giIMPDisabilityTraitAnswerButton[ iCnt ] );
|
||||
UnloadButtonImage(giIMPDisabilityTraitAnswerButtonImage[ iCnt ] );
|
||||
}
|
||||
}
|
||||
|
||||
RemoveButton( giIMPDisabilityTraitFinsihButton );
|
||||
UnloadButtonImage( giIMPDisabilityTraitFinsihButtonImage );
|
||||
}
|
||||
|
||||
|
||||
void HandleIMPDisabilityTrait( void )
|
||||
{
|
||||
if( gfIST_Redraw3 )
|
||||
{
|
||||
RenderIMPDisabilityTrait( );
|
||||
gfIST_Redraw3 = FALSE;
|
||||
}
|
||||
|
||||
InvalidateRegion(LAPTOP_SCREEN_UL_X,LAPTOP_SCREEN_WEB_UL_Y,LAPTOP_SCREEN_LR_X,LAPTOP_SCREEN_WEB_LR_Y);
|
||||
}
|
||||
|
||||
void AddImpDisabilityTraitButtons()
|
||||
{
|
||||
INT32 iCnt = 0;
|
||||
UINT16 usPosX, usPosY;
|
||||
|
||||
usPosX = IMP_DISABILITY_COLUMN_START_X;
|
||||
usPosY = IMP_DISABILITY_COLUMN_START_Y;
|
||||
|
||||
for(iCnt = 0; iCnt < IMP_DISABILITIES_NUMBER; iCnt++)
|
||||
{
|
||||
//reset
|
||||
giIMPDisabilityTraitAnswerButton[iCnt] = -1;
|
||||
|
||||
//if we are not DONE and are just reviewing
|
||||
if( iCurrentProfileMode != IMP__FINISH )
|
||||
{
|
||||
gfDisabilityTraitQuestions[ iCnt ] = FALSE;
|
||||
}
|
||||
|
||||
if( iCnt == 0 )
|
||||
giIMPDisabilityTraitAnswerButtonImage[ iCnt ] = LoadButtonImage( "LAPTOP\\button_6.sti", -1,0,-1,1,-1 );
|
||||
else
|
||||
giIMPDisabilityTraitAnswerButtonImage[ iCnt ] = UseLoadedButtonImage( giIMPDisabilityTraitAnswerButtonImage[ 0 ], -1,0,-1,1,-1 );
|
||||
|
||||
giIMPDisabilityTraitAnswerButton[iCnt] = QuickCreateButton( giIMPDisabilityTraitAnswerButtonImage[ iCnt ], usPosX, usPosY,
|
||||
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 3,
|
||||
MSYS_NO_CALLBACK, (GUI_CALLBACK)BtnIMPDisabilityTraitAnswerCallback);
|
||||
|
||||
//Set the button data
|
||||
MSYS_SetBtnUserData( giIMPDisabilityTraitAnswerButton[iCnt], 0, iCnt );
|
||||
SetButtonCursor( giIMPDisabilityTraitAnswerButton[iCnt], CURSOR_WWW);
|
||||
|
||||
//Get rid of playing the button sound, it will be handled here
|
||||
//ButtonList[ giIMPDisabilityTraitAnswerButton[ iCnt ] ]->ubSoundSchemeID = 0;
|
||||
|
||||
//Determine the next x location
|
||||
//if( iCnt < IMP_DISABILITY_TRAIT_NUMBER_TO_START_2ND_COLUMN )
|
||||
usPosX = IMP_DISABILITY_COLUMN_START_X;
|
||||
//else
|
||||
// usPosX = IMP_DISABILITY_2ND_COLUMN_START_X;
|
||||
|
||||
//Determine the next Y location
|
||||
//if( iCnt == IMP_DISABILITY_TRAIT_NUMBER_TO_START_2ND_COLUMN )
|
||||
// usPosY = IMP_DISABILITY_2ND_COLUMN_START_Y;
|
||||
//else
|
||||
usPosY += IMP_DISABILITY_TRAIT__SPACE_BTN_BUTTONS;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void BtnIMPDisabilityTraitAnswerCallback(GUI_BUTTON *btn,INT32 reason)
|
||||
{
|
||||
|
||||
if (!(btn->uiFlags & BUTTON_ENABLED))
|
||||
return;
|
||||
|
||||
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
||||
{
|
||||
// btn->uiFlags|=(BUTTON_CLICKED_ON);
|
||||
|
||||
INT32 iDisabilityTrait = MSYS_GetBtnUserData( btn, 0 );
|
||||
|
||||
HandleIMPDisabilityTraitAnswers( iDisabilityTrait );
|
||||
}
|
||||
}
|
||||
|
||||
void HandleIMPDisabilityTraitAnswers( UINT32 uiSkillPressed )
|
||||
{
|
||||
UINT32 uiCnt;
|
||||
|
||||
//if we are DONE and are just reviewing
|
||||
if( iCurrentProfileMode == IMP__FINISH )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//reset all other buttons
|
||||
for( uiCnt=0; uiCnt<IMP_DISABILITIES_NUMBER; uiCnt++ )
|
||||
{
|
||||
gfDisabilityTraitQuestions[ uiCnt ] = FALSE;
|
||||
}
|
||||
|
||||
//make sure its a valid disability trait
|
||||
if( uiSkillPressed > IMP_DISABILITIES_NUMBER )
|
||||
{
|
||||
Assert( 0 );
|
||||
return;
|
||||
}
|
||||
|
||||
//if its allready set
|
||||
if( gfDisabilityTraitQuestions[ uiSkillPressed ] )
|
||||
{
|
||||
//dont need to do anything
|
||||
return;
|
||||
}
|
||||
|
||||
//Set the skill
|
||||
gfDisabilityTraitQuestions[ uiSkillPressed ] = TRUE;
|
||||
|
||||
//Play the button sound
|
||||
if( gfDisabilityTraitQuestions[ uiSkillPressed ] )
|
||||
{
|
||||
PlayButtonSound( giIMPDisabilityTraitAnswerButton[ uiSkillPressed ], BUTTON_SOUND_CLICKED_ON );
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayButtonSound( giIMPDisabilityTraitAnswerButton[ uiSkillPressed ], BUTTON_SOUND_CLICKED_OFF );
|
||||
}
|
||||
|
||||
//update buttons
|
||||
HandleDisabilityTraitButtonStates( );
|
||||
|
||||
//redraw the screen
|
||||
gfIST_Redraw3 = TRUE;
|
||||
}
|
||||
|
||||
void HandleDisabilityTraitButtonStates( )
|
||||
{
|
||||
UINT32 uiCnt;
|
||||
|
||||
for( uiCnt=0; uiCnt<IMP_DISABILITIES_NUMBER; uiCnt++ )
|
||||
{
|
||||
|
||||
//if the skill is selected ( ie depressed )
|
||||
if( gfDisabilityTraitQuestions[ uiCnt ] )
|
||||
{
|
||||
ButtonList[ giIMPDisabilityTraitAnswerButton[ uiCnt ] ]->uiFlags |= BUTTON_CLICKED_ON;
|
||||
}
|
||||
else
|
||||
{
|
||||
ButtonList[ giIMPDisabilityTraitAnswerButton[ uiCnt ] ]->uiFlags &= ~BUTTON_CLICKED_ON;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void IMPDisabilityTraitDisplayDisabilityTraits()
|
||||
{
|
||||
UINT32 uiCnt;
|
||||
UINT16 usPosX, usPosY;
|
||||
UINT16 usBoxPosX, usBoxPosY;
|
||||
HVOBJECT hImageHandle;
|
||||
|
||||
|
||||
//Display the title
|
||||
//DrawTextToScreen( gzIMPSkillTraitsText[ IMP_DISABILITY_TRAIT__TITLE_TEXT ], IMP_DISABILITY_TRAIT__TITLE_X, IMP_DISABILITY_TRAIT__TITLE_Y, IMP_DISABILITY_TRAIT__TITLE_WIDTH, IMP_DISABILITY_TRAIT__TITLE_FONT, IMP_DISABILITY_TRAIT__COLOR, FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
||||
|
||||
// Stats
|
||||
GetVideoObject(&hImageHandle, guiIST_GreyGoldBox3 );
|
||||
|
||||
usPosX = IMP_DISABILITY_COLUMN_START_X + IMP_DISABILITY_TRAIT__TEXT_OFFSET_X;
|
||||
usPosY = IMP_DISABILITY_COLUMN_START_Y + IMP_DISABILITY_TRAIT__TEXT_OFFSET_Y;
|
||||
|
||||
for( uiCnt=0; uiCnt<IMP_DISABILITIES_NUMBER; uiCnt++ )
|
||||
{
|
||||
usBoxPosX = usPosX - IMP_DISABILITY_TRAIT__GREY_BOX_OFFSET_X;
|
||||
usBoxPosY = usPosY - IMP_DISABILITY_TRAIT__GREY_BOX_OFFSET_Y;
|
||||
|
||||
//if the trait is selected
|
||||
if( gfDisabilityTraitQuestions[ uiCnt ] )
|
||||
{
|
||||
//Display the gold background box
|
||||
BltVideoObject(FRAME_BUFFER, hImageHandle, 1, usBoxPosX, usBoxPosY, VO_BLT_SRCTRANSPARENCY,NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Display the grey background box
|
||||
BltVideoObject(FRAME_BUFFER, hImageHandle, 0,usBoxPosX, usBoxPosY, VO_BLT_SRCTRANSPARENCY,NULL);
|
||||
}
|
||||
|
||||
//draw the text to the screenx
|
||||
DrawTextToScreen( gzIMPDisabilityTraitText[ uiCnt ], usPosX, usPosY, 0, IMP_DISABILITY_TRAIT__FONT, IMP_DISABILITY_TRAIT__COLOR, FONT_MCOLOR_BLACK, FALSE, LEFT_JUSTIFIED );
|
||||
|
||||
//Determine the next x location
|
||||
// if( uiCnt < IMP_DISABILITY_TRAIT_NUMBER_TO_START_2ND_COLUMN )
|
||||
usPosX = IMP_DISABILITY_COLUMN_START_X + IMP_DISABILITY_TRAIT__TEXT_OFFSET_X;
|
||||
//else
|
||||
// usPosX = IMP_DISABILITY_2ND_COLUMN_START_X + IMP_DISABILITY_TRAIT__TEXT_OFFSET_X;
|
||||
|
||||
//Determine the next Y location
|
||||
//if( uiCnt == IMP_DISABILITY_TRAIT_NUMBER_TO_START_2ND_COLUMN )
|
||||
// usPosY = IMP_DISABILITY_2ND_COLUMN_START_Y + IMP_DISABILITY_TRAIT__TEXT_OFFSET_Y;
|
||||
//else
|
||||
usPosY += IMP_DISABILITY_TRAIT__SPACE_BTN_BUTTONS;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void BtnIMPDisabilityTraitFinishCallback(GUI_BUTTON *btn,INT32 reason)
|
||||
{
|
||||
|
||||
if (!(btn->uiFlags & BUTTON_ENABLED))
|
||||
return;
|
||||
|
||||
if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
||||
{
|
||||
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
||||
|
||||
//if we are just reviewing the page
|
||||
if( iCurrentProfileMode == IMP__FINISH )
|
||||
{
|
||||
//go back tot he done screen
|
||||
iCurrentImpPage = IMP_FINISH;
|
||||
}
|
||||
else
|
||||
{
|
||||
iCurrentImpPage = IMP_MAIN_PAGE;
|
||||
|
||||
if( CameBackToDisabilityTraitPageButNotFinished() )
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( iCurrentProfileMode != IMP__FINISH )
|
||||
iCurrentProfileMode = IMP__PERSONALITY;
|
||||
else
|
||||
iCurrentProfileMode = IMP__FINISH;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BOOLEAN CameBackToDisabilityTraitPageButNotFinished()
|
||||
{
|
||||
//if we are in a page that comes after this one
|
||||
if( iCurrentProfileMode == IMP__ATTRIBUTES || iCurrentProfileMode == IMP__PERSONALITY )
|
||||
{
|
||||
return( TRUE );
|
||||
}
|
||||
else
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
}
|
||||
|
||||
INT8 iChosenDisabilityTrait()
|
||||
{
|
||||
UINT32 uiCnt;
|
||||
INT8 iDisabilityTraitNumber = 0;
|
||||
|
||||
//loop through all the buttons and reset them
|
||||
for( uiCnt=0; uiCnt<IMP_DISABILITIES_NUMBER; uiCnt++ )
|
||||
{
|
||||
//if the trait is selected
|
||||
if( gfDisabilityTraitQuestions[ uiCnt ] )
|
||||
{
|
||||
iDisabilityTraitNumber = uiCnt;
|
||||
}
|
||||
}
|
||||
return( iDisabilityTraitNumber );
|
||||
}
|
||||
|
||||
INT8 iPlayersAttributePointsBonusForDisabilitySelected()
|
||||
{
|
||||
INT8 bExtraAttributePoints = 0;
|
||||
|
||||
//if there is any disability selected, give a bonus to attributes (counted there)
|
||||
if( ( iChosenDisabilityTrait() > 0 ) && ( iChosenDisabilityTrait() <= IMP_DISABILITIES_NUMBER ) )
|
||||
{
|
||||
bExtraAttributePoints = gGameExternalOptions.iBonusPointsForDisability;
|
||||
}
|
||||
else
|
||||
{
|
||||
bExtraAttributePoints = 0;
|
||||
}
|
||||
|
||||
return( bExtraAttributePoints );
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
#ifndef __IMP_DISABILITY_TRAIT__H_
|
||||
#define __IMP_DISABILITY_TRAIT__H_
|
||||
|
||||
#include "Types.h"
|
||||
|
||||
void EnterIMPDisabilityTrait( void );
|
||||
void RenderIMPDisabilityTrait( void );
|
||||
void ExitIMPDisabilityTrait( void );
|
||||
void HandleIMPDisabilityTrait( void );
|
||||
|
||||
//enum
|
||||
//{
|
||||
typedef enum
|
||||
{
|
||||
IMP_NO_DISABILITY = 0,
|
||||
IMP_DISABILITY_HEAT_INTOLERANT,
|
||||
IMP_DISABILITY_NERVOUS,
|
||||
IMP_DISABILITY_CLAUSTROPHOBIC,
|
||||
IMP_DISABILITY_NONSWIMMER,
|
||||
IMP_DISABILITY_FEAR_OF_INSECTS,
|
||||
IMP_DISABILITY_FORGETFUL,
|
||||
IMP_DISABILITY_PSYCHO,
|
||||
IMP_DISABILITIES_NUMBER,
|
||||
};
|
||||
|
||||
INT8 iChosenDisabilityTrait();
|
||||
INT8 iPlayersAttributePointsBonusForDisabilitySelected();
|
||||
|
||||
STR16 gzIMPDisabilityText[];
|
||||
|
||||
#endif
|
||||
@@ -215,7 +215,9 @@ void CreateIMPFinishButtons( void )
|
||||
SpecifyButtonIcon( giIMPFinishButton[ 4 ], guiCHARACTERPORTRAIT, 0,
|
||||
33, 23, FALSE );
|
||||
|
||||
swprintf( sString, pImpButtonText[ 5 ], GetVoiceCountFromVoiceSlot(iCurrentVoice));
|
||||
// Canged to display "Character" - SANDRO
|
||||
//swprintf( sString, pImpButtonText[ 5 ], GetVoiceCountFromVoiceSlot(iCurrentVoice));
|
||||
swprintf( sString, pImpButtonText[ 25 ]);
|
||||
|
||||
// the voice button
|
||||
giIMPFinishButtonImage[5]= LoadButtonImage( "LAPTOP\\button_8.sti" ,-1,0,-1,1,-1 );
|
||||
|
||||
+12
-9
@@ -464,14 +464,15 @@ void CreateIMPMainPageButtons( void )
|
||||
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPMainPageVoiceCallback);
|
||||
*/
|
||||
|
||||
if( iCurrentProfileMode != IMP__VOICE && iCurrentProfileMode != IMP__PORTRAIT )
|
||||
{
|
||||
swprintf( sString, pImpButtonText[ 5 ], GetVoiceCountFromVoiceSlot(iCurrentVoice) );
|
||||
}
|
||||
else
|
||||
{
|
||||
swprintf( sString, pImpButtonText[ 25 ] );
|
||||
}
|
||||
// Changed to display "Character" instead of "Voice" - SANDRO
|
||||
//if( iCurrentProfileMode != IMP__VOICE && iCurrentProfileMode != IMP__PORTRAIT )
|
||||
//{
|
||||
// swprintf( sString, pImpButtonText[ 5 ], GetVoiceCountFromVoiceSlot(iCurrentVoice) );
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
swprintf( sString, pImpButtonText[ 25 ] ); // "Character"
|
||||
//}
|
||||
|
||||
//Voice
|
||||
giIMPMainPageButton[5] = CreateIconAndTextButton( giIMPMainPageButtonImage[ 5 ], sString, FONT12ARIAL,
|
||||
@@ -740,7 +741,9 @@ void BtnIMPMainPageVoiceCallback(GUI_BUTTON *btn,INT32 reason)
|
||||
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
||||
{
|
||||
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
||||
iCurrentImpPage = IMP_VOICE;
|
||||
// changed to go to character analysis - SANDRO
|
||||
iCurrentImpPage = IMP_CHARACTER_AND_DISABILITY_ENTRANCE;
|
||||
//iCurrentImpPage = IMP_VOICE;
|
||||
fButtonPendingFlag = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -227,7 +227,7 @@ void CreateIMPPortraitButtons( void )
|
||||
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
||||
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPPortraitDoneCallback );
|
||||
*/
|
||||
giIMPPortraitButton[ 2 ] = CreateIconAndTextButton( giIMPPortraitButtonImage[ 2 ], pImpButtonText[ 11 ], FONT12ARIAL,
|
||||
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,
|
||||
@@ -331,8 +331,13 @@ void BtnIMPPortraitDoneCallback(GUI_BUTTON *btn,INT32 reason)
|
||||
{
|
||||
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;
|
||||
//iCurrentImpPage = IMP_MAIN_PAGE;
|
||||
/*
|
||||
// current mode now is voice
|
||||
if( iCurrentProfileMode < IMP__VOICE )
|
||||
@@ -341,7 +346,7 @@ void BtnIMPPortraitDoneCallback(GUI_BUTTON *btn,INT32 reason)
|
||||
}
|
||||
*/
|
||||
// if we are already done, leave
|
||||
if( iCurrentProfileMode == IMP__FINISH )
|
||||
/* if( iCurrentProfileMode == IMP__FINISH )
|
||||
{
|
||||
iCurrentImpPage = IMP_FINISH;
|
||||
}
|
||||
@@ -356,7 +361,7 @@ void BtnIMPPortraitDoneCallback(GUI_BUTTON *btn,INT32 reason)
|
||||
{
|
||||
iCurrentProfileMode = IMP__VOICE;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
// grab picture number
|
||||
if( fCharacterIsMale )
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
#include "CharProfile.h"
|
||||
#include "soldier profile type.h"
|
||||
#include "IMP Compile Character.h"
|
||||
#include "GameSettings.h" // added by SANDRO
|
||||
#include "IMP Color Choosing.h" // added by SANDRO
|
||||
#endif
|
||||
|
||||
|
||||
@@ -84,8 +86,6 @@ INT32 giIMPSkillTraitAnswerButtonImage[ IMP_SKILL_TRAITS__NUMBER_SKILLS ];
|
||||
INT32 giIMPSkillTraitFinsihButton;
|
||||
INT32 giIMPSkillTraitFinsihButtonImage;
|
||||
|
||||
|
||||
|
||||
//BOOLEAN gfSkillTraitButtonChanged=FALSE;
|
||||
|
||||
#define IST__NUM_SELECTABLE_TRAITS 2
|
||||
@@ -256,7 +256,7 @@ void AddImpSkillTraitButtons()
|
||||
SetButtonCursor( giIMPSkillTraitAnswerButton[iCnt], CURSOR_WWW);
|
||||
|
||||
//Get rid of playing the button sound, it will be handled here
|
||||
ButtonList[ giIMPSkillTraitAnswerButton[ iCnt ] ]->ubSoundSchemeID = 0;
|
||||
//ButtonList[ giIMPSkillTraitAnswerButton[ iCnt ] ]->ubSoundSchemeID = 0; // - This would disable the sounds totally resulted to play no sound - SANDRO
|
||||
|
||||
//Determine the next x location
|
||||
if( iCnt < IMP_SKILL_TRAIT__SKILL_TRAIT_TO_START_RIGHT_COL )
|
||||
@@ -569,7 +569,8 @@ INT8 DoesPlayerHaveExtraAttibutePointsToDistributeBasedOnSkillSelection()
|
||||
//if there NONE selected
|
||||
if( bNumSkills == 0 )
|
||||
{
|
||||
bExtraPoints = 10;
|
||||
// Externilized bonus for not taking skills - SANDRO
|
||||
bExtraPoints = 2 * (gGameExternalOptions.iBonusPointsPerSkillNotTaken);
|
||||
}
|
||||
|
||||
//if there is 1 trait selected
|
||||
@@ -577,10 +578,11 @@ INT8 DoesPlayerHaveExtraAttibutePointsToDistributeBasedOnSkillSelection()
|
||||
{
|
||||
//if the trait is not the ones you cant be expert in )
|
||||
if( gfSkillTraitQuestions[ IMP_SKILL_TRAITS__ELECTRONICS ] ||
|
||||
gfSkillTraitQuestions[ IMP_SKILL_TRAITS__AMBIDEXTROUS ] ||
|
||||
gfSkillTraitQuestions[ IMP_SKILL_TRAITS__CAMO ] )
|
||||
gfSkillTraitQuestions[ IMP_SKILL_TRAITS__AMBIDEXTROUS ] ) // Actually camo skill can be achived at expert level, although it does nothing now - SANDRO
|
||||
// || gfSkillTraitQuestions[ IMP_SKILL_TRAITS__CAMO ] )
|
||||
{
|
||||
bExtraPoints = 5;
|
||||
// Externilized bonus for not taking skills - SANDRO
|
||||
bExtraPoints = gGameExternalOptions.iBonusPointsPerSkillNotTaken;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -601,7 +603,8 @@ INT8 DoesPlayerHaveExtraAttibutePointsToDistributeBasedOnSkillSelection()
|
||||
|
||||
BOOLEAN ShouldTraitBeSkipped( UINT32 uiTrait )
|
||||
{
|
||||
if( uiTrait == IMP_SKILL_TRAITS__MARTIAL_ARTS && !fCharacterIsMale )
|
||||
// added a check to not offer martial arts to big mercs - SANDRO
|
||||
if( uiTrait == IMP_SKILL_TRAITS__MARTIAL_ARTS && (!fCharacterIsMale || bBigBodySelected()) )
|
||||
return( TRUE );
|
||||
else
|
||||
return( FALSE );
|
||||
|
||||
@@ -180,8 +180,14 @@ void PrintImpText( void )
|
||||
|
||||
break;
|
||||
case ( IMP_PERSONALITY ):
|
||||
LoadAndDisplayIMPText( LAPTOP_SCREEN_UL_X + 130, LAPTOP_SCREEN_WEB_UL_Y + 60, ( 456 - 200 ), IMP_PERS_1, FONT12ARIAL, FONT_WHITE, TRUE, CENTER_JUSTIFIED);
|
||||
LoadAndDisplayIMPText( LAPTOP_SCREEN_UL_X + 130, LAPTOP_SCREEN_WEB_UL_Y + 130, ( 456 - 200 ), IMP_PERS_2, FONT12ARIAL, FONT_WHITE, TRUE, CENTER_JUSTIFIED);
|
||||
// SANDRO - I HAVE CHANGED THESE TO BE ABLE TO EDIT THE TEXTS BEFORE SKILL TRAITS (THE TEXTS ARE ABOVE HERE)
|
||||
// EVEN IF IT IS A LITTLE STUPID WAY, I HAVEN'T FOUND A WAY HOW TO EDIT IMPtext.edt..
|
||||
// THE TEXTS OF "pSkillTraitBeginIMPStrings" ARE IN "_EnglishText.cpp" at the end
|
||||
//LoadAndDisplayIMPText( LAPTOP_SCREEN_UL_X + 130, LAPTOP_SCREEN_WEB_UL_Y + 60, ( 456 - 200 ), IMP_PERS_1, FONT12ARIAL, FONT_WHITE, TRUE, CENTER_JUSTIFIED);
|
||||
//LoadAndDisplayIMPText( LAPTOP_SCREEN_UL_X + 130, LAPTOP_SCREEN_WEB_UL_Y + 130, ( 456 - 200 ), IMP_PERS_2, FONT12ARIAL, FONT_WHITE, TRUE, CENTER_JUSTIFIED);
|
||||
DisplayWrappedString( LAPTOP_SCREEN_UL_X + 130, LAPTOP_SCREEN_WEB_UL_Y + 57, ( 456 - 200 ), 2, FONT12ARIAL, FONT_WHITE, pSkillTraitBeginIMPStrings[ 0 ],FONT_BLACK,FALSE,CENTER_JUSTIFIED);
|
||||
DisplayWrappedString( LAPTOP_SCREEN_UL_X + 130, LAPTOP_SCREEN_WEB_UL_Y + 150, ( 456 - 200 ), 2, FONT12ARIAL, FONT_WHITE, pSkillTraitBeginIMPStrings[ 1 ],FONT_BLACK,FALSE,CENTER_JUSTIFIED);
|
||||
|
||||
LoadAndDisplayIMPText( LAPTOP_SCREEN_UL_X - 111, LAPTOP_SCREEN_WEB_UL_Y + 7, sWidth, IMP_PERS_6, FONT14ARIAL, FONT_WHITE, TRUE, CENTER_JUSTIFIED );
|
||||
|
||||
|
||||
@@ -220,8 +226,9 @@ void PrintImpText( void )
|
||||
case( IMP_ATTRIBUTE_PAGE ):
|
||||
LoadAndDisplayIMPText( LAPTOP_SCREEN_UL_X - 111, LAPTOP_SCREEN_WEB_UL_Y + 7, sWidth, IMP_ATTRIB_1 - 1, FONT14ARIAL, FONT_WHITE, TRUE, CENTER_JUSTIFIED);
|
||||
|
||||
// Moved this to "IMP Attribute Selection.cpp" - SANDRO
|
||||
// don't blit bonus if reviewing
|
||||
if( fReviewStats != TRUE )
|
||||
/*if( fReviewStats != TRUE )
|
||||
{
|
||||
LoadAndDisplayIMPText( LAPTOP_SCREEN_UL_X + 355, LAPTOP_SCREEN_WEB_UL_Y + 51, ( 640 ), IMP_ATTRIB_SA_2 - 1, FONT12ARIAL, FONT_WHITE, TRUE, 0);
|
||||
LoadAndDisplayIMPText( LAPTOP_SCREEN_UL_X + 56, LAPTOP_SCREEN_WEB_UL_Y + 33, ( 240 ), IMP_ATTRIB_SA_15, FONT10ARIAL, FONT_WHITE, TRUE, 0);
|
||||
@@ -229,7 +236,7 @@ void PrintImpText( void )
|
||||
else
|
||||
{
|
||||
LoadAndDisplayIMPText( LAPTOP_SCREEN_UL_X + 56, LAPTOP_SCREEN_WEB_UL_Y + 33, ( 240 ), IMP_ATTRIB_SA_18, FONT10ARIAL, FONT_WHITE, TRUE, 0);
|
||||
}
|
||||
}*/
|
||||
// stats
|
||||
// health
|
||||
LoadAndDisplayIMPText( LAPTOP_SCREEN_UL_X + 60, LAPTOP_SCREEN_WEB_UL_Y + SKILL_SLIDE_START_Y + 0 * SKILL_SLIDE_HEIGHT, ( 100 ), IMP_ATTRIB_SA_6 - 1, FONT12ARIAL, FONT_WHITE, TRUE, RIGHT_JUSTIFIED);
|
||||
|
||||
@@ -15,6 +15,7 @@ extern STR16 pImpButtonText[];
|
||||
// extra strings not found in IMP Text Document
|
||||
extern STR16 pExtraIMPStrings[];
|
||||
|
||||
extern STR16 pSkillTraitBeginIMPStrings[]; // added - SANDRO
|
||||
|
||||
enum{
|
||||
IMP_HOME_1,
|
||||
|
||||
@@ -251,7 +251,7 @@ void CreateIMPVoicesButtons( void )
|
||||
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1,
|
||||
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPVoicesDoneCallback );
|
||||
*/
|
||||
giIMPVoicesButton[ 2 ] = CreateIconAndTextButton( giIMPVoicesButtonImage[ 2 ], pImpButtonText[ 11 ], FONT12ARIAL,
|
||||
giIMPVoicesButton[ 2 ] = CreateIconAndTextButton( giIMPVoicesButtonImage[ 2 ], pImpButtonText[ 13 ], FONT12ARIAL, // changed text on button to [13]("Next") - SANDRO
|
||||
FONT_WHITE, DEFAULT_SHADOW,
|
||||
FONT_WHITE, DEFAULT_SHADOW,
|
||||
TEXT_CJUSTIFIED,
|
||||
@@ -377,8 +377,12 @@ void BtnIMPVoicesDoneCallback(GUI_BUTTON *btn,INT32 reason)
|
||||
{
|
||||
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
||||
|
||||
// Changed to continue to color choosing - SANDRO
|
||||
iCurrentImpPage = IMP_COLOR_CHOICE_PAGE;
|
||||
// Following part removed
|
||||
|
||||
// go to main page
|
||||
iCurrentImpPage = IMP_MAIN_PAGE;
|
||||
/*iCurrentImpPage = IMP_MAIN_PAGE;
|
||||
|
||||
// if we are already done, leave
|
||||
if( iCurrentProfileMode == IMP__FINISH )
|
||||
@@ -395,7 +399,7 @@ void BtnIMPVoicesDoneCallback(GUI_BUTTON *btn,INT32 reason)
|
||||
{
|
||||
iCurrentProfileMode = IMP__PERSONALITY;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
/*
|
||||
// current mode now is voice
|
||||
else if( iCurrentProfileMode < IMP__PORTRAIT )
|
||||
|
||||
@@ -56,7 +56,9 @@ UINT32 guiA2INDENT;
|
||||
UINT32 guiAVGMERCINDENT;
|
||||
UINT32 guiABOUTUSINDENT;
|
||||
UINT32 guiSHORT2HINDENT;
|
||||
|
||||
// These 2 added - SANDRO
|
||||
UINT32 guiASTARTLEVEL;
|
||||
UINT32 guiCOLORCHOICEFRAME;
|
||||
|
||||
// position defines
|
||||
#define CHAR_PROFILE_BACKGROUND_TILE_WIDTH 125
|
||||
@@ -1417,8 +1419,81 @@ void RenderQtnShort2IndentHighFrame(INT16 sX, INT16 sY)
|
||||
return;
|
||||
}
|
||||
|
||||
// Following procedures added - SANDRO
|
||||
BOOLEAN LoadAttribStartingLevelFrame( void )
|
||||
{
|
||||
|
||||
// this procedure will load the activation indent into memory
|
||||
VOBJECT_DESC VObjectDesc;
|
||||
|
||||
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
||||
FilenameForBPP("LAPTOP\\STARTINGLEVELBAR.sti", VObjectDesc.ImageFile);
|
||||
|
||||
CHECKF(AddVideoObject(&VObjectDesc, &guiASTARTLEVEL));
|
||||
|
||||
return (TRUE);
|
||||
}
|
||||
|
||||
|
||||
void DeleteAttribStartingLevelFrame( void )
|
||||
{
|
||||
|
||||
// remove activation indent symbol
|
||||
DeleteVideoObjectFromIndex( guiASTARTLEVEL );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void RenderAttribStartingLevelFrame(INT16 sX, INT16 sY)
|
||||
{
|
||||
|
||||
HVOBJECT hHandle;
|
||||
|
||||
// get the video object
|
||||
GetVideoObject(&hHandle, guiASTARTLEVEL);
|
||||
|
||||
// blt to sX, sY relative to upper left corner
|
||||
BltVideoObject(FRAME_BUFFER, hHandle, 0, LAPTOP_SCREEN_UL_X + sX, LAPTOP_SCREEN_WEB_UL_Y + sY , VO_BLT_SRCTRANSPARENCY,NULL);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
BOOLEAN LoadColorChoiceFrame( void )
|
||||
{
|
||||
|
||||
// this procedure will load the activation indent into memory
|
||||
VOBJECT_DESC VObjectDesc;
|
||||
|
||||
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
||||
FilenameForBPP("LAPTOP\\COLORCHOICEFRAME.sti", VObjectDesc.ImageFile);
|
||||
CHECKF(AddVideoObject(&VObjectDesc, &guiCOLORCHOICEFRAME));
|
||||
|
||||
return (TRUE);
|
||||
}
|
||||
|
||||
|
||||
void DeleteColorChoiceFrame( void )
|
||||
{
|
||||
|
||||
// remove activation indent symbol
|
||||
DeleteVideoObjectFromIndex( guiCOLORCHOICEFRAME );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void RenderColorChoiceFrame(INT16 sX, INT16 sY)
|
||||
{
|
||||
|
||||
HVOBJECT hHandle;
|
||||
|
||||
// get the video object
|
||||
GetVideoObject(&hHandle, guiCOLORCHOICEFRAME);
|
||||
|
||||
// blt to sX, sY relative to upper left corner
|
||||
BltVideoObject(FRAME_BUFFER, hHandle, 0, sX, sY , VO_BLT_SRCTRANSPARENCY,NULL);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -144,6 +144,15 @@ void RenderAboutUsIndentFrame(INT16 sX, INT16 sY);
|
||||
|
||||
void RenderAttributeFrameForIndex( INT16 sX, INT16 sY, INT32 iIndex );
|
||||
|
||||
// Added by SANDRO
|
||||
BOOLEAN LoadAttribStartingLevelFrame( void );
|
||||
void DeleteAttribStartingLevelFrame( void );
|
||||
void RenderAttribStartingLevelFrame(INT16 sX, INT16 sY);
|
||||
|
||||
// Added by SANDRO
|
||||
BOOLEAN LoadColorChoiceFrame( void );
|
||||
void DeleteColorChoiceFrame( void );
|
||||
void RenderColorChoiceFrame(INT16 sX, INT16 sY);
|
||||
|
||||
// graphical handles
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8.00"
|
||||
Version="8,00"
|
||||
Name="Laptop_2005Express"
|
||||
ProjectGUID="{5234CD2E-97F1-42FF-828D-CE0A1B46805E}"
|
||||
RootNamespace="Laptop_2005Express"
|
||||
@@ -408,6 +408,18 @@
|
||||
RelativePath=".\IMP Begin Screen.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IMP Character and Disability Entrance.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IMP Character Trait.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IMP Color Choosing.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IMP Compile Character.h"
|
||||
>
|
||||
@@ -416,6 +428,10 @@
|
||||
RelativePath=".\IMP Confirm.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IMP Disability Trait.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IMP Finish.h"
|
||||
>
|
||||
@@ -662,6 +678,18 @@
|
||||
RelativePath=".\IMP Begin Screen.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IMP Character and Disability Entrance.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IMP Character Trait.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IMP Color Choosing.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IMP Compile Character.cpp"
|
||||
>
|
||||
@@ -670,6 +698,10 @@
|
||||
RelativePath=".\IMP Confirm.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IMP Disability Trait.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IMP Finish.cpp"
|
||||
>
|
||||
|
||||
@@ -407,6 +407,18 @@
|
||||
RelativePath="IMP Begin Screen.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IMP Character and Disability Entrance.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IMP Character Trait.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IMP Color Choosing.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="IMP Compile Character.h"
|
||||
>
|
||||
@@ -415,6 +427,10 @@
|
||||
RelativePath="IMP Confirm.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IMP Disability Trait.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="IMP Finish.h"
|
||||
>
|
||||
@@ -663,6 +679,18 @@
|
||||
RelativePath="IMP Begin Screen.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IMP Character and Disability Entrance.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IMP Character Trait.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IMP Color Choosing.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="IMP Compile Character.cpp"
|
||||
>
|
||||
@@ -671,6 +699,10 @@
|
||||
RelativePath="IMP Confirm.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IMP Disability Trait.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="IMP Finish.cpp"
|
||||
>
|
||||
|
||||
Reference in New Issue
Block a user