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:
Wanne
2009-06-04 10:44:23 +00:00
parent e983a0ccc6
commit 7445ba2051
40 changed files with 3638 additions and 161 deletions
+71
View File
@@ -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;
}
+5
View File
@@ -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,
};
+277 -16
View File
@@ -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);
}
+1
View File
@@ -20,5 +20,6 @@ extern BOOLEAN fReturnStatus;
#define SKILL_SLIDE_START_Y 100
#define SKILL_SLIDE_HEIGHT 20
INT8 StartingLevelChosen(); // added - SANDRO
#endif
+446
View File
@@ -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 );
}
+32
View File
@@ -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
+20
View File
@@ -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
+44 -18
View File
@@ -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() );
}
+460
View File
@@ -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 );
}
+31
View File
@@ -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
+3 -1
View File
@@ -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
View File
@@ -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;
}
}
+9 -4
View File
@@ -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 )
+11 -8
View File
@@ -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 );
+11 -4
View File
@@ -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);
+1
View File
@@ -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,
+7 -3
View File
@@ -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 )
+76 -1
View File
@@ -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;
}
+9
View File
@@ -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
+33 -1
View File
@@ -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"
>
+32
View File
@@ -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"
>