From 7445ba20513e0642e0673807cd94785dcdaba188 Mon Sep 17 00:00:00 2001 From: Wanne Date: Thu, 4 Jun 2009 10:44:23 +0000 Subject: [PATCH] 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 --- GameSettings.cpp | 24 +- GameSettings.h | 16 +- GameVersion.cpp | 8 +- Laptop/CharProfile.cpp | 71 + Laptop/CharProfile.h | 5 + Laptop/IMP Attribute Selection.cpp | 293 ++++- Laptop/IMP Attribute Selection.h | 1 + Laptop/IMP Character Trait.cpp | 446 +++++++ Laptop/IMP Character Trait.h | 32 + .../IMP Character and Disability Entrance.cpp | 133 ++ .../IMP Character and Disability Entrance.h | 10 + Laptop/IMP Color Choosing.cpp | 1153 +++++++++++++++++ Laptop/IMP Color Choosing.h | 20 + Laptop/IMP Compile Character.cpp | 62 +- Laptop/IMP Disability Trait.cpp | 460 +++++++ Laptop/IMP Disability Trait.h | 31 + Laptop/IMP Finish.cpp | 4 +- Laptop/IMP MainPage.cpp | 21 +- Laptop/IMP Portraits.cpp | 13 +- Laptop/IMP Skill Trait.cpp | 19 +- Laptop/IMP Text System.cpp | 15 +- Laptop/IMP Text System.h | 1 + Laptop/IMP Voices.cpp | 10 +- Laptop/IMPVideoObjects.cpp | 77 +- Laptop/IMPVideoObjects.h | 9 + Laptop/Laptop_2005Express.vcproj | 34 +- Laptop/Laptop_VS2008.vcproj | 32 + Tactical/Interface.cpp | 3 +- Utils/Text.h | 10 + Utils/_ChineseText.cpp | 86 +- Utils/_DutchText.cpp | 86 +- Utils/_EnglishText.cpp | 85 +- Utils/_FrenchText.cpp | 86 +- Utils/_GermanText.cpp | 89 +- Utils/_ItalianText.cpp | 86 +- Utils/_PolishText.cpp | 86 +- Utils/_RussianText.cpp | 86 +- Utils/_TaiwaneseText.cpp | 84 +- ja2_2005Express.vcproj | 4 +- ja2_VS2008.vcproj | 8 +- 40 files changed, 3638 insertions(+), 161 deletions(-) create mode 100644 Laptop/IMP Character Trait.cpp create mode 100644 Laptop/IMP Character Trait.h create mode 100644 Laptop/IMP Character and Disability Entrance.cpp create mode 100644 Laptop/IMP Character and Disability Entrance.h create mode 100644 Laptop/IMP Color Choosing.cpp create mode 100644 Laptop/IMP Color Choosing.h create mode 100644 Laptop/IMP Disability Trait.cpp create mode 100644 Laptop/IMP Disability Trait.h diff --git a/GameSettings.cpp b/GameSettings.cpp index e29a4bb6..f6831544 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -153,7 +153,7 @@ BOOLEAN LoadGameSettings() gGameSettings.fOptions[TOPTION_TRACERS_FOR_SINGLE_FIRE] = iniReader.ReadBoolean("JA2 Game Settings","TOPTION_TRACERS_FOR_SINGLE_FIRE" , FALSE ); gGameSettings.fOptions[TOPTION_RAIN_SOUND] = iniReader.ReadBoolean("JA2 Game Settings","TOPTION_RAIN_SOUND" , TRUE ); gGameSettings.fOptions[TOPTION_ALLOW_CROWS] = iniReader.ReadBoolean("JA2 Game Settings","TOPTION_ALLOW_CROWS" , TRUE ); - gGameSettings.fOptions[TOPTION_USE_RANDOM_PERSONALITY] = iniReader.ReadBoolean("JA2 Game Settings","TOPTION_USE_RANDOM_PERSONALITY" , FALSE ); + gGameSettings.fOptions[TOPTION_ALLOW_SOLDIER_TOOLTIPS] = iniReader.ReadBoolean("JA2 Game Settings","TOPTION_ALLOW_SOLDIER_TOOLTIPS" , TRUE ); // Changed from random IMP personality - SANDRO gGameSettings.fOptions[TOPTION_USE_AUTO_SAVE] = iniReader.ReadBoolean("JA2 Game Settings","TOPTION_USE_AUTO_SAVE" , FALSE ); gGameSettings.fOptions[TOPTION_SILENT_SKYRIDER] = iniReader.ReadBoolean("JA2 Game Settings","TOPTION_SILENT_SKYRIDER" , FALSE ); gGameSettings.fOptions[TOPTION_LOW_CPU_USAGE] = iniReader.ReadBoolean("JA2 Game Settings","TOPTION_LOW_CPU_USAGE" , FALSE ); @@ -319,7 +319,7 @@ BOOLEAN SaveGameSettings() fprintf_s (file_pointer , "TOPTION_TRACERS_FOR_SINGLE_FIRE = %s \n" , (gGameSettings.fOptions[TOPTION_TRACERS_FOR_SINGLE_FIRE] ? "TRUE" : "FALSE" ) ); fprintf_s (file_pointer , "TOPTION_RAIN_SOUND = %s \n" , (gGameSettings.fOptions[TOPTION_RAIN_SOUND] ? "TRUE" : "FALSE" ) ); fprintf_s (file_pointer , "TOPTION_ALLOW_CROWS = %s \n" , (gGameSettings.fOptions[TOPTION_ALLOW_CROWS] ? "TRUE" : "FALSE" ) ); - fprintf_s (file_pointer , "TOPTION_USE_RANDOM_PERSONALITY = %s \n" , (gGameSettings.fOptions[TOPTION_USE_RANDOM_PERSONALITY] ? "TRUE" : "FALSE" ) ); + fprintf_s (file_pointer , "TOPTION_ALLOW_SOLDIER_TOOLTIPS = %s \n" , (gGameSettings.fOptions[TOPTION_ALLOW_SOLDIER_TOOLTIPS] ? "TRUE" : "FALSE" ) ); // changed from random IMP personality - SANDRO fprintf_s (file_pointer , "TOPTION_USE_AUTO_SAVE = %s \n" , (gGameSettings.fOptions[TOPTION_USE_AUTO_SAVE] ? "TRUE" : "FALSE" ) ); fprintf_s (file_pointer , "TOPTION_SILENT_SKYRIDER = %s \n" , (gGameSettings.fOptions[TOPTION_SILENT_SKYRIDER] ? "TRUE" : "FALSE" ) ); fprintf_s (file_pointer , "TOPTION_LOW_CPU_USAGE = %s \n" , (gGameSettings.fOptions[TOPTION_LOW_CPU_USAGE] ? "TRUE" : "FALSE" ) ); @@ -405,7 +405,7 @@ void InitGameSettings() gGameSettings.fOptions[ TOPTION_TRACERS_FOR_SINGLE_FIRE ] = FALSE; gGameSettings.fOptions[ TOPTION_RAIN_SOUND ] = TRUE; gGameSettings.fOptions[ TOPTION_ALLOW_CROWS ] = TRUE; - gGameSettings.fOptions[ TOPTION_USE_RANDOM_PERSONALITY ] = FALSE; + gGameSettings.fOptions[ TOPTION_ALLOW_SOLDIER_TOOLTIPS ] = TRUE; // changed - SANDRO gGameSettings.fOptions[ TOPTION_USE_AUTO_SAVE ] = FALSE; gGameSettings.fOptions[ TOPTION_SILENT_SKYRIDER ] = FALSE; gGameSettings.fOptions[ TOPTION_LOW_CPU_USAGE ] = FALSE; @@ -576,8 +576,14 @@ void LoadGameExternalOptions() gGameExternalOptions.iStartAttribute = iniReader.ReadInteger("JA2 Laptop Settings","START_ATTRIBUTE",55, 1, 100); //gGameExternalOptions.fPers_att = iniReader.ReadBoolean("JA2 Laptop Settings","USE_RANDOM_PERSONALITY",FALSE); - gGameExternalOptions.iCustomPersonality = (INT8) iniReader.ReadInteger("JA2 Laptop Settings","CUSTOM_PERSONALITY",0, 0, NUM_PERSONALITYTRAIT-1); - gGameExternalOptions.iCustomAttitude = (INT8) iniReader.ReadInteger("JA2 Laptop Settings","CUSTOM_ATTITUDE",0, 0, NUM_ATTITUDES-1); + // These two removed - SANDRO + //gGameExternalOptions.iCustomPersonality = (INT8) iniReader.ReadInteger("JA2 Laptop Settings","CUSTOM_PERSONALITY",0, 0, NUM_PERSONALITYTRAIT-1); + //gGameExternalOptions.iCustomAttitude = (INT8) iniReader.ReadInteger("JA2 Laptop Settings","CUSTOM_ATTITUDE",0, 0, NUM_ATTITUDES-1); + + // These three added - SANDRO + gGameExternalOptions.iIMPStartingLevelCostMultiplier = iniReader.ReadInteger("JA2 Laptop Settings","IMP_STARTING_LEVEL_COST_MULTIPLIER", 5, 0, 100); + gGameExternalOptions.iBonusPointsForDisability = iniReader.ReadInteger("JA2 Laptop Settings","IMP_BONUS_POINTS_FOR_DISABILITY",20, 0, 500); + gGameExternalOptions.iBonusPointsPerSkillNotTaken = iniReader.ReadInteger("JA2 Laptop Settings","IMP_BONUS_POINTS_PER_SKILL_NOT_TAKEN",25, 0, 500); //Merc settings gGameExternalOptions.fMercDayOne = iniReader.ReadBoolean("JA2 Laptop Settings","MERC_AVAILABLE_DAY_ONE",FALSE); @@ -637,8 +643,8 @@ void LoadGameExternalOptions() // Maximal search distance for grenades //gGameExternalOptions.guiMaxTossSearchDist = iniReader.ReadInteger("JA2 Tactical Settings","MaxTossSearchDist",3); - // Soldier tool tips - gGameExternalOptions.gfAllowSoldierToolTips = iniReader.ReadBoolean("JA2 Tactical Settings","ALLOW_SOLDIER_TOOL_TIPS",0); + // Soldier tool tips - removed from here, placed into preferences - SANDRO + //gGameExternalOptions.gfAllowSoldierToolTips = iniReader.ReadBoolean("JA2 Tactical Settings","ALLOW_SOLDIER_TOOL_TIPS",0); //SCORE: Settings for UDT gGameExternalOptions.gfAllowUDTRange = iniReader.ReadBoolean("JA2 Tactical Settings","ALLOW_UDT_RANGE",0); gGameExternalOptions.gfAllowUDTDetail = iniReader.ReadBoolean("JA2 Tactical Settings","ALLOW_UDT_DETAIL",0); @@ -753,8 +759,8 @@ void LoadGameExternalOptions() gGameExternalOptions.ubGameProgressPortionVisited = 0; } - // WDS: Advanced start - gGameExternalOptions.ubIMPStartingLevel = iniReader.ReadInteger("JA2 Gameplay Settings","IMP_STARTING_LEVEL", 1, 1, 7); + // WDS: Advanced start - removed - SANDRO + //gGameExternalOptions.ubIMPStartingLevel = iniReader.ReadInteger("JA2 Gameplay Settings","IMP_STARTING_LEVEL", 1, 1, 7); // WDS - make number of mercenaries, etc. be configurable gGameExternalOptions.ubGameMaximumNumberOfPlayerMercs = iniReader.ReadInteger("JA2 Gameplay Settings","MAX_NUMBER_PLAYER_MERCS", 24, 1, CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS); diff --git a/GameSettings.h b/GameSettings.h index 062f864c..59d129f6 100644 --- a/GameSettings.h +++ b/GameSettings.h @@ -49,7 +49,7 @@ enum TOPTION_TRACERS_FOR_SINGLE_FIRE, TOPTION_RAIN_SOUND, TOPTION_ALLOW_CROWS, - TOPTION_USE_RANDOM_PERSONALITY, + TOPTION_ALLOW_SOLDIER_TOOLTIPS, // Changed from TOPTION_USE_RANDOM_PERSONALITY - SANDRO TOPTION_USE_AUTO_SAVE, TOPTION_SILENT_SKYRIDER, TOPTION_LOW_CPU_USAGE, @@ -185,6 +185,11 @@ typedef struct INT32 iMaxZeroBonus; INT32 iStartAttribute; + // These 3 added - SANDRO + INT32 iIMPStartingLevelCostMultiplier; + INT32 iBonusPointsForDisability; + INT32 iBonusPointsPerSkillNotTaken; + INT32 iMaxMilitiaPerSector; INT32 iTrainingSquadSize; INT32 iMilitiaTrainingCost; @@ -219,8 +224,9 @@ typedef struct //BOOLEAN fPers_att; - INT8 iCustomPersonality; - INT8 iCustomAttitude; + // These 2 removed - SANDRO + //INT8 iCustomPersonality; + //INT8 iCustomAttitude; INT8 iEasyAPBonus; INT8 iExperiencedAPBonus; @@ -271,7 +277,7 @@ typedef struct UINT32 guiMaxMilitiaSquadSize; UINT32 guiMaxMilitiaSquadSizeBattle; - BOOLEAN gfAllowSoldierToolTips; + //BOOLEAN gfAllowSoldierToolTips; // moved to prefereces - SANDRO // WDS - Improve Tony's and Devin's inventory like BR's BOOLEAN tonyUsesBRSetting; @@ -322,7 +328,7 @@ typedef struct UINT32 ubGameProgressIncrement; // WDS - Advanced start - UINT32 ubIMPStartingLevel; + //UINT32 ubIMPStartingLevel; // removed - SANDRO // Event settings UINT32 ubGameProgressStartMadlabQuest; diff --git a/GameVersion.cpp b/GameVersion.cpp index 2ca6798a..fcb1ad21 100644 --- a/GameVersion.cpp +++ b/GameVersion.cpp @@ -13,12 +13,12 @@ #ifdef JA2EDITOR //MAP EDITOR BUILD VERSION -CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.2929" }; +CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.2949" }; #elif defined JA2BETAVERSION //BETA/TEST BUILD VERSION -CHAR16 zVersionLabel[256] = { L"Debug v1.13.2929" }; +CHAR16 zVersionLabel[256] = { L"Debug v1.13.2949" }; #elif defined CRIPPLED_VERSION @@ -28,11 +28,11 @@ CHAR16 zVersionLabel[256] = { L"Beta v. 0.98" }; #else //RELEASE BUILD VERSION - CHAR16 zVersionLabel[256] = { L"Release v1.13.2929" }; + CHAR16 zVersionLabel[256] = { L"Release v1.13.2949" }; #endif -CHAR8 czVersionNumber[16] = { "Build 09.06.02" }; //YY.MM.DD +CHAR8 czVersionNumber[16] = { "Build 09.06.04" }; //YY.MM.DD CHAR16 zTrackingNumber[16] = { L"Z" }; diff --git a/Laptop/CharProfile.cpp b/Laptop/CharProfile.cpp index 819bc78f..00c799b9 100644 --- a/Laptop/CharProfile.cpp +++ b/Laptop/CharProfile.cpp @@ -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; } diff --git a/Laptop/CharProfile.h b/Laptop/CharProfile.h index 0a0eb29a..e884dd59 100644 --- a/Laptop/CharProfile.h +++ b/Laptop/CharProfile.h @@ -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, }; diff --git a/Laptop/IMP Attribute Selection.cpp b/Laptop/IMP Attribute Selection.cpp index 72402ba2..5bd89c11 100644 --- a/Laptop/IMP Attribute Selection.cpp +++ b/Laptop/IMP Attribute Selection.cpp @@ -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); +} \ No newline at end of file diff --git a/Laptop/IMP Attribute Selection.h b/Laptop/IMP Attribute Selection.h index 65434b93..12965c03 100644 --- a/Laptop/IMP Attribute Selection.h +++ b/Laptop/IMP Attribute Selection.h @@ -20,5 +20,6 @@ extern BOOLEAN fReturnStatus; #define SKILL_SLIDE_START_Y 100 #define SKILL_SLIDE_HEIGHT 20 +INT8 StartingLevelChosen(); // added - SANDRO #endif \ No newline at end of file diff --git a/Laptop/IMP Character Trait.cpp b/Laptop/IMP Character Trait.cpp new file mode 100644 index 00000000..98f83a42 --- /dev/null +++ b/Laptop/IMP Character Trait.cpp @@ -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 ) + { + 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; uiCntuiFlags |= 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; uiCntuiFlags & 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; uiCntuiFlags & 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; + } + } +} diff --git a/Laptop/IMP Character and Disability Entrance.h b/Laptop/IMP Character and Disability Entrance.h new file mode 100644 index 00000000..35a64a5a --- /dev/null +++ b/Laptop/IMP Character and Disability Entrance.h @@ -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 \ No newline at end of file diff --git a/Laptop/IMP Color Choosing.cpp b/Laptop/IMP Color Choosing.cpp new file mode 100644 index 00000000..36623345 --- /dev/null +++ b/Laptop/IMP Color Choosing.cpp @@ -0,0 +1,1153 @@ +#ifdef PRECOMPILEDHEADERS + #include "Laptop All.h" + #include "IMP Color Choosing Skin Hair.h" + #include "_Ja25Englishtext.h" +#else + #include "IMP Color Choosing.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 "IMP Portraits.h" + #include "IMP Begin Screen.h" + #include "WCheck.h" + #include "Animation Data.h" +#endif + +enum +{ + PINKSKIN, + TANSKIN, + DARKSKIN, + BLACKSKIN, + NUMSKINS +}; +enum +{ + BROWNHEAD, + BLACKHEAD, + WHITEHEAD, + BLONDHEAD, + REDHEAD, + NUMHEADS +}; + +enum +{ + WHITEVEST, + GYELLOWSHIRT, + YELLOWVEST, + GREYVEST, + BROWNVEST, + PURPLESHIRT, + BLUEVEST, + JEANVEST, + GREENVEST, + REDVEST, + BLACKSHIRT, + NUMSHIRTS +}; + +enum +{ + BLUEPANTS, + BLACKPANTS, + JEANPANTS, + TANPANTS, + BEIGEPANTS, + GREENPANTS, + NUMPANTS +}; + +// Skin colors +/*STR16 sSkinTexts[]={ + L"Pink Skin", + L"Tan Skin", + L"Dark Skin", + L"Black Skin", + L"none", +}; + +// Hair colors +STR16 sHairTexts[]={ + L"Brown Head", + L"Black Head", + L"White Head", + L"Blond Head", + L"Red Head", + L"none", +}; + +// Shirt colors +STR16 sShirtTexts[]={ + L"White Shirt", + L"Green-Yellow Shirt", + L"Yellow Shirt", + L"Grey Shirt", + L"Brown Shirt", + L"Purple Shirt", + L"Blue Shirt", + L"Jean Shirt", + L"Green Shirt", + L"Red Shirt", + L"Black Shirt", + L"none", +}; + +// Pant colors +STR16 sPantsTexts[]={ + L"Blue Pants", + L"Black Pants", + L"Jean Pants", + L"Tan Pants", + L"Beige Pants", + L"Green Pants", + L"none", +}; + +STR16 sExplanationTexts[]= +{ + L"Hair Color", + L"Skin Color", + L"Shirt Color", + L"Pants Color", + L"Normal Body", + L"Big Body", +};*/ + +//******************************************************************* +// +// Local Defines +// +//******************************************************************* + +#define IMP_COLOR_CHOOSING__TITLE_FONT FONT14ARIAL + +#define IMP_COLOR_CHOOSING__FONT FONT12ARIAL +#define IMP_COLOR_CHOOSING__COLOR FONT_MCOLOR_WHITE + + +/*enum +{ + IMP_COLOR_CHOOSING__TITLE_TEXT=NUMSKINS, +};*/ + + +//#define IMP_COLORS_COLUMN_CENTER_X ( LAPTOP_SCREEN_UL_X + 220 ) +//#define IMP_COLORS_COLUMN_CENTER_Y ( LAPTOP_SCREEN_UL_Y + 130 ) + +#define IMP_COLORS_BOX_POS_X ( LAPTOP_SCREEN_UL_X + 194 ) +#define IMP_COLORS_BOX_POS_Y ( LAPTOP_SCREEN_UL_Y + 120 ) + +#define IMP_BODY_TYPE_BTN_POS_X ( LAPTOP_SCREEN_UL_X + 123 ) +#define IMP_BODY_TYPE_BTN_POS_Y ( LAPTOP_SCREEN_UL_Y + 268 ) + + +//******************************************************************* +// +// Global Variables +// +//******************************************************************* + +INT32 iCurrentSkin = 0; +INT32 iCurrentHair = 0; +INT32 iCurrentShirt = 0; +INT32 iCurrentPants = 0; + +BOOLEAN gfIST_Redraw4=FALSE; + +BOOLEAN fReDrawColorScreenFlag; + +BOOLEAN bBigBody; +BOOLEAN bBadAss; + +// these are the buttons for the arrows +INT32 giIMPColorChoiceButton[ 11 ]; +INT32 giIMPColorChoiceButtonImage[ 11 ]; + +// this is the Done buttons +INT32 giIMPColorChoiceFinsihButton; +INT32 giIMPColorChoiceFinsihButtonImage; + +//image handle +UINT32 guiIST_GreyGoldBox4; + +//******************************************************************* +// +// Function Prototypes +// +//******************************************************************* + +void BtnIMPColorChoiceFinishCallback(GUI_BUTTON *btn,INT32 reason); +void AddIMPColorChoiceButtons(); +void IMPColorChoiceDisplayBoxes(); +void BtnIMPSkinChoiceNextCallback(GUI_BUTTON *btn,INT32 reason); +void BtnIMPSkinChoicePreviousCallback(GUI_BUTTON *btn,INT32 reason); +void BtnIMPHairChoiceNextCallback(GUI_BUTTON *btn,INT32 reason); +void BtnIMPHairChoicePreviousCallback(GUI_BUTTON *btn,INT32 reason); +void BtnIMPShirtChoiceNextCallback(GUI_BUTTON *btn,INT32 reason); +void BtnIMPShirtChoicePreviousCallback(GUI_BUTTON *btn,INT32 reason); +void BtnIMPPantsChoiceNextCallback(GUI_BUTTON *btn,INT32 reason); +void BtnIMPPantsChoicePreviousCallback(GUI_BUTTON *btn,INT32 reason); +void FixRanges( void ); +void HandleIMPNormalAndBigBodyButtons( BOOLEAN bPressedBigBody ); +void BtnIMPNormalBodyCallback(GUI_BUTTON *btn,INT32 reason); +void BtnIMPBigBodyCallback(GUI_BUTTON *btn,INT32 reason); +void BtnIMPToggleBadAssOption(GUI_BUTTON *btn,INT32 reason); +void CreateBadAssToggleButton(); +void DextroyBadAssToggleButton(); +BOOLEAN RenderFigure(); + +//******************************************************************* +// +// Functions +// +//******************************************************************* + + + +void EnterIMPColorChoice( void ) +{ +// UINT32 uiCnt; + VOBJECT_DESC VObjectDesc; + bBigBody = FALSE; + bBadAss = FALSE; + + // Based on the portrait chosen, set the default colors, when colors + switch( iPortraitNumber ) + { + case( 0 ): + iCurrentSkin = 3; + iCurrentHair = 0; + iCurrentShirt = 7; + iCurrentPants = 2; + bBigBody = TRUE; + break; + case( 1 ): + iCurrentSkin = 1; + iCurrentHair = 0; + iCurrentShirt = 4; + iCurrentPants = 3; + break; + case( 2 ): + iCurrentSkin = 1; + iCurrentHair = 0; + iCurrentShirt = 0; + iCurrentPants = 0; + break; + case( 3 ): + iCurrentSkin = 2; + iCurrentHair = 0; + iCurrentShirt = 0; + iCurrentPants = 1; + break; + case( 4 ): + iCurrentSkin = 1; + iCurrentHair = 0; + iCurrentShirt = 3; + iCurrentPants = 5; + break; + case( 5 ): + iCurrentSkin = 2; + iCurrentHair = 1; + iCurrentShirt = 3; + iCurrentPants = 1; + break; + case( 6 ): + iCurrentSkin = 1; + iCurrentHair = 0; + iCurrentShirt = 4; + iCurrentPants = 0; + bBigBody = TRUE; + break; + case( 7 ): + iCurrentSkin = 1; + iCurrentHair = 0; + iCurrentShirt = 10; + iCurrentPants = 1; + bBigBody = TRUE; + break; + case( 8 ): + iCurrentSkin = 1; + iCurrentHair = 0; + iCurrentShirt = 4; + iCurrentPants = 3; + break; + case( 9 ): + iCurrentSkin = 0; + iCurrentHair = 0; + iCurrentShirt = 4; + iCurrentPants = 4; + break; + case( 10 ): + iCurrentSkin = 1; + iCurrentHair = 1; + iCurrentShirt = 4; + iCurrentPants = 1; + break; + case( 11 ): + iCurrentSkin = 1; + iCurrentHair = 1; + iCurrentShirt = 10; + iCurrentPants = 1; + break; + case( 12 ): + iCurrentSkin = 0; + iCurrentHair = 0; + iCurrentShirt = 0; + iCurrentPants = 5; + break; + case( 13 ): + iCurrentSkin = 3; + iCurrentHair = 0; + iCurrentShirt = 3; + iCurrentPants = 1; + break; + case( 14 ): + iCurrentSkin = 1; + iCurrentHair = 4; + iCurrentShirt = 0; + iCurrentPants = 2; + break; + case( 15 ): + iCurrentSkin = 1; + iCurrentHair = 3; + iCurrentShirt = 4; + iCurrentPants = 5; + break; + } + + //add the buttons + AddIMPColorChoiceButtons(); + + // load the stats graphic and add it + VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; + FilenameForBPP("LAPTOP\\SkillTraitSmallGreyIdent.sti", VObjectDesc.ImageFile); + if( !AddVideoObject(&VObjectDesc, &guiIST_GreyGoldBox4 ) ) + { + Assert( 0 ); + return; + } + + + + giIMPColorChoiceFinsihButtonImage = LoadButtonImage( "LAPTOP\\button_5.sti" ,-1,0,-1,1,-1 ); + giIMPColorChoiceFinsihButton = CreateIconAndTextButton( giIMPColorChoiceFinsihButtonImage, 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)BtnIMPColorChoiceFinishCallback ); + + + + SetButtonCursor( giIMPColorChoiceFinsihButton, CURSOR_WWW); + +} + + +void RenderIMPColorChoice( void ) +{ + + + //render the metal background graphic + RenderProfileBackGround(); + + IMPColorChoiceDisplayBoxes(); + + RenderAttrib1IndentFrame( 115, 42); + + // text - different for males and females + if ( fCharacterIsMale ) + { + DisplayWrappedString( LAPTOP_SCREEN_UL_X + 127, LAPTOP_SCREEN_WEB_UL_Y + 50, ( 426 - 200 ), 2, FONT10ARIAL, 142, gzIMPColorChoosingText[2],FONT_BLACK,FALSE,CENTER_JUSTIFIED); + + // title + DrawTextToScreen( gzIMPColorChoosingText[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 ); + } + else + { + DisplayWrappedString( LAPTOP_SCREEN_UL_X + 127, LAPTOP_SCREEN_WEB_UL_Y + 50, ( 426 - 200 ), 2, FONT10ARIAL, 142, gzIMPColorChoosingText[3],FONT_BLACK,FALSE,CENTER_JUSTIFIED); + + // title + DrawTextToScreen( gzIMPColorChoosingText[1], 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 ); + } + + // figure and frame + RenderFigure(); + // text in the frame + DrawTextToScreen( sColorChoiceExplanationTexts[ 0 ], IMP_COLORS_BOX_POS_X - 101, IMP_COLORS_BOX_POS_Y + 23, ( 100 ), FONT12ARIAL, FONT_WHITE, FONT_BLACK, FALSE, RIGHT_JUSTIFIED ); + DrawTextToScreen( sColorChoiceExplanationTexts[ 1 ], IMP_COLORS_BOX_POS_X - 101, IMP_COLORS_BOX_POS_Y + 50, ( 100 ), FONT12ARIAL, FONT_WHITE, FONT_BLACK, FALSE, RIGHT_JUSTIFIED ); + DrawTextToScreen( sColorChoiceExplanationTexts[ 2 ], IMP_COLORS_BOX_POS_X - 101, IMP_COLORS_BOX_POS_Y + 77, ( 100 ), FONT12ARIAL, FONT_WHITE, FONT_BLACK, FALSE, RIGHT_JUSTIFIED ); + DrawTextToScreen( sColorChoiceExplanationTexts[ 3 ], IMP_COLORS_BOX_POS_X - 101, IMP_COLORS_BOX_POS_Y + 105, ( 100 ), FONT12ARIAL, FONT_WHITE, FONT_BLACK, FALSE, RIGHT_JUSTIFIED ); + +} +BOOLEAN RenderFigure() +{ + VOBJECT_DESC VObjectDesc; + HVOBJECT hHandle; + UINT32 uiGraphicHandle; + UINT16 usPosX, usPosY; + + usPosX = IMP_COLORS_BOX_POS_X + 31; + usPosY = IMP_COLORS_BOX_POS_Y + 13; + + // load it + VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; + + // Pick images based on body type + if ( fCharacterIsMale ) + { + if ( bBigBody == TRUE ) + FilenameForBPP( "Laptop\\IMPBigMercImages.sti" , VObjectDesc.ImageFile); + else + FilenameForBPP( "Laptop\\IMPSmallMercImages.sti" , VObjectDesc.ImageFile); + } + else + { + FilenameForBPP( "Laptop\\IMPFemaleMercImages.sti" , VObjectDesc.ImageFile); + } + + // safety check if loaded + CHECKF(AddVideoObject(&VObjectDesc, &uiGraphicHandle)); + + // Get it + GetVideoObject(&hHandle, uiGraphicHandle); + + // show background first + BltVideoObject(FRAME_BUFFER, hHandle, 0, usPosX, usPosY, VO_BLT_SRCTRANSPARENCY,NULL); + + // show skin (1 - 4) + BltVideoObject(FRAME_BUFFER, hHandle, (iCurrentSkin + 1), usPosX, usPosY, VO_BLT_SRCTRANSPARENCY,NULL); + // show head (5 - 9) + BltVideoObject(FRAME_BUFFER, hHandle, (iCurrentHair + 5 ), usPosX, usPosY, VO_BLT_SRCTRANSPARENCY,NULL); + // show vest (10 - 20) + BltVideoObject(FRAME_BUFFER, hHandle, (iCurrentShirt + 10 ), usPosX, usPosY, VO_BLT_SRCTRANSPARENCY,NULL); + // show pants (21 - 26) + BltVideoObject(FRAME_BUFFER, hHandle, (iCurrentPants + 21 ), usPosX, usPosY, VO_BLT_SRCTRANSPARENCY,NULL); + + DeleteVideoObjectFromIndex( uiGraphicHandle ); + + // Add the frame around + RenderColorChoiceFrame( (usPosX - 114), (usPosY - 13) ); + + return ( TRUE ); +} + +void ExitIMPColorChoice( void ) +{ + INT32 iCnt; + + DeleteVideoObjectFromIndex( guiIST_GreyGoldBox4 ); + + //remove the skin buttons + for(iCnt = 0; iCnt < 11; iCnt++) + { + //if there is a button allocated + if( giIMPColorChoiceButton[iCnt] != -1 ) + { + RemoveButton(giIMPColorChoiceButton[ iCnt ] ); + UnloadButtonImage(giIMPColorChoiceButtonImage[ iCnt ] ); + } + } + + RemoveButton( giIMPColorChoiceFinsihButton ); + UnloadButtonImage( giIMPColorChoiceFinsihButtonImage ); +} + + +void HandleIMPColorChoice( void ) +{ + if( fReDrawColorScreenFlag ) + { + RenderIMPColorChoice( ); + fReDrawColorScreenFlag = FALSE; + } + + InvalidateRegion(LAPTOP_SCREEN_UL_X,LAPTOP_SCREEN_WEB_UL_Y,LAPTOP_SCREEN_LR_X,LAPTOP_SCREEN_WEB_LR_Y); +} + +void AddIMPColorChoiceButtons() +{ + INT32 iCnt = 0; + UINT16 usNextPosX, usNextPosY, usPrevPosX, usPrevPosY; + + usNextPosX = IMP_COLORS_BOX_POS_X + 137; + usNextPosY = IMP_COLORS_BOX_POS_Y + 18; + usPrevPosX = IMP_COLORS_BOX_POS_X + 10; + usPrevPosY = IMP_COLORS_BOX_POS_Y + 18; + +//************************************************************************************************************************ +// HAIR BUTTONS +/////////////////////////////////////// + + // next button HAIR + giIMPColorChoiceButtonImage[ 0 ]= LoadButtonImage( "LAPTOP\\IMPARROWSSANDRO.sti" ,-1,3,-1,4,-1 ); + + giIMPColorChoiceButton[ 0 ] = QuickCreateButton( giIMPColorChoiceButtonImage[ 0 ], usNextPosX, usNextPosY, + BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1, + BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPHairChoiceNextCallback ); + + //Set the button data + MSYS_SetBtnUserData( giIMPColorChoiceButton[0], 0, 0 ); + SetButtonCursor( giIMPColorChoiceButton[0], CURSOR_WWW); + + // previous button HAIR + giIMPColorChoiceButtonImage[ 1 ]= LoadButtonImage( "LAPTOP\\IMPARROWSSANDRO.sti" ,-1,0,-1,1,-1 ); + + giIMPColorChoiceButton[ 1 ] = QuickCreateButton( giIMPColorChoiceButtonImage[ 1 ], usPrevPosX, usPrevPosY, + BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1, + BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPHairChoicePreviousCallback ); + + //Set the button data + MSYS_SetBtnUserData( giIMPColorChoiceButton[1], 0, 1 ); + SetButtonCursor( giIMPColorChoiceButton[1], CURSOR_WWW); + + + usNextPosY += 27; + usPrevPosY += 27; + +//************************************************************************************************************************ +// SKIN BUTTONS +/////////////////////////////////////// + + // Next button SKIN + giIMPColorChoiceButtonImage[ 2 ]= LoadButtonImage( "LAPTOP\\IMPARROWSSANDRO.sti" ,-1,3,-1,4,-1 ); + + giIMPColorChoiceButton[ 2 ] = QuickCreateButton( giIMPColorChoiceButtonImage[ 2 ], usNextPosX, usNextPosY, + BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1, + BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPSkinChoiceNextCallback ); + + //Set the button data + MSYS_SetBtnUserData( giIMPColorChoiceButton[2], 0, 2 ); + SetButtonCursor( giIMPColorChoiceButton[2], CURSOR_WWW); + + // previous button SKIN + giIMPColorChoiceButtonImage[ 3 ]= LoadButtonImage( "LAPTOP\\IMPARROWSSANDRO.sti" ,-1,0,-1,1,-1 ); + + giIMPColorChoiceButton[ 3 ] = QuickCreateButton( giIMPColorChoiceButtonImage[ 3 ], usPrevPosX, usPrevPosY, + BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1, + BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPSkinChoicePreviousCallback ); + + //Set the button data + MSYS_SetBtnUserData( giIMPColorChoiceButton[3], 0, 3 ); + SetButtonCursor( giIMPColorChoiceButton[3], CURSOR_WWW); + + usNextPosY += 27; + usPrevPosY += 27; + + +//************************************************************************************************************************ +// SHIRT BUTTONS +/////////////////////////////////////// + + // next button SHIRT + giIMPColorChoiceButtonImage[ 4 ]= LoadButtonImage( "LAPTOP\\IMPARROWSSANDRO.sti" ,-1,3,-1,4,-1 ); + + giIMPColorChoiceButton[ 4 ] = QuickCreateButton( giIMPColorChoiceButtonImage[ 4 ], usNextPosX, usNextPosY, + BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1, + BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPShirtChoiceNextCallback ); + + //Set the button data + MSYS_SetBtnUserData( giIMPColorChoiceButton[4], 0, 4 ); + SetButtonCursor( giIMPColorChoiceButton[4], CURSOR_WWW); + + + // previous button SHIRT + giIMPColorChoiceButtonImage[ 5 ]= LoadButtonImage( "LAPTOP\\IMPARROWSSANDRO.sti" ,-1,0,-1,1,-1 ); + + giIMPColorChoiceButton[ 5 ] = QuickCreateButton( giIMPColorChoiceButtonImage[ 5 ], usPrevPosX, usPrevPosY, + BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1, + BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPShirtChoicePreviousCallback ); + + //Set the button data + MSYS_SetBtnUserData( giIMPColorChoiceButton[5], 0, 5 ); + SetButtonCursor( giIMPColorChoiceButton[5], CURSOR_WWW); + + usNextPosY += 27; + usPrevPosY += 27; + +//************************************************************************************************************************ +// PANTS BUTTONS +/////////////////////////////////////// + + // next button PANTS + giIMPColorChoiceButtonImage[ 6 ]= LoadButtonImage( "LAPTOP\\IMPARROWSSANDRO.sti" ,-1,3,-1,4,-1 ); + + giIMPColorChoiceButton[ 6 ] = QuickCreateButton( giIMPColorChoiceButtonImage[ 6 ], usNextPosX, usNextPosY, + BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1, + BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPPantsChoiceNextCallback ); + + //Set the button data + MSYS_SetBtnUserData( giIMPColorChoiceButton[6], 0, 6 ); + SetButtonCursor( giIMPColorChoiceButton[6], CURSOR_WWW); + + // previous button PANTS + giIMPColorChoiceButtonImage[ 7 ]= LoadButtonImage( "LAPTOP\\IMPARROWSSANDRO.sti" ,-1,0,-1,1,-1 ); + + giIMPColorChoiceButton[ 7 ] = QuickCreateButton( giIMPColorChoiceButtonImage[ 7 ], usPrevPosX, usPrevPosY, + BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1, + BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPPantsChoicePreviousCallback ); + + //Set the button data + MSYS_SetBtnUserData( giIMPColorChoiceButton[7], 0, 7 ); + SetButtonCursor( giIMPColorChoiceButton[7], CURSOR_WWW); + + +//************************************************************************************************************************ +// BODY TYPE BUTTONS +/////////////////////////////////////// + + // only do this if we are a male character + if (fCharacterIsMale) + { + // Normal body button + giIMPColorChoiceButtonImage[ 8 ] = LoadButtonImage( "LAPTOP\\button_6.sti", -1,0,-1,1,-1 ); + + giIMPColorChoiceButton[ 8 ] = QuickCreateButton( giIMPColorChoiceButtonImage[ 8 ], IMP_BODY_TYPE_BTN_POS_X, IMP_BODY_TYPE_BTN_POS_Y, + BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 3, + MSYS_NO_CALLBACK, (GUI_CALLBACK)BtnIMPNormalBodyCallback); + + //Set the button data + MSYS_SetBtnUserData( giIMPColorChoiceButton[8], 0, 8 ); + SetButtonCursor( giIMPColorChoiceButton[8], CURSOR_WWW); + + // Big body button + giIMPColorChoiceButtonImage[ 9 ] = LoadButtonImage( "LAPTOP\\button_6.sti", -1,0,-1,1,-1 ); + + giIMPColorChoiceButton[ 9 ] = QuickCreateButton( giIMPColorChoiceButtonImage[ 9 ], IMP_BODY_TYPE_BTN_POS_X, IMP_BODY_TYPE_BTN_POS_Y + 38, + BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 3, + MSYS_NO_CALLBACK, (GUI_CALLBACK)BtnIMPBigBodyCallback); + + //Set the button data + MSYS_SetBtnUserData( giIMPColorChoiceButton[9], 0, 9 ); + SetButtonCursor( giIMPColorChoiceButton[9], CURSOR_WWW); + + // Badass toggle button + giIMPColorChoiceButtonImage[ 10 ] = LoadButtonImage( "EDITOR//SmCheckbox.sti", 1,0,-1,2,-1 ); + + giIMPColorChoiceButton[ 10 ] = QuickCreateButton( giIMPColorChoiceButtonImage[ 10 ], IMP_BODY_TYPE_BTN_POS_X + 230, IMP_BODY_TYPE_BTN_POS_Y + 49, + BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 3, + MSYS_NO_CALLBACK, (GUI_CALLBACK)BtnIMPToggleBadAssOption ); + + MSYS_SetBtnUserData( giIMPColorChoiceButton[10], 0, 10 ); + SetButtonCursor( giIMPColorChoiceButton[10], CURSOR_WWW); + SetButtonFastHelpText( giIMPColorChoiceButton[ 10 ], gzIMPColorChoosingText[4]); + + + // Make respective button initialy pressed + if ( bBigBody ) + { + ButtonList[ giIMPColorChoiceButton[ 9 ] ]->uiFlags |= BUTTON_CLICKED_ON; + + // enable badass option + EnableButton( giIMPColorChoiceButton[ 10 ] ); + } + else + { + ButtonList[ giIMPColorChoiceButton[ 8 ] ]->uiFlags |= BUTTON_CLICKED_ON; + + // disable badass option + DisableButton( giIMPColorChoiceButton[ 10 ] ); + } + } + +} + +void BtnIMPToggleBadAssOption(GUI_BUTTON *btn,INT32 reason) +{ + if (!(btn->uiFlags & BUTTON_ENABLED)) + return; + + if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) + { + if ( bBadAss || (btn->uiFlags & BUTTON_CLICKED_ON)) + { + btn->uiFlags &= ~(BUTTON_CLICKED_ON); + bBadAss = FALSE; + } + else if ( !bBadAss && !(btn->uiFlags & BUTTON_CLICKED_ON)) + { + btn->uiFlags |= (BUTTON_CLICKED_ON); + bBadAss = TRUE; + } + } +} +void BtnIMPSkinChoiceNextCallback(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 ) + { + iCurrentSkin++; + FixRanges(); + + fReDrawColorScreenFlag = TRUE; + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) + { + btn->uiFlags|=(BUTTON_CLICKED_ON); + + iCurrentSkin++; + FixRanges(); + + fReDrawColorScreenFlag = TRUE; + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) + { + if (btn->uiFlags & BUTTON_CLICKED_ON) + { + btn->uiFlags&=~(BUTTON_CLICKED_ON); + } + } +} + +void BtnIMPSkinChoicePreviousCallback(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 ) + { + iCurrentSkin--; + FixRanges(); + + fReDrawColorScreenFlag = TRUE; + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) + { + btn->uiFlags|=(BUTTON_CLICKED_ON); + + iCurrentSkin--; + FixRanges(); + + fReDrawColorScreenFlag = TRUE; + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) + { + if (btn->uiFlags & BUTTON_CLICKED_ON) + { + btn->uiFlags&=~(BUTTON_CLICKED_ON); + } + } +} +void BtnIMPHairChoiceNextCallback(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 ) + { + iCurrentHair++; + FixRanges(); + + fReDrawColorScreenFlag = TRUE; + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) + { + btn->uiFlags|=(BUTTON_CLICKED_ON); + + iCurrentHair++; + FixRanges(); + + fReDrawColorScreenFlag = TRUE; + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) + { + if (btn->uiFlags & BUTTON_CLICKED_ON) + { + btn->uiFlags&=~(BUTTON_CLICKED_ON); + } + } +} + +void BtnIMPHairChoicePreviousCallback(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 ) + { + iCurrentHair--; + FixRanges(); + + fReDrawColorScreenFlag = TRUE; + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) + { + btn->uiFlags|=(BUTTON_CLICKED_ON); + + iCurrentHair--; + FixRanges(); + + fReDrawColorScreenFlag = TRUE; + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) + { + if (btn->uiFlags & BUTTON_CLICKED_ON) + { + btn->uiFlags&=~(BUTTON_CLICKED_ON); + } + } +} +void BtnIMPShirtChoiceNextCallback(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 ) + { + iCurrentShirt++; + FixRanges(); + + fReDrawColorScreenFlag = TRUE; + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) + { + btn->uiFlags|=(BUTTON_CLICKED_ON); + + iCurrentShirt++; + FixRanges(); + + fReDrawColorScreenFlag = TRUE; + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) + { + if (btn->uiFlags & BUTTON_CLICKED_ON) + { + btn->uiFlags&=~(BUTTON_CLICKED_ON); + } + } +} + +void BtnIMPShirtChoicePreviousCallback(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 ) + { + iCurrentShirt--; + FixRanges(); + + fReDrawColorScreenFlag = TRUE; + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) + { + btn->uiFlags|=(BUTTON_CLICKED_ON); + + iCurrentShirt--; + FixRanges(); + + fReDrawColorScreenFlag = TRUE; + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) + { + if (btn->uiFlags & BUTTON_CLICKED_ON) + { + btn->uiFlags&=~(BUTTON_CLICKED_ON); + } + } +} +void BtnIMPPantsChoiceNextCallback(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 ) + { + iCurrentPants++; + FixRanges(); + + fReDrawColorScreenFlag = TRUE; + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) + { + btn->uiFlags|=(BUTTON_CLICKED_ON); + + iCurrentPants++; + FixRanges(); + + fReDrawColorScreenFlag = TRUE; + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) + { + if (btn->uiFlags & BUTTON_CLICKED_ON) + { + btn->uiFlags&=~(BUTTON_CLICKED_ON); + } + } +} + +void BtnIMPPantsChoicePreviousCallback(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 ) + { + iCurrentPants--; + FixRanges(); + + fReDrawColorScreenFlag = TRUE; + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) + { + btn->uiFlags|=(BUTTON_CLICKED_ON); + + iCurrentPants--; + FixRanges(); + + fReDrawColorScreenFlag = TRUE; + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) + { + if (btn->uiFlags & BUTTON_CLICKED_ON) + { + btn->uiFlags&=~(BUTTON_CLICKED_ON); + } + } +} + +void FixRanges() +{ + // fix skin number + if (iCurrentSkin >= NUMSKINS ) + { + iCurrentSkin = 0; + } + else if (iCurrentSkin < 0 ) + { + iCurrentSkin = NUMSKINS - 1; + } + + // fix hair number + if (iCurrentHair >= NUMHEADS ) + { + iCurrentHair = 0; + } + else if (iCurrentHair < 0 ) + { + iCurrentHair = NUMHEADS - 1; + } + + // fix shirt number + if (iCurrentShirt >= NUMSHIRTS ) + { + iCurrentShirt = 0; + } + else if (iCurrentShirt < 0 ) + { + iCurrentShirt = NUMSHIRTS - 1; + } + + // fix pants number + if (iCurrentPants >= NUMPANTS ) + { + iCurrentPants = 0; + } + else if (iCurrentPants < 0 ) + { + iCurrentPants = NUMPANTS - 1; + } +} +void HandleIMPNormalAndBigBodyButtons( BOOLEAN bPressedBigBody ) +{ + if ( bPressedBigBody ) + { + if( bBigBody ) + { + // play sound + PlayButtonSound( giIMPColorChoiceButton[ 9 ], BUTTON_SOUND_DISABLED_CLICK ); + } + else + { + bBigBody = TRUE; + + // Deselect normal body button + ButtonList[ giIMPColorChoiceButton[ 8 ] ]->uiFlags &= ~BUTTON_CLICKED_ON; + + // Select big body button + ButtonList[ giIMPColorChoiceButton[ 9 ] ]->uiFlags |= BUTTON_CLICKED_ON; + + // play sound + PlayButtonSound( giIMPColorChoiceButton[ 9 ], BUTTON_SOUND_CLICKED_OFF ); + + // Enable badass option + EnableButton( giIMPColorChoiceButton[ 10 ] ); + + fReDrawColorScreenFlag = TRUE; + } + } + else + { + if( bBigBody ) + { + bBigBody = FALSE; + + // Select normal body button + ButtonList[ giIMPColorChoiceButton[ 8 ] ]->uiFlags |= BUTTON_CLICKED_ON; + + // Deselect big body button + ButtonList[ giIMPColorChoiceButton[ 9 ] ]->uiFlags &= ~BUTTON_CLICKED_ON; + + // play sound + PlayButtonSound( giIMPColorChoiceButton[ 8 ], BUTTON_SOUND_CLICKED_OFF ); + + // Disable Badass option + DisableButton( giIMPColorChoiceButton[ 10 ] ); + + fReDrawColorScreenFlag = TRUE; + } + else + { + // play sound + PlayButtonSound( giIMPColorChoiceButton[ 8 ], BUTTON_SOUND_DISABLED_CLICK ); + } + } + +} +void BtnIMPNormalBodyCallback(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 ) + { + HandleIMPNormalAndBigBodyButtons( FALSE ); + } +} + +void BtnIMPBigBodyCallback(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 ) + { + HandleIMPNormalAndBigBodyButtons( TRUE ); + } +} + +void IMPColorChoiceDisplayBoxes() +{ + //UINT16 usPosX, usPosY; + HVOBJECT hImageHandle; + + // Stats + GetVideoObject(&hImageHandle, guiIST_GreyGoldBox4 ); + + if ( fCharacterIsMale ) + { + if( bBigBody ) + { + //Display the gold background box on NORMAL BODY + BltVideoObject(FRAME_BUFFER, hImageHandle, 0, IMP_BODY_TYPE_BTN_POS_X + 65, IMP_BODY_TYPE_BTN_POS_Y + 5, VO_BLT_SRCTRANSPARENCY,NULL); + BltVideoObject(FRAME_BUFFER, hImageHandle, 1, IMP_BODY_TYPE_BTN_POS_X + 65, IMP_BODY_TYPE_BTN_POS_Y + 5 + 38, VO_BLT_SRCTRANSPARENCY,NULL); + } + else + { + //Display the grey background box on BIG BODY + BltVideoObject(FRAME_BUFFER, hImageHandle, 1, IMP_BODY_TYPE_BTN_POS_X + 65, IMP_BODY_TYPE_BTN_POS_Y + 5, VO_BLT_SRCTRANSPARENCY,NULL); + BltVideoObject(FRAME_BUFFER, hImageHandle, 0, IMP_BODY_TYPE_BTN_POS_X + 65, IMP_BODY_TYPE_BTN_POS_Y + 5 + 38, VO_BLT_SRCTRANSPARENCY,NULL); + } + + //draw the text to the screenx + DrawTextToScreen( sColorChoiceExplanationTexts[4], IMP_BODY_TYPE_BTN_POS_X + 7 + 65, IMP_BODY_TYPE_BTN_POS_Y + 12, 0, IMP_COLOR_CHOOSING__FONT, IMP_COLOR_CHOOSING__COLOR, FONT_MCOLOR_BLACK, FALSE, LEFT_JUSTIFIED ); + DrawTextToScreen( sColorChoiceExplanationTexts[5], IMP_BODY_TYPE_BTN_POS_X + 7 + 65, IMP_BODY_TYPE_BTN_POS_Y + 12 + 38, 0, IMP_COLOR_CHOOSING__FONT, IMP_COLOR_CHOOSING__COLOR, FONT_MCOLOR_BLACK, FALSE, LEFT_JUSTIFIED ); + + } + +} + + +void BtnIMPColorChoiceFinishCallback(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); + + // finished here + iCurrentImpPage = IMP_MAIN_PAGE; + //fButtonPendingFlag = TRUE; + if( iCurrentProfileMode != IMP__FINISH ) + { + iCurrentProfileMode = IMP__VOICE; // CHANGED BY SANDRO ("VOICE" IS NOW CHARACTER) + } + else + { + iCurrentProfileMode = IMP__FINISH; + } + } +} +INT8 iChosenSkin() +{ + if ( iCurrentSkin >= 0 && iCurrentSkin < NUMSKINS ) + return( iCurrentSkin ); + else + return( 0 ); +} + +INT8 iChosenHair() +{ + if ( iCurrentHair >= 0 && iCurrentHair < NUMHEADS ) + return( iCurrentHair ); + else + return( 0 ); +} +INT8 iChosenShirt() +{ + if ( iCurrentShirt >= 0 && iCurrentShirt < NUMSHIRTS ) + return( iCurrentShirt ); + else + return( 0 ); +} +INT8 iChosenPants() +{ + if ( iCurrentPants >= 0 && iCurrentPants < NUMPANTS ) + return( iCurrentPants ); + else + return( 0 ); +} + +BOOLEAN bBigBodySelected() +{ + if ( fCharacterIsMale ) + return( bBigBody ); + else + return( FALSE ); +} + +BOOLEAN bBadAssSelected() +{ + if ( fCharacterIsMale && bBigBody) + return( bBadAss ); + else + return( FALSE ); +} \ No newline at end of file diff --git a/Laptop/IMP Color Choosing.h b/Laptop/IMP Color Choosing.h new file mode 100644 index 00000000..57a0258c --- /dev/null +++ b/Laptop/IMP Color Choosing.h @@ -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 diff --git a/Laptop/IMP Compile Character.cpp b/Laptop/IMP Compile Character.cpp index ff61e366..47e66563 100644 --- a/Laptop/IMP Compile Character.cpp +++ b/Laptop/IMP Compile Character.cpp @@ -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() ); } diff --git a/Laptop/IMP Disability Trait.cpp b/Laptop/IMP Disability Trait.cpp new file mode 100644 index 00000000..48ce631d --- /dev/null +++ b/Laptop/IMP Disability Trait.cpp @@ -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 ) + { + 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; uiCntuiFlags |= 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; uiCntuiFlags & 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 0 ) && ( iChosenDisabilityTrait() <= IMP_DISABILITIES_NUMBER ) ) + { + bExtraAttributePoints = gGameExternalOptions.iBonusPointsForDisability; + } + else + { + bExtraAttributePoints = 0; + } + + return( bExtraAttributePoints ); +} \ No newline at end of file diff --git a/Laptop/IMP Disability Trait.h b/Laptop/IMP Disability Trait.h new file mode 100644 index 00000000..23b9e043 --- /dev/null +++ b/Laptop/IMP Disability Trait.h @@ -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 diff --git a/Laptop/IMP Finish.cpp b/Laptop/IMP Finish.cpp index 8da9cd1b..5dd49da7 100644 --- a/Laptop/IMP Finish.cpp +++ b/Laptop/IMP Finish.cpp @@ -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 ); diff --git a/Laptop/IMP MainPage.cpp b/Laptop/IMP MainPage.cpp index 13a78749..46cbe90d 100644 --- a/Laptop/IMP MainPage.cpp +++ b/Laptop/IMP MainPage.cpp @@ -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; } } diff --git a/Laptop/IMP Portraits.cpp b/Laptop/IMP Portraits.cpp index a143f725..3887af43 100644 --- a/Laptop/IMP Portraits.cpp +++ b/Laptop/IMP Portraits.cpp @@ -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 ) diff --git a/Laptop/IMP Skill Trait.cpp b/Laptop/IMP Skill Trait.cpp index 4107aa5b..3beae54f 100644 --- a/Laptop/IMP Skill Trait.cpp +++ b/Laptop/IMP Skill Trait.cpp @@ -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 ); diff --git a/Laptop/IMP Text System.cpp b/Laptop/IMP Text System.cpp index 812fd617..72ae62d4 100644 --- a/Laptop/IMP Text System.cpp +++ b/Laptop/IMP Text System.cpp @@ -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); diff --git a/Laptop/IMP Text System.h b/Laptop/IMP Text System.h index ba84db3d..09eebada 100644 --- a/Laptop/IMP Text System.h +++ b/Laptop/IMP Text System.h @@ -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, diff --git a/Laptop/IMP Voices.cpp b/Laptop/IMP Voices.cpp index f57ed6f1..c222ab7c 100644 --- a/Laptop/IMP Voices.cpp +++ b/Laptop/IMP Voices.cpp @@ -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 ) diff --git a/Laptop/IMPVideoObjects.cpp b/Laptop/IMPVideoObjects.cpp index 6f3d6b79..ce730b07 100644 --- a/Laptop/IMPVideoObjects.cpp +++ b/Laptop/IMPVideoObjects.cpp @@ -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; +} diff --git a/Laptop/IMPVideoObjects.h b/Laptop/IMPVideoObjects.h index e1c55e89..4a7fd3cd 100644 --- a/Laptop/IMPVideoObjects.h +++ b/Laptop/IMPVideoObjects.h @@ -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 diff --git a/Laptop/Laptop_2005Express.vcproj b/Laptop/Laptop_2005Express.vcproj index 19272d06..dd23eeaf 100644 --- a/Laptop/Laptop_2005Express.vcproj +++ b/Laptop/Laptop_2005Express.vcproj @@ -1,7 +1,7 @@ + + + + + + @@ -416,6 +428,10 @@ RelativePath=".\IMP Confirm.h" > + + @@ -662,6 +678,18 @@ RelativePath=".\IMP Begin Screen.cpp" > + + + + + + @@ -670,6 +698,10 @@ RelativePath=".\IMP Confirm.cpp" > + + diff --git a/Laptop/Laptop_VS2008.vcproj b/Laptop/Laptop_VS2008.vcproj index a11a56af..21a5e84a 100644 --- a/Laptop/Laptop_VS2008.vcproj +++ b/Laptop/Laptop_VS2008.vcproj @@ -407,6 +407,18 @@ RelativePath="IMP Begin Screen.h" > + + + + + + @@ -415,6 +427,10 @@ RelativePath="IMP Confirm.h" > + + @@ -663,6 +679,18 @@ RelativePath="IMP Begin Screen.cpp" > + + + + + + @@ -671,6 +699,10 @@ RelativePath="IMP Confirm.cpp" > + + diff --git a/Tactical/Interface.cpp b/Tactical/Interface.cpp index 7411cbc7..94defc9e 100644 --- a/Tactical/Interface.cpp +++ b/Tactical/Interface.cpp @@ -1814,7 +1814,8 @@ void DrawSelectedUIAboveGuy( UINT16 usSoldierID ) //jones extern void SoldierTooltip(SOLDIERTYPE*); - if ( gGameExternalOptions.gfAllowSoldierToolTips ) + //if ( gGameExternalOptions.gfAllowSoldierToolTips ) // changed by SANDRO + if ( gGameSettings.fOptions[TOPTION_ALLOW_SOLDIER_TOOLTIPS] ) SoldierTooltip(pSoldier); SetFont( TINYFONT1 ); diff --git a/Utils/Text.h b/Utils/Text.h index 15c5f0ea..79183f86 100644 --- a/Utils/Text.h +++ b/Utils/Text.h @@ -164,6 +164,16 @@ extern STR16 gzCWStrings[]; extern STR16 gzTooltipStrings[]; +// These have been added - SANDRO +extern STR16 pSkillTraitBeginIMPStrings[]; +extern STR16 sgAttributeSelectionText[]; +extern STR16 pCharacterTraitBeginIMPStrings[]; +extern STR16 gzIMPCharacterTraitText[]; +extern STR16 gzIMPColorChoosingText[]; +extern STR16 sColorChoiceExplanationTexts[]; +extern STR16 gzIMPDisabilityTraitText[]; +//**** + enum { ANTIHACKERSTR_EXITGAME, diff --git a/Utils/_ChineseText.cpp b/Utils/_ChineseText.cpp index aa71a19b..3b909844 100644 --- a/Utils/_ChineseText.cpp +++ b/Utils/_ChineseText.cpp @@ -2299,7 +2299,7 @@ STR16 pImpButtonText[] = L"开始", // begin profiling L"性格", // personality section L"属性", // personal stats/attributes section - L"肖像", // the personal portrait selection + L"外表", // changed from portrait - SANDRO L"嗓音%d", // the voice selection L"完成", // done profiling L"重新开始", // start over profiling @@ -2320,15 +2320,16 @@ STR16 pImpButtonText[] = L"注册", // the IMP site registry..when name and gender is selected L"分析...", // analyzing your profile results L"完成", - L"嗓音", + L"性格特征", // Change from "Voice" - SANDRO }; STR16 pExtraIMPStrings[] = { - L"现在嗓音选好了,接着选择您所掌握的技能。", - L"最后选择你的属性完成注册。", - L"开始实际分析,选择您的肖像", - L"接着选择与您最相似的嗓音。", + // These texts have been also slightly changed - SANDRO + L"选择完角色性格特征之后,接着选择您所掌握的技能。", + L"最后调整好你的各项属性值完成整个自创角色过程。", + L"开始实际分析,请先选择头像、声音和颜色。", + L"初步阶段完成,现在开始角色性格特征分析部分。", }; STR16 pFilesTitle[] = @@ -3689,7 +3690,7 @@ STR16 zOptionsToggleText[] = L"单发曳光弹显示曳光", //"Tracer effect for single shot", L"雨声", //"Rain noises", L"允许乌鸦", //"Allow crows", - L"随机产生I.M.P人物性格", //"Random I.M.P personality", + L"允许士兵工具提示", // Changed from "Random I.M.P personality" - SANDRO L"自动存盘", //"Auto save", L"沉默的Skyrider", //"Silent Skyrider", L"降低CPU的使用率", //"Low CPU usage", @@ -3784,7 +3785,7 @@ STR16 zOptionsScreenHelpText[] = L"当打开时,单发曳光弹也显示曳光。", L"当打开时,下雨时能听到雨水音效。", //"When ON, you will hear rain noises when it is raining.", L"当打开时,允许乌鸦出现。", - L"当打开时, I.M.P人物的性格和属性为随机生成。", //"When ON, I.M.P characters will get random personality and attitude.", + L"当启用时,把光标定位在敌人身上并且按下 |A|l|t 键会显示一个提示工具窗口。", // - Changed from random IMP personality - SANDRO L"当打开时,游戏将在玩家回合后自动存盘", L"当打开时,Skyrider将保持沉默。", L"当打开时,游戏将使用更少的CPU资源。", @@ -4788,4 +4789,73 @@ STR16 ChineseSpecString5 = L"%s [%d%%]\n%s %d\n%s %d\n%s %1.1f %s"; STR16 ChineseSpecString6 = L"%s [%d%%]\n%s %d%% (%d/%d)\n%s %d%%\n%s %1.1f %s"; STR16 ChineseSpecString7 = L"%s [%d%%]\n%s %1.1f %s"; +// Following strings added - SANDRO +STR16 pSkillTraitBeginIMPStrings[] = +{ + L"下一页你将会选择你所创造的佣兵的特长,请留意你最多能够选择两种特长,当你只选择一种特长时,该特长将会升级成为专家特长。除了电子和双手持枪之外,这两种是没有专家级的,请特别留意。", + L"你也可以选择什么特长也不要,作为补偿,你会得到更多的创造点数可以增加你的佣兵的各项能力数值。", +}; + +STR16 sgAttributeSelectionText[] = +{ + L"请 按 照 你 对 自 己 的 感 觉 , 调 整 你 的 各 项 能 力 值 。 各 项 能 力 值 的 最 大 值 为 ", + L"IMP能力值和技能概览。", + L"奖励点数 :", + L"开始等级", +}; + +STR16 pCharacterTraitBeginIMPStrings[] = +{ + L"I.M.P. 性格分析", + L"现在开始你个人档案的建立,在第一页会有一些性格特质给你的角色选择,可能你会发觉列出的选择未能完全反映你的性格,但是请至少选择一样你认为最接近你的。", + L"下面来设定你性格上的缺陷,相信自己做一个诚实的孩子吧!每个人至少都有一种缺陷的。真实反映有助于让你的未来雇主更能了解你的潜力,避免给你安排不利的工作环境。", +}; + +STR16 gzIMPCharacterTraitText[]= +{ + L"平常", + L"友善", + L"独行侠", + L"乐观主义者", + L"悲观主义者", + L"有侵略性", + L"傲慢自大", + L"大人物", + L"神憎鬼厌", + L"胆小鬼", + L"I.M.P. 性格特征", +}; + +STR16 gzIMPColorChoosingText[] = +{ + L"I.M.P. 颜色及身型", + L"I.M.P. 颜色", + L"请选择你喜欢的IMP发色、肤色、服装颜色以及体型。", + L"请选择你喜欢的IMP发色、肤色、服装颜色。", + L"点选这里佣兵将单手持大枪", +}; + +STR16 sColorChoiceExplanationTexts[]= +{ + L"头色", + L"肤色", + L"上衣颜色", + L"裤子颜色", + L"一般体型", + L"魔鬼身材", +}; + +STR16 gzIMPDisabilityTraitText[]= +{ + L"身心健全", + L"怕热", + L"神经质", + L"幽闭恐怖症", + L"旱鸭子", + L"怕虫", + L"健忘", + L"神经错乱", + L"I.M.P. 性格缺陷", +}; + #endif //CHINESE diff --git a/Utils/_DutchText.cpp b/Utils/_DutchText.cpp index 1c7822dd..4b6f1f6e 100644 --- a/Utils/_DutchText.cpp +++ b/Utils/_DutchText.cpp @@ -2285,7 +2285,7 @@ STR16 pImpButtonText[] = L"BEGIN", // begin profiling ("BEGIN") L"Persoonlijkheid", // personality section ("Personality") L"Eigenschappen", // personal stats/attributes section ("Attributes") - L"Portret", // the personal portrait selection ("Portrait") + L"Appearance", // changed from portrait - SANDRO L"Stem %d", // the voice selection ("Voice %d") L"OK", // done profiling ("Done") L"Opnieuw", // start over profiling ("Start Over") @@ -2306,15 +2306,16 @@ STR16 pImpButtonText[] = L"Registratie", // the IMP site registry..when name and gender is selected L"Analyseren", // analyzing your profile results L"OK", - L"Stem", // "Voice" + L"Character", // Change from "Voice" - SANDRO }; STR16 pExtraIMPStrings[] = { - L"Selecteer Persoonlijkheid om eigenlijke onderzoek te starten.", - L"Nu het onderzoek compleet is, selecteer je eigenschappen.", - L"Nu de eigenschappen gekozen zijn, kun je verder gaan met de portretselectie.", - L"Selecteer de stem die het best bij je past om het proces te voltooien.", + // These texts have been also slightly changed - SANDRO + L"With your character traits chosen, it is time to select your skills.", + L"To complete the process, select your attributes.", + L"To commence actual profiling, select portrait, voice and colors.", + L"Now that you have completed your appearence choice, procced to character analysis.", }; STR16 pFilesTitle[] = @@ -3676,7 +3677,7 @@ STR16 zOptionsToggleText[] = L"Tracer effect for single shot", L"Rain noises", L"Allow crows", - L"Random I.M.P personality", + L"Show Soldier Tooltips", // Changed from "Random I.M.P personality" - SANDRO L"Auto save", L"Silent Skyrider", L"Low CPU Usage", @@ -3771,7 +3772,7 @@ STR16 zOptionsScreenHelpText[] = L"When ON, tracer effect will be shown for single shots.", L"When ON, you will hear rain noises when it is raining.", L"When ON, the crows are present in game.", - L"When ON, I.M.P characters will get random personality and attitude.", + L"When ON, a tooltip window is shown when pressing |A|l|t and hovering cursor over an enemy.", // - Changed from random IMP personality - SANDRO L"When ON, game will be saved after each players turn.", L"When ON, Skyrider will not talk anymore.", L"When ON, game will run with much lower CPU usage.", @@ -4765,4 +4766,73 @@ STR16 gzMPChatboxText[] = L"Chat: Press 'ENTER' to send of 'ESC' to cancel.", }; +// Following strings added - SANDRO +STR16 pSkillTraitBeginIMPStrings[] = +{ + L"On the next page, you are going to choose your skill traits according to your proffessional specialization as a mercenary. No more than two different traits or one expert trait can be selected. To achieve an expert level on a trait, simply choose only that one trait.", + L"You can also choose only one or even no traits, which will give you a bonus to your attribute points as a compensation. Note that Electronics and Ambidextrous traits cannot be achieved at expert levels, and if you choose one of them only, you will have only one skill trait.", +}; + +STR16 sgAttributeSelectionText[] = +{ + L"Please adjust your physical attributes as comapred to that of an avarage merc. You cannot raise any score above .", + L"I.M.P. Attributes and skills review.", + L"Bonus Pts.:", + L"Starting Level", +}; + +STR16 pCharacterTraitBeginIMPStrings[] = +{ + L"I.M.P. Character Analysis", + L"The analysis of your character is the next step on your profile creation. On the first page you will be shown a list of attitudes to choose. We imagine you could identify yourself with more of them, but here you will be able to pick only one. Choose the one which you feel aligned with mostly. ", + L"The second page enlists possible disabilities you might have. If you suffer from any of these disabilities, choose which one (we believe that everyone has only one such disablement). Be honest, as it is important to inform potential employers of your true condition.", +}; + +STR16 gzIMPCharacterTraitText[]= +{ + L"Normal", + L"Friendly", + L"Loner", + L"Optimist", + L"Pessimist", + L"Aggressive", + L"Arrogant", + L"Big Shot", + L"Asshole", + L"Coward", + L"I.M.P. Character Traits", +}; + +STR16 gzIMPColorChoosingText[] = +{ + L"I.M.P. Colors and Body Type", + L"I.M.P. Colors", + L"Please select the respective colors of your skin, hair and clothing. And select what body type you have.", + L"Please select the respective colors of your skin, hair and clothing.", + L"Toggle this to use alternative rifle holding.", +}; + +STR16 sColorChoiceExplanationTexts[]= +{ + L"Hair Color", + L"Skin Color", + L"Shirt Color", + L"Pants Color", + L"Normal Body", + L"Big Body", +}; + +STR16 gzIMPDisabilityTraitText[]= +{ + L"No Disability", + L"Heat Intolerant", + L"Nervous", + L"Claustrophobic", + L"Nonswimmer", + L"Fear of Insects", + L"Forgetful", + L"Psychotic", + L"I.M.P. Disabilities", +}; + #endif //DUTCH diff --git a/Utils/_EnglishText.cpp b/Utils/_EnglishText.cpp index bcf8d02c..3a6fa72a 100644 --- a/Utils/_EnglishText.cpp +++ b/Utils/_EnglishText.cpp @@ -2299,7 +2299,7 @@ STR16 pImpButtonText[] = L"BEGIN", // begin profiling L"Skills", // personality section L"Attributes", // personal stats/attributes section - L"Portrait", // the personal portrait selection + L"Appearance", // changed from portrait - SANDRO L"Voice %d", // the voice selection L"Done", // done profiling L"Start Over", // start over profiling @@ -2320,15 +2320,16 @@ STR16 pImpButtonText[] = L"Registry", // the IMP site registry..when name and gender is selected L"Analyzing", // analyzing your profile results L"OK", - L"Voice", + L"Character", // Change from "Voice" - SANDRO }; STR16 pExtraIMPStrings[] = { - L"With the voice now selected, it is time to select your skills.", + // These texts have been also slightly changed - SANDRO + L"With your character traits chosen, it is time to select your skills.", L"To complete the process, select your attributes.", - L"To commence actual profiling, select portrait.", - L"Now that you have completet your portrait choice, select the voice sample that best fits you.", + L"To commence actual profiling, select portrait, voice and colors.", + L"Now that you have completed your appearence choice, procced to character analysis.", }; STR16 pFilesTitle[] = @@ -3689,7 +3690,7 @@ STR16 zOptionsToggleText[] = L"Tracer effect for single shot", L"Rain noises", L"Allow crows", - L"Random I.M.P personality", + L"Show Soldier Tooltips", // Changed from "Random I.M.P personality" - SANDRO L"Auto save", L"Silent Skyrider", L"Low CPU usage", @@ -3784,7 +3785,7 @@ STR16 zOptionsScreenHelpText[] = L"When ON, tracer effect will be shown for single shots.", L"When ON, you will hear rain noises when it is raining.", L"When ON, the crows are present in game.", - L"When ON, I.M.P characters will get random personality and attitude.", + L"When ON, a tooltip window is shown when pressing |A|l|t and hovering cursor over an enemy.", // - Changed from random IMP personality - SANDRO L"When ON, game will be saved after each players turn.", L"When ON, Skyrider will not talk anymore.", L"When ON, game will run with much lower CPU usage.", @@ -4778,4 +4779,74 @@ STR16 gzMPChatboxText[] = L"Multiplayer Chat", L"Chat: Press 'ENTER' to send of 'ESC' to cancel.", }; + +// Following strings added - SANDRO +STR16 pSkillTraitBeginIMPStrings[] = +{ + L"On the next page, you are going to choose your skill traits according to your proffessional specialization as a mercenary. No more than two different traits or one expert trait can be selected. To achieve an expert level on a trait, simply choose only that one trait.", + L"You can also choose only one or even no traits, which will give you a bonus to your attribute points as a compensation. Note that Electronics and Ambidextrous traits cannot be achieved at expert levels, and if you choose one of them only, you will have only one skill trait.", +}; + +STR16 sgAttributeSelectionText[] = +{ + L"Please adjust your physical attributes as comapred to that of an avarage merc. You cannot raise any score above .", + L"I.M.P. Attributes and skills review.", + L"Bonus Pts.:", + L"Starting Level", +}; + +STR16 pCharacterTraitBeginIMPStrings[] = +{ + L"I.M.P. Character Analysis", + L"The analysis of your character is the next step on your profile creation. On the first page you will be shown a list of attitudes to choose. We imagine you could identify yourself with more of them, but here you will be able to pick only one. Choose the one which you feel aligned with mostly. ", + L"The second page enlists possible disabilities you might have. If you suffer from any of these disabilities, choose which one (we believe that everyone has only one such disablement). Be honest, as it is important to inform potential employers of your true condition.", +}; + +STR16 gzIMPCharacterTraitText[]= +{ + L"Normal", + L"Friendly", + L"Loner", + L"Optimist", + L"Pessimist", + L"Aggressive", + L"Arrogant", + L"Big Shot", + L"Asshole", + L"Coward", + L"I.M.P. Character Traits", +}; + +STR16 gzIMPColorChoosingText[] = +{ + L"I.M.P. Colors and Body Type", + L"I.M.P. Colors", + L"Please select the respective colors of your skin, hair and clothing. And select what body type you have.", + L"Please select the respective colors of your skin, hair and clothing.", + L"Toggle this to use alternative rifle holding.", +}; + +STR16 sColorChoiceExplanationTexts[]= +{ + L"Hair Color", + L"Skin Color", + L"Shirt Color", + L"Pants Color", + L"Normal Body", + L"Big Body", +}; + +STR16 gzIMPDisabilityTraitText[]= +{ + L"No Disability", + L"Heat Intolerant", + L"Nervous", + L"Claustrophobic", + L"Nonswimmer", + L"Fear of Insects", + L"Forgetful", + L"Psychotic", + L"I.M.P. Disabilities", +}; + #endif //ENGLISH diff --git a/Utils/_FrenchText.cpp b/Utils/_FrenchText.cpp index fcff1eb3..4825e547 100644 --- a/Utils/_FrenchText.cpp +++ b/Utils/_FrenchText.cpp @@ -2300,7 +2300,7 @@ STR16 pImpButtonText[] = L"COMMENCER", // begin profiling L"Personnalit", // personality section L"Caractristiques", // personal stats/attributes section - L"Portrait", // the personal portrait selection + L"Appearance", // changed from portrait - SANDRO L"Voix %d", // the voice selection L"OK", // done profiling L"Recommencer", // start over profiling @@ -2321,15 +2321,16 @@ STR16 pImpButtonText[] = L"Registre", // the IMP site registry..when name and gender is selected L"Analyse", // analyzing your profile results L"OK", - L"Voix", + L"Character", // Change from "Voice" - SANDRO }; STR16 pExtraIMPStrings[] = { - L"Pour lancer l'analyse, cliquez sur Personnalit.", - L"Cliquez maintenant sur Caractristiques.", - L"Passons maintenant la galerie de portraits.", - L"Pour que l'analyse soit complte, choisissez une voix.", + // These texts have been also slightly changed - SANDRO + L"With your character traits chosen, it is time to select your skills.", + L"To complete the process, select your attributes.", + L"To commence actual profiling, select portrait, voice and colors.", + L"Now that you have completed your appearence choice, procced to character analysis.", }; STR16 pFilesTitle[] = @@ -3690,7 +3691,7 @@ STR16 zOptionsToggleText[] = L"Balle Traante pour tir simple", L"Son de pluie", L"Afficher corbeaux", - L"Personnalit I.M.P alatiore", + L"Show Soldier Tooltips", // Changed from "Random I.M.P personality" - SANDRO L"Sauvegarde auto", L"Silence Skyrider !", L"Faible consommation processeur", @@ -3785,7 +3786,7 @@ STR16 zOptionsScreenHelpText[] = L"Si activ, les effets de traantes sont affichs pour les tir simples.", L"Si activ, le son de pluie est audible quand il pleut.", L"Si activ, les corbeaux sont prsents dans le jeu.", - L"Si activ, le(s) personnage(s) IMP sont affects d'une personnalit alatoire.", + L"When ON, a tooltip window is shown when pressing |A|l|t and hovering cursor over an enemy.", // - Changed from random IMP personality - SANDRO L"Si activ, le jeu est sauvegard chaque nouveau tour joueur.", L"Si activ, les confirmations insistantes de Skyrider cessent.", L"Si activ, le jeu restreint l'utilisation du processeur.", @@ -4779,4 +4780,73 @@ STR16 gzMPChatboxText[] = L"Chat: Press 'ENTER' to send of 'ESC' to cancel.", }; +// Following strings added - SANDRO +STR16 pSkillTraitBeginIMPStrings[] = +{ + L"On the next page, you are going to choose your skill traits according to your proffessional specialization as a mercenary. No more than two different traits or one expert trait can be selected. To achieve an expert level on a trait, simply choose only that one trait.", + L"You can also choose only one or even no traits, which will give you a bonus to your attribute points as a compensation. Note that Electronics and Ambidextrous traits cannot be achieved at expert levels, and if you choose one of them only, you will have only one skill trait.", +}; + +STR16 sgAttributeSelectionText[] = +{ + L"Please adjust your physical attributes as comapred to that of an avarage merc. You cannot raise any score above .", + L"I.M.P. Attributes and skills review.", + L"Bonus Pts.:", + L"Starting Level", +}; + +STR16 pCharacterTraitBeginIMPStrings[] = +{ + L"I.M.P. Character Analysis", + L"The analysis of your character is the next step on your profile creation. On the first page you will be shown a list of attitudes to choose. We imagine you could identify yourself with more of them, but here you will be able to pick only one. Choose the one which you feel aligned with mostly. ", + L"The second page enlists possible disabilities you might have. If you suffer from any of these disabilities, choose which one (we believe that everyone has only one such disablement). Be honest, as it is important to inform potential employers of your true condition.", +}; + +STR16 gzIMPCharacterTraitText[]= +{ + L"Normal", + L"Friendly", + L"Loner", + L"Optimist", + L"Pessimist", + L"Aggressive", + L"Arrogant", + L"Big Shot", + L"Asshole", + L"Coward", + L"I.M.P. Character Traits", +}; + +STR16 gzIMPColorChoosingText[] = +{ + L"I.M.P. Colors and Body Type", + L"I.M.P. Colors", + L"Please select the respective colors of your skin, hair and clothing. And select what body type you have.", + L"Please select the respective colors of your skin, hair and clothing.", + L"Toggle this to use alternative rifle holding.", +}; + +STR16 sColorChoiceExplanationTexts[]= +{ + L"Hair Color", + L"Skin Color", + L"Shirt Color", + L"Pants Color", + L"Normal Body", + L"Big Body", +}; + +STR16 gzIMPDisabilityTraitText[]= +{ + L"No Disability", + L"Heat Intolerant", + L"Nervous", + L"Claustrophobic", + L"Nonswimmer", + L"Fear of Insects", + L"Forgetful", + L"Psychotic", + L"I.M.P. Disabilities", +}; + #endif //FRENCH diff --git a/Utils/_GermanText.cpp b/Utils/_GermanText.cpp index 90332654..95bfdc71 100644 --- a/Utils/_GermanText.cpp +++ b/Utils/_GermanText.cpp @@ -2213,7 +2213,7 @@ STR16 pImpButtonText[] = L"BEGINNEN", // begin profiling L"Persnlichkeiten", // personality section L"Eigenschaften", // personal stats/attributes section - L"Portrt", // the personal portrait selection + L"Aussehen", // changed from portrait - SANDRO L"Stimme %d", // the voice selection L"Fertig", // done profiling L"Von vorne anfangen", // start over profiling @@ -2234,15 +2234,16 @@ STR16 pImpButtonText[] = L"Registrieren", // the IMP site registry..when name and gender is selected L"Analyse wird durchgefhrt", // analyzing your profile results L"OK", - L"Stimme", + L"Charakter", // Change from "Voice" - SANDRO }; STR16 pExtraIMPStrings[] = { - L"Nachdem Sie nun die Stimme bestimmt haben, ist es an der Zeit die Persnlichkeiten auszuwhlen.", - L"Whlen Sie abschlieend Ihre Eigenschaften aus.", - L"Um mit der Evaluierung zu beginnen whlen Sie ein Portrt aus.", - L"Nachdem Sie nun Ihr Portrt ausgewhlt haben, whlen Sie die Stimme aus, die Ihnen am nchsten kommt.", + // These texts have been also slightly changed - SANDRO + L"Nach Festlegung Ihres Charakters, knnen Sie Ihre Fertigkeit(en) auswhlen.", + L"Um die Evaluation erfolgreich abzuschlieen, bestimmen Sie Ihre Eigenschaften.", + L"Um Ihr Profil zu erstellen, whlen Sie ein(e) Portrait, Stimme aus und definieren Erscheinung und ueres.", + L"Jetzt, da Sie Ihr Aussehen bestimmt haben, fahren wir mit der Charakter-Analyse fort.", }; STR16 pFilesTitle[] = @@ -3495,14 +3496,14 @@ STR16 zOptionsToggleText[] = L"Tracereffekte fr Einzelschsse", L"Regengerusche", L"Krhen erlauben", - L"Zufllige B.S.E Persnlichkeiten", + L"Tooltips ber Gegner", // Changed from "Random I.M.P personality" - SANDRO L"Automatisch speichern", L"Stummer Skyrider", L"Niedrige CPU Belastung", L"Erw. Gegenstandsinfo (EDB)", L"Erzwungener Runden-Modus", // add forced turn mode L"--Cheat Mode Optionen--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, - L"Erwzinge Bobby Ray Lieferungen", // force all pending Bobby Ray shipments + L"Erzwinge Bobby Ray Lieferungen", // force all pending Bobby Ray shipments L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END L"--DEBUG OPTIONEN--", // an example options screen options header (pure text) L"ALLE Einstellungen rcksetzen", // failsafe show/hide option to reset all options @@ -3590,7 +3591,7 @@ STR16 zOptionsScreenHelpText[] = L"Wenn diese Funktion aktiviert ist, wird Tracereffekt auch fr Einzelschsse angezeigt.", L"Wenn diese Funktion aktiviert ist, werden Regengerusche hrbar, sobald es regnet.", L"Wenn diese Funktion aktiviert ist, sind Krhen im Spiel vorhanden.", - L"Wenn diese Funktion aktiviert ist, erhalten B.S.E Charaktere zufllige Persnlichkeiten und Gesinnungen.", + L"Wenn diese Funktion aktiviert ist, erscheint ein Tooltip Fenster ber dem Gegner, bei gleichzeitigem Drcken von |A|l|t und Halten des Cursors ber dem Feind.", // - Changed from random IMP personality - SANDRO L"Wenn diese Funktion aktiviert ist, wird nach jeder Runde automatisch gespeichert.", L"Wenn diese Funktion aktiviert ist, wird Skyrider nichts mehr sprechen.", L"Wenn diese Funktion aktiviert ist, wird das Spiel mit viel geringerer CPU Belastung laufen.", @@ -4572,4 +4573,74 @@ STR16 gzMPChatboxText[] = L"Chat: Drcke 'ENTER' zum Senden oder 'ESC' zum Verlassen.", }; +// Following strings added - SANDRO +// Translated by Scheinworld +STR16 pSkillTraitBeginIMPStrings[] = +{ + L"Auf der nchsten Seite knnen Sie die Fertigkeit(en) angeben, durch die Sie sich auszeichnen. Mehr als zwei verschiedene Fertigkeiten oder eine, die Sie in diesem Gebiet automatisch als Experten ausweist, knnen bzw. kann nicht gewhlt werden.", + L"Whlen Sie nur eine oder gar keine Fertigkeit aus, so erhalten Sie einen Bonus in Form von zustzlichen Eigenschaftspunkten. Bitte beachten Sie, dass die Fertigkeiten: 'Elektronik' und 'Beidhndig geschickt' ber keinen Expertenstatus verfgen.", +}; + +STR16 sgAttributeSelectionText[] = +{ + L"Bitte verteilen Sie nun Ihre Bonuspunkte auf die gewnschten Attribute. Der Wert kann dabei nicht hher sein als .", + L"B.S.E. Eigenschaften und Fhigkeiten.", + L"Bonus Pkt.:", + L"Anfangs-Level", +}; + +STR16 pCharacterTraitBeginIMPStrings[] = +{ + L"B.S.E. Charakter-Analyse", + L"Die Charakter-Analyse ist der nchste Schritt bei der Erstellung Ihres Profils. Auf der nun folgenden Seite steht eine Vielzahl von Charaktereigenschaften zur Auswahl. Wir knnen uns vorstellen, dass Sie sich mit mehreren verbunden fhlen, entscheiden Sie sich daher bitte fr die zutreffendste. ", + L"Die zweite Seite dient der Erfassung Ihrer Unzulnglichkeiten, die Sie mglicherweise haben (wir glauben, dass jeder Mensch nur eine groe Schwche hat). Bitte seien Sie dabei ehrlich, damit potentielle Arbeitgeber ber Ihr zuknftiges Einsatzfeld informiert werden knnen.", +}; + +STR16 gzIMPCharacterTraitText[]= +{ + L"Normal", + L"Freundlich", + L"Einzelgnger", + L"Optimist", + L"Pessimist", + L"Aggressiv", + L"Arrogant", + L"Bonze", + L"Arschloch", + L"Feigling", + L"Charaktereigenschaften", +}; + +STR16 gzIMPColorChoosingText[] = +{ + L"Erscheinung und ueres", + L"Hautfarbe", + L"Bitte geben Sie Ihre Haar- und Hautfarbe, Ihre Statur, sowie Ihre bevorzugten Kleidungsfarben an.", + L"Bitte geben Sie Ihre Haar- und Hautfarbe, sowie Ihre bevorzugten Kleidungsfarben an.", + L"Eingeschaltet, wird ein Gewehr einhndig abgefeuert.", +}; + +STR16 sColorChoiceExplanationTexts[]= +{ + L"Haarfarbe", + L"Hautfarbe", + L"Hemdfarbe", + L"Hosenfarbe", + L"Normale Statur", + L"Krftige Statur", +}; + +STR16 gzIMPDisabilityTraitText[]= +{ + L"Keine Schwche", + L"Hitzeempfindlichkeit", + L"Nervositt", + L"Klaustrophobie", + L"Nichtschwimmer", + L"Angst vor Insekten", + L"Vergesslichkeit", + L"Psychopath", + L"Ihre grte Schwche", +}; + #endif //GERMAN diff --git a/Utils/_ItalianText.cpp b/Utils/_ItalianText.cpp index ea0a1a04..38f77d83 100644 --- a/Utils/_ItalianText.cpp +++ b/Utils/_ItalianText.cpp @@ -2281,7 +2281,7 @@ STR16 pImpButtonText[] = L"INIZIO", // begin profiling L"Personalit", // personality section L"Attributi", // personal stats/attributes section - L"Ritratto", // the personal portrait selection + L"Appearance", // changed from portrait - SANDRO L"Voce %d", // the voice selection L"Fine", // done profiling L"Ricomincio", // start over profiling @@ -2302,15 +2302,16 @@ STR16 pImpButtonText[] = L"Immatricolazione", // the IMP site registry..when name and gender is selected L"Analisi", // analyzing your profile results L"OK", - L"Voce", + L"Character", // Change from "Voice" - SANDRO }; STR16 pExtraIMPStrings[] = { - L"Per completare il profilo attuale, seleziona 'Personalit'.", - L"Ora che hai completato la Personalit, seleziona i tuoi attributi.", - L"Con gli attributi ora assegnati, puoi procedere alla selezione del ritratto.", - L"Per completare il processo, seleziona il campione della voce che pi ti piace.", + // These texts have been also slightly changed - SANDRO + L"With your character traits chosen, it is time to select your skills.", + L"To complete the process, select your attributes.", + L"To commence actual profiling, select portrait, voice and colors.", + L"Now that you have completed your appearence choice, procced to character analysis.", }; STR16 pFilesTitle[] = @@ -3669,7 +3670,7 @@ STR16 zOptionsToggleText[] = L"Tracer effect for single shot", L"Rain noises", L"Allow crows", - L"Random I.M.P personality", + L"Show Soldier Tooltips", // Changed from "Random I.M.P personality" - SANDRO L"Auto save", L"Silent Skyrider", L"Low CPU usage", @@ -3764,7 +3765,7 @@ STR16 zOptionsScreenHelpText[] = L"When ON, tracer effect will be shown for single shots.", L"When ON, you will hear rain noises when it is raining.", L"When ON, the crows are present in game.", - L"When ON, I.M.P characters will get random personality and attitude.", + L"When ON, a tooltip window is shown when pressing |A|l|t and hovering cursor over an enemy.", // - Changed from random IMP personality - SANDRO L"When ON, game will be saved after each players turn.", L"When ON, Skyrider will not talk anymore.", L"When ON, game will run with much lower CPU usage.", @@ -4763,4 +4764,73 @@ STR16 gzMPChatboxText[] = L"Chat: Press 'ENTER' to send of 'ESC' to cancel.", }; +// Following strings added - SANDRO +STR16 pSkillTraitBeginIMPStrings[] = +{ + L"On the next page, you are going to choose your skill traits according to your proffessional specialization as a mercenary. No more than two different traits or one expert trait can be selected. To achieve an expert level on a trait, simply choose only that one trait.", + L"You can also choose only one or even no traits, which will give you a bonus to your attribute points as a compensation. Note that Electronics and Ambidextrous traits cannot be achieved at expert levels, and if you choose one of them only, you will have only one skill trait.", +}; + +STR16 sgAttributeSelectionText[] = +{ + L"Please adjust your physical attributes as comapred to that of an avarage merc. You cannot raise any score above .", + L"I.M.P. Attributes and skills review.", + L"Bonus Pts.:", + L"Starting Level", +}; + +STR16 pCharacterTraitBeginIMPStrings[] = +{ + L"I.M.P. Character Analysis", + L"The analysis of your character is the next step on your profile creation. On the first page you will be shown a list of attitudes to choose. We imagine you could identify yourself with more of them, but here you will be able to pick only one. Choose the one which you feel aligned with mostly. ", + L"The second page enlists possible disabilities you might have. If you suffer from any of these disabilities, choose which one (we believe that everyone has only one such disablement). Be honest, as it is important to inform potential employers of your true condition.", +}; + +STR16 gzIMPCharacterTraitText[]= +{ + L"Normal", + L"Friendly", + L"Loner", + L"Optimist", + L"Pessimist", + L"Aggressive", + L"Arrogant", + L"Big Shot", + L"Asshole", + L"Coward", + L"I.M.P. Character Traits", +}; + +STR16 gzIMPColorChoosingText[] = +{ + L"I.M.P. Colors and Body Type", + L"I.M.P. Colors", + L"Please select the respective colors of your skin, hair and clothing. And select what body type you have.", + L"Please select the respective colors of your skin, hair and clothing.", + L"Toggle this to use alternative rifle holding.", +}; + +STR16 sColorChoiceExplanationTexts[]= +{ + L"Hair Color", + L"Skin Color", + L"Shirt Color", + L"Pants Color", + L"Normal Body", + L"Big Body", +}; + +STR16 gzIMPDisabilityTraitText[]= +{ + L"No Disability", + L"Heat Intolerant", + L"Nervous", + L"Claustrophobic", + L"Nonswimmer", + L"Fear of Insects", + L"Forgetful", + L"Psychotic", + L"I.M.P. Disabilities", +}; + #endif //ITALIAN diff --git a/Utils/_PolishText.cpp b/Utils/_PolishText.cpp index 5d87556e..df521f19 100644 --- a/Utils/_PolishText.cpp +++ b/Utils/_PolishText.cpp @@ -2292,7 +2292,7 @@ STR16 pImpButtonText[] = L"ZACZNIJ", // begin profiling L"Umiejtnoci", // personality section L"Atrybuty", // personal stats/attributes section - L"Portret", // the personal portrait selection + L"Appearance", // changed from portrait - SANDRO L"Gos %d", // the voice selection L"Gotowe", // done profiling L"Zacznij od pocztku", // start over profiling @@ -2313,15 +2313,16 @@ STR16 pImpButtonText[] = L"Rejestr", // the IMP site registry..when name and gender is selected L"Analizuj...", // analyzing your profile results L"OK", - L"Gos", + L"Character", // Change from "Voice" - SANDRO }; STR16 pExtraIMPStrings[] = { - L"Aby zacz analiz profilu, wybierz osobowo.", - L"Teraz okrel swoje atrybuty.", - L"Teraz moesz przystpi do wyboru portretu.", - L"Aby zakoczy proces, wybierz prbk gosu, ktra ci najbardziej odpowiada." + // These texts have been also slightly changed - SANDRO + L"With your character traits chosen, it is time to select your skills.", + L"To complete the process, select your attributes.", + L"To commence actual profiling, select portrait, voice and colors.", + L"Now that you have completed your appearence choice, procced to character analysis.", }; STR16 pFilesTitle[] = @@ -3682,7 +3683,7 @@ STR16 zOptionsToggleText[] = L"Efekt smugowy dla poj. strzau", L"Odgosy padajcego deszczu", L"Pokazuj wrony", - L"Losowa osobowo postaci I.M.P.", + L"Show Soldier Tooltips", // Changed from "Random I.M.P personality" - SANDRO L"Automatyczny zapis", L"Cichy Skyrider", L"Niskie obcienie procesora", @@ -3777,7 +3778,7 @@ STR16 zOptionsScreenHelpText[] = L"Jeli WCZONE, pojedynczy strza bdzie z efektem pocisku smugowego", L"Jeli WCZONE, bdziesz sysza padajcy deszcz.", L"Jeli WCZONE, w grze pojawia si bd wrony.", - L"Jeli WCZONE, postacie I.M.P. bd otrzymywa losow osobowo i postaw.", + L"When ON, a tooltip window is shown when pressing |A|l|t and hovering cursor over an enemy.", // - Changed from random IMP personality - SANDRO L"Jeli WCZONE, gra bdzie zapisywana kadorazowo po zakoczeniu tury gracza.", L"Jeli WCZONE, Skyrider nie bdzie nic mwi.", L"Jeli WCZONE, gra bdzie obciaa procesor w mniejszym stopniu.", @@ -4768,4 +4769,73 @@ STR16 gzMPChatboxText[] = L"Chat: Press 'ENTER' to send of 'ESC' to cancel.", }; +// Following strings added - SANDRO +STR16 pSkillTraitBeginIMPStrings[] = +{ + L"On the next page, you are going to choose your skill traits according to your proffessional specialization as a mercenary. No more than two different traits or one expert trait can be selected. To achieve an expert level on a trait, simply choose only that one trait.", + L"You can also choose only one or even no traits, which will give you a bonus to your attribute points as a compensation. Note that Electronics and Ambidextrous traits cannot be achieved at expert levels, and if you choose one of them only, you will have only one skill trait.", +}; + +STR16 sgAttributeSelectionText[] = +{ + L"Please adjust your physical attributes as comapred to that of an avarage merc. You cannot raise any score above .", + L"I.M.P. Attributes and skills review.", + L"Bonus Pts.:", + L"Starting Level", +}; + +STR16 pCharacterTraitBeginIMPStrings[] = +{ + L"I.M.P. Character Analysis", + L"The analysis of your character is the next step on your profile creation. On the first page you will be shown a list of attitudes to choose. We imagine you could identify yourself with more of them, but here you will be able to pick only one. Choose the one which you feel aligned with mostly. ", + L"The second page enlists possible disabilities you might have. If you suffer from any of these disabilities, choose which one (we believe that everyone has only one such disablement). Be honest, as it is important to inform potential employers of your true condition.", +}; + +STR16 gzIMPCharacterTraitText[]= +{ + L"Normal", + L"Friendly", + L"Loner", + L"Optimist", + L"Pessimist", + L"Aggressive", + L"Arrogant", + L"Big Shot", + L"Asshole", + L"Coward", + L"I.M.P. Character Traits", +}; + +STR16 gzIMPColorChoosingText[] = +{ + L"I.M.P. Colors and Body Type", + L"I.M.P. Colors", + L"Please select the respective colors of your skin, hair and clothing. And select what body type you have.", + L"Please select the respective colors of your skin, hair and clothing.", + L"Toggle this to use alternative rifle holding.", +}; + +STR16 sColorChoiceExplanationTexts[]= +{ + L"Hair Color", + L"Skin Color", + L"Shirt Color", + L"Pants Color", + L"Normal Body", + L"Big Body", +}; + +STR16 gzIMPDisabilityTraitText[]= +{ + L"No Disability", + L"Heat Intolerant", + L"Nervous", + L"Claustrophobic", + L"Nonswimmer", + L"Fear of Insects", + L"Forgetful", + L"Psychotic", + L"I.M.P. Disabilities", +}; + #endif //POLISH diff --git a/Utils/_RussianText.cpp b/Utils/_RussianText.cpp index ec4e4ea5..b298a889 100644 --- a/Utils/_RussianText.cpp +++ b/Utils/_RussianText.cpp @@ -2295,7 +2295,7 @@ STR16 pImpButtonText[] = L"", // begin profiling L"", // personality section L"", // personal stats/attributes section - L"", // the personal portrait selection + L"Appearance", // changed from portrait - SANDRO L": %d", // the voice selection L"", // done profiling L" ", // start over profiling @@ -2316,15 +2316,16 @@ STR16 pImpButtonText[] = L"", // the IMP site registry..when name and gender is selected L" ", // analyzing your profile results L"", - L"", + L"Character", // Change from "Voice" - SANDRO }; STR16 pExtraIMPStrings[] = { - L" .", - L" . , .", - L" , . .", - L", , .", + // These texts have been also slightly changed - SANDRO + L"With your character traits chosen, it is time to select your skills.", + L"To complete the process, select your attributes.", + L"To commence actual profiling, select portrait, voice and colors.", + L"Now that you have completed your appearence choice, procced to character analysis.", }; STR16 pFilesTitle[] = @@ -3684,7 +3685,7 @@ STR16 zOptionsToggleText[] = L" ", L" ", L"", - L" I.M.P ", + L"Show Soldier Tooltips", // Changed from "Random I.M.P personality" - SANDRO L" ", L" ", L" ", @@ -3779,7 +3780,7 @@ STR16 zOptionsScreenHelpText[] = L" , \n .", L" , .", L" , .", - L" , I.M.P \n .", + L"When ON, a tooltip window is shown when pressing |A|l|t and hovering cursor over an enemy.", // - Changed from random IMP personality - SANDRO L" , \n .", L" , \n .", L" , \n .", @@ -4773,4 +4774,73 @@ STR16 gzMPChatboxText[] = L": |||| , |||| .", //Chat: press 'ENTER' to send of 'ESC' to cancel }; +// Following strings added - SANDRO +STR16 pSkillTraitBeginIMPStrings[] = +{ + L"On the next page, you are going to choose your skill traits according to your proffessional specialization as a mercenary. No more than two different traits or one expert trait can be selected. To achieve an expert level on a trait, simply choose only that one trait.", + L"You can also choose only one or even no traits, which will give you a bonus to your attribute points as a compensation. Note that Electronics and Ambidextrous traits cannot be achieved at expert levels, and if you choose one of them only, you will have only one skill trait.", +}; + +STR16 sgAttributeSelectionText[] = +{ + L"Please adjust your physical attributes as comapred to that of an avarage merc. You cannot raise any score above .", + L"I.M.P. Attributes and skills review.", + L"Bonus Pts.:", + L"Starting Level", +}; + +STR16 pCharacterTraitBeginIMPStrings[] = +{ + L"I.M.P. Character Analysis", + L"The analysis of your character is the next step on your profile creation. On the first page you will be shown a list of attitudes to choose. We imagine you could identify yourself with more of them, but here you will be able to pick only one. Choose the one which you feel aligned with mostly. ", + L"The second page enlists possible disabilities you might have. If you suffer from any of these disabilities, choose which one (we believe that everyone has only one such disablement). Be honest, as it is important to inform potential employers of your true condition.", +}; + +STR16 gzIMPCharacterTraitText[]= +{ + L"Normal", + L"Friendly", + L"Loner", + L"Optimist", + L"Pessimist", + L"Aggressive", + L"Arrogant", + L"Big Shot", + L"Asshole", + L"Coward", + L"I.M.P. Character Traits", +}; + +STR16 gzIMPColorChoosingText[] = +{ + L"I.M.P. Colors and Body Type", + L"I.M.P. Colors", + L"Please select the respective colors of your skin, hair and clothing. And select what body type you have.", + L"Please select the respective colors of your skin, hair and clothing.", + L"Toggle this to use alternative rifle holding.", +}; + +STR16 sColorChoiceExplanationTexts[]= +{ + L"Hair Color", + L"Skin Color", + L"Shirt Color", + L"Pants Color", + L"Normal Body", + L"Big Body", +}; + +STR16 gzIMPDisabilityTraitText[]= +{ + L"No Disability", + L"Heat Intolerant", + L"Nervous", + L"Claustrophobic", + L"Nonswimmer", + L"Fear of Insects", + L"Forgetful", + L"Psychotic", + L"I.M.P. Disabilities", +}; + #endif //RUSSIAN diff --git a/Utils/_TaiwaneseText.cpp b/Utils/_TaiwaneseText.cpp index 2b3990b5..4491ca9d 100644 --- a/Utils/_TaiwaneseText.cpp +++ b/Utils/_TaiwaneseText.cpp @@ -2298,7 +2298,7 @@ STR16 pImpButtonText[] = L"BEGIN", // begin profiling L"Skills", // personality section L"Attributes", // personal stats/attributes section - L"Portrait", // the personal portrait selection + L"Appearance", // changed from portrait - SANDRO L"Voice %d", // the voice selection L"Done", // done profiling L"Start Over", // start over profiling @@ -2319,15 +2319,16 @@ STR16 pImpButtonText[] = L"Registry", // the IMP site registry..when name and gender is selected L"Analyzing", // analyzing your profile results L"OK", - L"Voice", + L"Character", // Change from "Voice" - SANDRO }; STR16 pExtraIMPStrings[] = { - L"With the voice now selected, it is time to select your skills.", + // These texts have been also slightly changed - SANDRO + L"With your character traits chosen, it is time to select your skills.", L"To complete the process, select your attributes.", - L"To commence actual profiling, select portrait.", - L"Now that you have completet your portrait choice, select the voice sample that best fits you.", + L"To commence actual profiling, select portrait, voice and colors.", + L"Now that you have completed your appearence choice, procced to character analysis.", }; STR16 pFilesTitle[] = @@ -3688,7 +3689,7 @@ STR16 zOptionsToggleText[] = L"Tracer effect for single shot", L"Rain noises", L"Allow crows", - L"Random I.M.P personality", + L"Show Soldier Tooltips", // Changed from "Random I.M.P personality" - SANDRO L"Auto save", L"Silent Skyrider", L"Low CPU usage", @@ -3783,7 +3784,7 @@ STR16 zOptionsScreenHelpText[] = L"When ON, tracer effect will be shown for single shots.", L"When ON, you will hear rain noises when it is raining.", L"When ON, the crows are present in game.", - L"When ON, I.M.P characters will get random personality and attitude.", + L"When ON, a tooltip window is shown when pressing |A|l|t and hovering cursor over an enemy.", // - Changed from random IMP personality - SANDRO L"When ON, game will be saved after each players turn.", L"When ON, Skyrider will not talk anymore.", L"When ON, game will run with much lower CPU usage.", @@ -4776,4 +4777,73 @@ STR16 gzMPChatboxText[] = L"Chat: Press 'ENTER' to send of 'ESC' to cancel.", }; +// Following strings added - SANDRO +STR16 pSkillTraitBeginIMPStrings[] = +{ + L"On the next page, you are going to choose your skill traits according to your proffessional specialization as a mercenary. No more than two different traits or one expert trait can be selected. To achieve an expert level on a trait, simply choose only that one trait.", + L"You can also choose only one or even no traits, which will give you a bonus to your attribute points as a compensation. Note that Electronics and Ambidextrous traits cannot be achieved at expert levels, and if you choose one of them only, you will have only one skill trait.", +}; + +STR16 sgAttributeSelectionText[] = +{ + L"Please adjust your physical attributes as comapred to that of an avarage merc. You cannot raise any score above .", + L"I.M.P. Attributes and skills review.", + L"Bonus Pts.:", + L"Starting Level", +}; + +STR16 pCharacterTraitBeginIMPStrings[] = +{ + L"I.M.P. Character Analysis", + L"The analysis of your character is the next step on your profile creation. On the first page you will be shown a list of attitudes to choose. We imagine you could identify yourself with more of them, but here you will be able to pick only one. Choose the one which you feel aligned with mostly. ", + L"The second page enlists possible disabilities you might have. If you suffer from any of these disabilities, choose which one (we believe that everyone has only one such disablement). Be honest, as it is important to inform potential employers of your true condition.", +}; + +STR16 gzIMPCharacterTraitText[]= +{ + L"Normal", + L"Friendly", + L"Loner", + L"Optimist", + L"Pessimist", + L"Aggressive", + L"Arrogant", + L"Big Shot", + L"Asshole", + L"Coward", + L"I.M.P. Character Traits", +}; + +STR16 gzIMPColorChoosingText[] = +{ + L"I.M.P. Colors and Body Type", + L"I.M.P. Colors", + L"Please select the respective colors of your skin, hair and clothing. And select what body type you have.", + L"Please select the respective colors of your skin, hair and clothing.", + L"Toggle this to use alternative rifle holding.", +}; + +STR16 sColorChoiceExplanationTexts[]= +{ + L"Hair Color", + L"Skin Color", + L"Shirt Color", + L"Pants Color", + L"Normal Body", + L"Big Body", +}; + +STR16 gzIMPDisabilityTraitText[]= +{ + L"No Disability", + L"Heat Intolerant", + L"Nervous", + L"Claustrophobic", + L"Nonswimmer", + L"Fear of Insects", + L"Forgetful", + L"Psychotic", + L"I.M.P. Disabilities", +}; + #endif //TAIWANESE diff --git a/ja2_2005Express.vcproj b/ja2_2005Express.vcproj index 8a4174b3..de5759bb 100644 --- a/ja2_2005Express.vcproj +++ b/ja2_2005Express.vcproj @@ -66,7 +66,7 @@