#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 "GameSettings.h" //******************************************************************* // // 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 = NUM_DISABILITIES, }; //#define IMP_DISABILITY_COLUMN_START_X ( LAPTOP_SCREEN_UL_X + 136 ) #define IMP_DISABILITY_COLUMN_START_X ( LAPTOP_SCREEN_UL_X + 15 ) #define IMP_DISABILITY_2ND_COLUMN_START_X ( IMP_DISABILITY_COLUMN_START_X + 241 ) #define IMP_DISABILITY_COLUMN_START_Y ( LAPTOP_SCREEN_WEB_UL_Y + 40 ) #define IMP_DISABILITY_2ND_COLUMN_START_Y IMP_DISABILITY_COLUMN_START_Y #define IMP_DISABILITY_TRAIT_NUMBER_TO_START_2ND_COLUMN 6 #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__GREY_BOX_OFFSET_X 5 #define IMP_DISABILITY_TRAIT__GREY_BOX_OFFSET_Y 7 //******************************************************************* // // Global Variables // //******************************************************************* BOOLEAN gfIST_Redraw3=FALSE; BOOLEAN gfDisabilityTraitQuestions[NUM_DISABILITIES]; // these are the buttons for the questions INT32 giIMPDisabilityTraitAnswerButton[NUM_DISABILITIES]; INT32 giIMPDisabilityTraitAnswerButtonImage[NUM_DISABILITIES]; // this is the Done buttons INT32 giIMPDisabilityTraitFinsihButton; INT32 giIMPDisabilityTraitFinsihButtonImage; //image handle UINT32 guiIST_GreyGoldBox3; MOUSE_REGION gMR_DisabilityHelpTextRegions[NUM_DISABILITIES]; //******************************************************************* // // 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(); void AssignDisabilityHelpText( UINT8 ubNumber ); //******************************************************************* // // 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[ NO_DISABILITY ] = TRUE; } HandleDisabilityTraitButtonStates( ); // add regions for help texts UINT16 usPosX = IMP_DISABILITY_COLUMN_START_X + 62; UINT16 usPosY = IMP_DISABILITY_COLUMN_START_Y + 8; for ( UINT8 ubCnt = 0; ubCntubSoundSchemeID = 0; //Determine the next x location if( ubCnt < 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( ubCnt == 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 ) { UINT8 ubCnt; //if we are DONE and are just reviewing if( iCurrentProfileMode == IMP__FINISH ) { return; } //reset all other buttons for ( ubCnt = 0; ubCnt= NUM_DISABILITIES ) { 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( ) { for ( UINT8 ubCnt = 0; ubCntuiFlags |= BUTTON_CLICKED_ON; } else { ButtonList[ giIMPDisabilityTraitAnswerButton[ ubCnt ] ]->uiFlags &= ~BUTTON_CLICKED_ON; } } } void IMPDisabilityTraitDisplayDisabilityTraits() { UINT8 ubCnt; UINT16 usPosX, usPosY; UINT16 usBoxPosX, usBoxPosY; HVOBJECT hImageHandle; // 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 ( ubCnt = 0; ubCntuiFlags & 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 to the done screen iCurrentImpPage = IMP_PREJUDICE; fButtonPendingFlag = TRUE; //} /*else { iCurrentImpPage = IMP_PREJUDICE; 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() { INT8 iDisabilityTraitNumber = 0; //loop through all the buttons and reset them for ( UINT8 ubCnt = 0; ubCnt 0) && (iChosenDisabilityTrait( ) <= NUM_DISABILITIES) ) { bExtraAttributePoints = gGameExternalOptions.iBonusPointsForDisability; } else { bExtraAttributePoints = 0; } return( bExtraAttributePoints ); } void AssignDisabilityHelpText( UINT8 ubNumber ) { CHAR16 apStr[ 2000 ]; swprintf( apStr, L"" ); swprintf( apStr, gzIMPDisabilitiesHelpTexts[ubNumber] ); // Set region help text SetRegionFastHelpText( &(gMR_DisabilityHelpTextRegions[ubNumber]), apStr ); SetRegionHelpEndCallback( &gMR_DisabilityHelpTextRegions[ubNumber], MSYS_NO_CALLBACK ); return; }