*************************

* HAM 3.6 (by Headrock) *
*************************
- Info: Needed GameDir files for HAM 3.6 are not committed yet to the SVN GameDir. Will do that in the next few days
- For more infos on HAM 3.6 check out: http://www.ja-galaxy-forum.com/board/ubbthreads.php?ubb=showflat&Number=244808&page=0&fpart=1


git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@3323 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Wanne
2010-02-20 15:49:46 +00:00
parent 53821fcf49
commit f010769397
120 changed files with 16937 additions and 2200 deletions
-1
View File
@@ -193,7 +193,6 @@ SMKFLIC *pSmack;
SMKFLIC *SmkOpenFlic(CHAR8 *cFilename)
{
SMKFLIC *pSmack;
// Get an available flic slot from the list
if(!(pSmack=SmkGetFreeFlic()))
+6 -5
View File
@@ -1266,7 +1266,7 @@ void DrawMouseGraphics( )
// HEADROCK HAM B1/2/2.6:
// This causes the function to display two CTH bars for autofire - the CTH of the first bullet,
// and the CTH of the last bullet in the volley, stored in gbCtH[0] and [1] respectively.
if ( gbCtHAutoFire && (gGameExternalOptions.iNewCTHBars == 1 || gGameExternalOptions.iNewCTHBars == 3) )
if ( gbCtHAutoFire && (gGameExternalOptions.ubNewCTHBars == 1 || gGameExternalOptions.ubNewCTHBars == 3) )
gbCtHBurstCount = 2;
else if ( gbCtHAutoFire )
gbCtHBurstCount = 0;
@@ -1274,9 +1274,9 @@ void DrawMouseGraphics( )
// Sets the initial offsets of the bars. Burst and Autofire will display them higher above the
// cursor, to avoid obscuring the target or other data.
if (gbCtHBurstCount > 1 && !gbCtHAutoFire && (gGameExternalOptions.iNewCTHBars == 1 || gGameExternalOptions.iNewCTHBars == 2) )
if (gbCtHBurstCount > 1 && !gbCtHAutoFire && (gGameExternalOptions.ubNewCTHBars == 1 || gGameExternalOptions.ubNewCTHBars == 2) )
barY = gsCurMouseOffsetY-__min(55,gsCurMouseHeight)/2;
else if (gbCtHBurstCount && gbCtHAutoFire && (gGameExternalOptions.iNewCTHBars == 1 || gGameExternalOptions.iNewCTHBars == 3) )
else if (gbCtHBurstCount && gbCtHAutoFire && (gGameExternalOptions.ubNewCTHBars == 1 || gGameExternalOptions.ubNewCTHBars == 3) )
barY = gsCurMouseOffsetY-__min(55,gsCurMouseHeight)/2;
else
barY = gsCurMouseOffsetY-__min(35,gsCurMouseHeight)/2;
@@ -1378,7 +1378,7 @@ void DrawMouseText( )
FindFontCenterCoordinates( 0, 0, gsCurMouseWidth, gsCurMouseHeight, pStr, TINYFONT1, &sX, &sY );
// HEADROCK HAM B2: Moved bullet counter to right side (and a bit upwards) to accomodate two CTH bars.
//mprintf( sX, sY - 10 - GetFontHeight(TINYFONT1), pStr );
if (gGameExternalOptions.iNewCTHBars == 1 || gGameExternalOptions.iNewCTHBars == 3)
if (gGameExternalOptions.ubNewCTHBars == 1 || gGameExternalOptions.ubNewCTHBars == 3)
// New CTH Bar moves bullet count to new location.
mprintf( 46, sY - 15 - GetFontHeight(TINYFONT1), pStr );
else
@@ -1387,9 +1387,10 @@ void DrawMouseText( )
// HEADROCK HAM B2: Removed this. The bottom line will now display bodypart targetting, like Burst and
// Single.
if ( gGameExternalOptions.iNewCTHBars != 1 && gGameExternalOptions.iNewCTHBars != 3 )
if ( gGameExternalOptions.ubNewCTHBars != 1 && gGameExternalOptions.ubNewCTHBars != 3 )
{
swprintf( pStr, L"%d", gsTotalBulletCount );
FindFontCenterCoordinates( 0, 0, gsCurMouseWidth, gsCurMouseHeight, pStr, TINYFONT1, &sX, &sY );
mprintf( sX, sY + 7 + GetFontHeight(TINYFONT1), pStr );
}
-2
View File
@@ -105,8 +105,6 @@ void ConvertRGBDistribution555To565( UINT16 * p16BPPData, UINT32 uiNumberOfPixel
void WriteSTIFile( INT8 *pData, SGPPaletteEntry *pPalette, INT16 sWidth, INT16 sHeight, STR cOutputName, UINT32 fFlags, UINT32 uiAppDataSize )
{
UINT32 uiOriginalSize;
UINT8 * pOutputBuffer = NULL;
UINT32 uiCompressedSize;
+6
View File
@@ -173,6 +173,12 @@ extern STR16 gzIMPColorChoosingText[];
extern STR16 sColorChoiceExplanationTexts[];
extern STR16 gzIMPDisabilityTraitText[];
//****
// HEADROCK HAM 3.6: New arrays for facility operation messages
extern STR16 gzFacilityErrorMessage[];
extern STR16 gzFacilityAssignmentStrings[];
extern STR16 gzFacilityRiskResultStrings[];
enum
{
ANTIHACKERSTR_EXITGAME,
+6 -2
View File
@@ -238,7 +238,9 @@ BOOLEAN WrapString( STR16 pStr, STR16 pStr2, UINT16 usWidth, INT32 uiFont )
}
if ( fLineSplit )
break;
// HEADROCK HAM 3.6: This is erroneous. At this point, the function should RETURN, otherwise it
// cuts another bit off pStr for no reason.
return (fLineSplit);
uiNewLet--;
curletter--;
@@ -250,7 +252,9 @@ BOOLEAN WrapString( STR16 pStr, STR16 pStr2, UINT16 usWidth, INT32 uiFont )
swprintf( pStr2, L"-%s", &(pStr[uiHyphenLet]) );
pStr[uiHyphenLet] = (INT16)'/0';
fLineSplit = TRUE; //hyphen method
break;
// HEADROCK HAM 3.6: This is erroneous. At this point, the function should RETURN, otherwise it
// cuts another bit off pStr for no reason.
return (fLineSplit);
}
}
+164 -9
View File
@@ -359,6 +359,7 @@ STR16 sTimeStrings[] =
// Assignment Strings: what assignment does the merc have right now? For example, are they on a squad, training,
// administering medical aid (doctor) or training a town. All are abbreviated. 8 letters is the longest it can be.
// HEADROCK HAM 3.6: Added string for Mobile Militia Training ("M.Militia"), string for Facility Staffing ("Facility")
STR16 pAssignmentStrings[] =
{
L"Squad 1",
@@ -388,9 +389,12 @@ STR16 pAssignmentStrings[] =
L"In Trans", // in transit - abbreviated form
L"Repair", // repairing
L"Practice", // training themselves
L"Militia", // training a town to revolt
L"Militia", // training a town to revolt
L"M.Militia", //training moving militia units
L"Trainer", // training a teammate
L"Student", // being trained by someone else
L"Staff", // operating a strategic facility
L"Rest", // Resting at a facility
L"Dead", // dead
L"Incap.", // abbreviation for incapacitated
L"POW", // Prisoner of war - captured
@@ -404,6 +408,7 @@ STR16 pMilitiaString[] =
L"Militia", // the title of the militia box
L"Unassigned", //the number of unassigned militia troops
L"You can't redistribute militia while there are hostilities in the area!",
L"Some militia were not assigned to a sector. Would you like to disband them?", // HEADROCK HAM 3.6
};
@@ -411,6 +416,7 @@ STR16 pMilitiaButtonString[] =
{
L"Auto", // auto place the militia troops for the player
L"Done", // done placing militia troops
L"Disband", // HEADROCK HAM 3.6: Disband militia
};
STR16 pConditionStrings[] =
@@ -633,6 +639,7 @@ STR16 pAssignMenuStrings[] =
L"Vehicle", // the merc is in a vehicle
L"Repair", // the merc is repairing items
L"Train", // the merc is training
L"Facility", // the merc is using/staffing a facility
L"Cancel", // cancel this menu
};
@@ -686,10 +693,12 @@ STR16 pAttributeMenuStrings[] =
L"Cancel",
};
// HEADROCK HAM 3.6: Splitting Garrison and Mobile training.
STR16 pTrainingMenuStrings[] =
{
L"Practice", // train yourself
L"Militia", // train the town
L"Mobile Militia",
L"Trainer", // train your teammates
L"Student", // be trained by an instructor
L"Cancel", // cancel this menu
@@ -1106,7 +1115,9 @@ CHAR16 gWeaponStatsDesc[][ 16 ] =
L"Weight:", //12
L"Stun Damage:",//13
// HEADROCK: Added new strings for extended description ** REDUNDANT **
L"AUTOPEN:", //14
// HEADROCK HAM 3: Replaced #14 with string for Possible Attachments (BR's Tooltips Only)
// Obviously, THIS SHOULD BE DONE IN ALL LANGUAGES...
L"Attachments:", //14
L"AUTO/5:", //15
L"Amount:", //16
@@ -1145,7 +1156,7 @@ STR16 gzWeaponStatsFasthelp[ 29 ] =
L"No Auto Mode!",
L"APs to Bash",
L"Autofire Penalty (Lower is better)",
L"Burst Penalty (Lower is better)",
L"Burst Penalty (Lower is better)"
};
STR16 gzWeaponStatsFasthelpTactical[ 29 ] =
@@ -1178,7 +1189,7 @@ STR16 gzWeaponStatsFasthelpTactical[ 29 ] =
L"No Auto Mode!",
L"APs to Bash",
L"Autofire Penalty (Lower is better)",
L"Burst Penalty (Lower is better)",
L"Burst Penalty (Lower is better)"
};
STR16 gzAmmoStatsFasthelp[ 20 ] =
@@ -1195,7 +1206,7 @@ STR16 gzAmmoStatsFasthelp[ 20 ] =
L"Damage Modifier",
L"To-Hit Modifier",
L"Autofire Penalty Modifier (Higher is better)",
L"Burst/Auto Penalty Modifier (Higher is better)",
L"Burst Penalty Modifier (Higher is better)",
L"Reliability Modifier",
L"Loudness Modifier (Lower is better)",
L"",
@@ -1731,11 +1742,12 @@ STR16 gsTimeStrings[] =
// text for the various facilities in the sector
// HEADROCK HAM 3.4: Changed "Industry" into "Factory"
STR16 sFacilitiesStrings[] =
{
L"None",
L"Hospital",
L"Industry",
L"Factory",
L"Prison",
L"Military",
L"Airport",
@@ -1766,6 +1778,7 @@ STR16 pwTownInfoStrings[] =
L"Level", // the training level of civilians in this town
L"Civilian Training", // 10 // state of civilian training in town
L"Militia", // the state of the trained civilians in the town
L"Mobile Training", // HEADROCK HAM 3.6: The stat of Mobile militia training in town
};
// Mine strings
@@ -2069,6 +2082,8 @@ STR16 pTransactionText[] =
L"Purchased items from %s.", //is used for the Shop keeper interface. The dealers name will be appended to the end of the string.
L"%s deposited money.",
L"Sold Item(s) to the Locals",
L"Facility Use", // HEADROCK HAM 3.6
L"Militia upkeep", // HEADROCK HAM 3.6
};
STR16 pTransactionAlternateText[] =
@@ -2163,7 +2178,7 @@ STR16 pMapErrorString[] =
//11-15
L"Movement orders? There's a battle going on!",
L"You have been ambushed by bloodcats in sector %s!",
L"You have just entered what appears to be a bloodcat lair in sector I16!",
L"You have just entered what appears to be a bloodcat lair in sector %s!", // HEADROCK HAM 3.6: Added argument.
L"",
L"The SAM site in %s has been taken over.",
//16-20
@@ -3646,6 +3661,10 @@ STR16 pMilitiaConfirmStrings[] =
L"You cannot afford the $%d to train town militia here.",
L"%s needs a loyalty of %d percent for you to be able to continue training militia.",
L"You cannot train the militia in %s any further.",
L"You cannot afford the $%d to train mobile militia here.", // HEADROCK HAM 3.6: Mobile Militia
L"Continue training mobile militia in %s (%s %d)?", // HEADROCK HAM 3.6: Mobile Militia
L"Training mobile militia in %d sectors will cost $ %d. %s", // HEADROCK HAM 3.6: Mobile Militia
L"Training a squad of mobile militia will cost $", // HEADROCK HAM 3.6: Mobile Militia
};
//Strings used in the popup box when withdrawing, or depositing money from the $ sign at the bottom of the single merc panel
@@ -3700,6 +3719,7 @@ STR16 zOptionsToggleText[] =
L"Low CPU usage",
L"Enhanced Description Box",
L"Forced Turn Mode", // add forced turn mode
L"Stat Progress Bars", // Show progress towards stat increase
L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER,
L"Force Bobby Ray shipments", // force all pending Bobby Ray shipments
L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END
@@ -3795,6 +3815,7 @@ STR16 zOptionsScreenHelpText[] =
L"When ON, game will run with much lower CPU usage.",
L"When ON, enhanced descriptions will be shown for items and weapons.",
L"When ON and enemy present, Turn Base mode persists untill sector is free (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", // add forced turn mode
L"When ON, shows character progress towards gaining levels.",
L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER",
L"Force all pending Bobby Ray shipments",
L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END",
@@ -4425,7 +4446,8 @@ STR16 gzLateLocalizedString[] =
//46-48
L"%s's gun barrel extender falls off!",
L"No more than %d militia trainers are permitted per sector.",
// HEADROCK HAM 3.5: Changed to reflect facility effect.
L"No more than %d militia trainers are permitted in this sector.",
L"Are you sure?",
//49-50
@@ -4461,9 +4483,10 @@ STR16 gzLateLocalizedString[] =
L"%s fires %d more round than intended!",
};
// HEADROCK HAM 3.5: Added sector name
STR16 gzCWStrings[] =
{
L"Call reinforcements from adjacent sectors?",
L"Call reinforcements to %s from adjacent sectors?",
};
// WANNE: Tooltips
@@ -4542,7 +4565,34 @@ STR16 New113Message[] =
STR16 New113HAMMessage[] =
{
// 0 - 5
L"%s cowers in fear!",
L"%s is pinned down!",
L"%s fires more rounds than intended!",
L"You cannot train militia in this sector.",
L"Militia picks up %s.",
L"Cannot train militia with enemies present!",
// 6 - 10
L"%s lacks sufficient Leadership score to train militia.",
L"No more than %d Mobile Militia trainers are permitted in this sector.",
L"No room in %s or around it for new Mobile Militia!",
L"You need to have %d Town Militia in each of %s's liberated sectors before you can train Mobile Militia here.",
L"Can't staff a facility while enemies are present!",
// 11 - 15
L"%s lacks sufficient Wisdom to staff this facility.",
L"The %s is already fully-staffed.",
L"It will cost $%d per hour to staff this facility. Do you wish to continue?",
L"You have insufficient funds to pay for all Facility work today. $%d have been paid, but you still owe $%d. The locals are not pleased.",
L"You have insufficient funds to pay for all Facility work today. You owe $%d. The locals are not pleased.",
// 16 - 20
L"You have an outstanding debt of $%d for Facility Operation, and no money to pay it off!",
L"You have an outstanding debt of $%d for Facility Operation. You can't assign this merc to facility duty until you have enough money to pay off the entire debt.",
L"You have an outstanding debt of $%d for Facility Operation. Would you like to pay it all back?",
L"N/A in this sector",
L"Daily Expenses",
// 21 - 25
L"Insufficient funds to pay all enlisted militia! %d militia have disbanded and returned home.",
};
// WANNE: This are the email texts, when one of the 4 new 1.13 MERC mercs have levelled up, that Speck sends
@@ -4853,6 +4903,111 @@ STR16 gzIMPDisabilityTraitText[]=
L"I.M.P. Disabilities",
};
// HEADROCK HAM 3.6: Error strings for assigning a merc to a facility
STR16 gzFacilityErrorMessage[]=
{
L"%s lacks sufficient Strength to perform this task.",
L"%s lacks sufficient Dexterity to perform this task.",
L"%s lacks sufficient Agility to perform this task.",
L"%s is not Healthy enough to perform this task.",
L"%s lacks sufficient Wisdom to perform this task.",
L"%s lacks sufficient Marksmanship to perform this task.",
// 6 - 10
L"%s lacks sufficient Medical Skill to perform this task.",
L"%s lacks sufficient Mechanical Skill to perform this task.",
L"%s lacks sufficient Leadership to perform this task.",
L"%s lacks sufficient Explosives Skill to perform this task.",
L"%s lacks sufficient Experience to perform this task.",
// 11 - 15
L"%s lacks sufficient Morale to perform this task.",
L"%s is too exhausted to perform this task.",
L"Insufficient loyalty in %s. The locals refuse to allow you to perform this task.",
L"Too many people are already working at the %s.",
L"Too many people are already performing this task at the %s.",
// 16 - 20
L"%s can find no items to repair.",
L"%s has lost some %s while working in sector %s!",
L"%s has lost some %s while working at the %s in %s!",
L"%s was injured while working in sector %s, and requires immediate medical attention!",
L"%s was injured while working at the %s in %s, and requires immediate medical attention!",
// 21 - 25
L"%s was injured while working in sector %s. It doesn't seem too bad though.",
L"%s was injured while working at the %s in %s. It doesn't seem too bad though.",
L"The residents of %s seem upset about %s's presence.",
L"The residents of %s seem upset about %s's work at the %s.",
L"%s's actions in sector %s have caused loyalty loss throughout the region!",
// 26 - 30
L"%s's actions at the %s in %s have caused loyalty loss throughout the region!",
L"%s is drunk.", // <--- This is a log message string.
L"%s has become severely ill in sector %s, and has been taken off duty.",
L"%s has become severely ill and cannot continue his work at the %s in %s.",
L"%s was injured in sector %s.", // <--- This is a log message string.
// 31 - 35
L"%s was severely injured in sector %s.", //<--- This is a log message string.
};
STR16 gzFacilityRiskResultStrings[]=
{
L"Strength",
L"Agility",
L"Dexterity",
L"Wisdom",
L"Health",
L"Marksmanship",
// 5-10
L"Leadership",
L"Mechanical skill",
L"Medical skill",
L"Explosives skill",
};
STR16 gzFacilityAssignmentStrings[]=
{
L"AMBIENT",
L"Staff",
L"Rest",
L"Repair Items",
L"Repair %s", // Vehicle name inserted here
L"Repair Robot",
// 6-10
L"Doctor",
L"Patient",
L"Practice Strength",
L"Practice Dexterity",
L"Practice Agility",
L"Practice Health",
// 11-15
L"Practice Marksmanship",
L"Practice Medical",
L"Practice Mechanical",
L"Practice Leadership",
L"Practice Explosives",
// 16-20
L"Student Strength",
L"Student Dexterity",
L"Student Agility",
L"Student Health",
L"Student Marksmanship",
// 21-25
L"Student Medical",
L"Student Mechanical",
L"Student Leadership",
L"Student Explosives",
L"Trainer Strength",
// 26-30
L"Trainer Dexterity",
L"Trainer Agility",
L"Trainer Health",
L"Trainer Marksmanship",
L"Trainer Medical",
// 30-35
L"Trainer Mechanical",
L"Trainer Leadership",
L"Trainer Explosives",
};
STR16 Additional113Text[]=
{
L"Jagged Alliance 2 v1.13 windowed mode requires a color depth of 16bpp or less.",
+76 -22
View File
@@ -45,8 +45,9 @@ typedef struct
#define MAX_LINE_COUNT 6
#define X_START 2
#define MAX_AGE 10000
#define LINE_WIDTH 320
#define MAP_LINE_WIDTH 300
// HEADROCK HAM 3.6: Turned into a variable.
UINT16 LINE_WIDTH;
UINT16 MAP_LINE_WIDTH;
#define WIDTH_BETWEEN_NEW_STRINGS 5
#define BETAVERSION_COLOR FONT_ORANGE
@@ -70,7 +71,12 @@ UINT8 gubCurrentMapMessageString = 0;
BOOLEAN fOkToBeepNewMessage = TRUE;
static ScrollStringStPtr gpDisplayList[ MAX_LINE_COUNT ];
// HEADROCK HAM 3.6: Increased size of absolute MAXIMUM possible displayed messages to 36 (the most that can be seen
// in a 1024x768 display. There's now an INI setting that allows displaying up to 36 in the tactical screen.
// Strategic screen not yet changed. Please note that there are also fail-safes that make sure that the actual
// maximum isn't more that can be displayed given the resolution being used.
//static ScrollStringStPtr gpDisplayList[ MAX_LINE_COUNT ];
static ScrollStringStPtr gpDisplayList[ 36 ];
static ScrollStringStPtr gMapScreenMessageList[ 256 ];
extern ScrollStringStPtr pStringS=NULL;
@@ -134,7 +140,8 @@ void PlayNewMessageSound( void );
void HandleLastQuotePopUpTimer( void );
// HEADROCK HAM 3.6: External boolean tells game to re-render map screen message log panel.
extern BOOLEAN fMapScreenBottomDirty;
// functions
@@ -335,8 +342,10 @@ void ClearDisplayedListOfTacticalStrings( void )
{
// this function will go through list of display strings and clear them all out
UINT32 cnt;
for ( cnt = 0; cnt < MAX_LINE_COUNT; cnt++ )
// HEADROCK HAM 3.6: Number of messages to display now depends on external options.
//for ( cnt = 0; cnt < MAX_LINE_COUNT; cnt++ )
for ( cnt = 0; cnt < gGameExternalOptions.ubMaxMessagesTactical; cnt++ )
{
if ( gpDisplayList[ cnt ] != NULL )
{
@@ -368,7 +377,6 @@ void ScrollString( )
INT16 iMsgYStart = ((UsingNewInventorySystem() == false)) ? SCREEN_HEIGHT - 150 : SCREEN_HEIGHT - 210;
// UPDATE TIMER
suiTimer=GetJA2Clock();
@@ -380,6 +388,9 @@ void ScrollString( )
return;
}
// HEADROCK HAM 3.6: This replaces the static variable MAX_LINE_COUNT for all tactical displays.
UINT8 ubLines = gGameExternalOptions.ubMaxMessagesTactical;
// DONOT UPDATE IF WE ARE SCROLLING!
if ( gfScrollPending || gfScrollInertia )
{
@@ -395,7 +406,7 @@ void ScrollString( )
iNumberOfMessagesOnQueue = GetMessageQueueSize( );
iMaxAge = MAX_AGE;
if( ( iNumberOfMessagesOnQueue > 0 )&&( gpDisplayList[ MAX_LINE_COUNT - 1 ] != NULL) )
if( ( iNumberOfMessagesOnQueue > 0 )&&( gpDisplayList[ ubLines - 1 ] != NULL) )
{
fDitchLastMessage = TRUE;
}
@@ -416,11 +427,11 @@ void ScrollString( )
}
//AGE
for ( cnt = 0; cnt < MAX_LINE_COUNT; cnt++ )
for ( cnt = 0; cnt < ubLines; cnt++ )
{
if ( gpDisplayList[ cnt ] != NULL )
{
if( ( fDitchLastMessage ) && ( cnt == MAX_LINE_COUNT - 1 ) )
if( ( fDitchLastMessage ) && ( cnt == ubLines - 1 ) )
{
gpDisplayList[ cnt ]->uiTimeOfLastUpdate = iMaxAge;
}
@@ -446,12 +457,12 @@ void ScrollString( )
{
// CHECK IF WE HAVE A SLOT!
// CHECK OUR LAST SLOT!
if ( gpDisplayList[ MAX_LINE_COUNT - 1 ] == NULL )
if ( gpDisplayList[ ubLines - 1 ] == NULL )
{
// MOVE ALL UP!
// cpy, then move
for( cnt = MAX_LINE_COUNT - 1; cnt > 0; cnt-- )
for( cnt = ubLines - 1; cnt > 0; cnt-- )
{
gpDisplayList[ cnt ] = gpDisplayList[ cnt - 1 ];
}
@@ -469,7 +480,7 @@ void ScrollString( )
pStringS->uiTimeOfLastUpdate = GetJA2Clock();
// now move
for ( cnt = 0; cnt <= MAX_LINE_COUNT - 1; cnt++ )
for ( cnt = 0; cnt <= (UINT8)(ubLines - 1); cnt++ )
{
// Adjust position!
@@ -500,7 +511,7 @@ void ScrollString( )
}
//check if new meesage we have not seen since mapscreen..if so, beep
if( ( fOkToBeepNewMessage == TRUE ) && ( gpDisplayList[ MAX_LINE_COUNT - 2 ] == NULL ) && ( ( guiCurrentScreen == GAME_SCREEN ) || ( guiCurrentScreen == MAP_SCREEN ) ) && ( gfFacePanelActive == FALSE ) )
if( ( fOkToBeepNewMessage == TRUE ) && ( gpDisplayList[ ubLines - 2 ] == NULL ) && ( ( guiCurrentScreen == GAME_SCREEN ) || ( guiCurrentScreen == MAP_SCREEN ) ) && ( gfFacePanelActive == FALSE ) )
{
PlayNewMessageSound( );
}
@@ -541,7 +552,19 @@ void HideMessagesDuringNPCDialogue( void )
fScrollMessagesHidden = TRUE;
uiStartOfPauseTime = GetJA2Clock();
for ( cnt = 0; cnt < MAX_LINE_COUNT; cnt++ )
UINT8 ubLines = 0;
// HEADROCK HAM 3.6: Different number of lines shown in Tactical and Strategic modes.
if( guiCurrentScreen == MAP_SCREEN )
{
ubLines = MAX_LINE_COUNT;
}
else
{
ubLines = gGameExternalOptions.ubMaxMessagesTactical;
}
for ( cnt = 0; cnt < ubLines; cnt++ )
{
if ( gpDisplayList[ cnt ] != NULL )
{
@@ -567,7 +590,19 @@ void UnHideMessagesDuringNPCDialogue( void )
VideoOverlayDesc.uiFlags = VOVERLAY_DESC_DISABLED;
fScrollMessagesHidden = FALSE;
for ( cnt = 0; cnt < MAX_LINE_COUNT; cnt++ )
UINT8 ubLines = 0;
// HEADROCK HAM 3.6: Different number of lines shown in Tactical and Strategic modes.
if( guiCurrentScreen == MAP_SCREEN )
{
ubLines = MAX_LINE_COUNT;
}
else
{
ubLines = gGameExternalOptions.ubMaxMessagesTactical;
}
for ( cnt = 0; cnt < ubLines; cnt++ )
{
if ( gpDisplayList[ cnt ] != NULL )
{
@@ -804,10 +839,12 @@ void TacticalScreenMsg( UINT16 usColor, UINT8 ubPriority, STR16 pStringA, ... )
if ( ubPriority == MSG_INTERFACE )
{
usColor = INTERFACE_COLOR;
// HEADROCK HAM 3.6: Why force yellow? Let's not.
//usColor = INTERFACE_COLOR;
}
// HEADROCK HAM 3.6: Allow for longer lines.
LINE_WIDTH = (SCREEN_WIDTH - 320);
pStringWrapperHead=LineWrap(uiFont, LINE_WIDTH, &usLineWidthIfWordIsWiderThenWidth, DestString);
pStringWrapper=pStringWrapperHead;
@@ -1004,9 +1041,13 @@ void MapScreenMessage( UINT16 usColor, UINT8 ubPriority, STR16 pStringA, ... )
if ( ubPriority == MSG_INTERFACE )
{
usColor = INTERFACE_COLOR;
// HEADROCK HAM 3.6: Why force yellow? Let's not.
//usColor = INTERFACE_COLOR;
}
// HEADROCK HAM 3.6: Allow for longer lines.
MAP_LINE_WIDTH = (SCREEN_WIDTH - 330);
pStringWrapperHead=LineWrap(uiFont, MAP_LINE_WIDTH, &usLineWidthIfWordIsWiderThenWidth, DestString);
pStringWrapper=pStringWrapperHead;
if(!pStringWrapper)
@@ -1023,7 +1064,9 @@ void MapScreenMessage( UINT16 usColor, UINT8 ubPriority, STR16 pStringA, ... )
}
AddStringToMapScreenMessageList(pStringWrapper->sString, usColor, uiFont, fNewString, ubPriority );
// HEADROCK HAM 3.6: Refresh screen bottom.
fMapScreenBottomDirty = TRUE;
//RenderMapScreenInterfaceBottom ( TRUE );
// clear up list of wrapped strings
ClearWrappedStrings( pStringWrapperHead );
@@ -1099,7 +1142,8 @@ void DisplayStringsInMapScreenMessageList( void )
// CHRISL: Change both X paramters so they dynamically generate from right edge of screen
//SetFontDestBuffer( FRAME_BUFFER, (SCREEN_WIDTH - 509), (SCREEN_HEIGHT - 114), (SCREEN_WIDTH - 233), (SCREEN_HEIGHT - 114) + 101, FALSE );
// CHRISL: Use this setup if we want message box on the left side
SetFontDestBuffer( FRAME_BUFFER, 17, (SCREEN_HEIGHT - 114), 407, (SCREEN_HEIGHT - 114) + 101, FALSE );
// HEADROCK HAM 3.6: Message window now as wide as possible. The money screen has been moved to the right side.
SetFontDestBuffer( FRAME_BUFFER, 17, (SCREEN_HEIGHT - 114), (SCREEN_WIDTH - 330), (SCREEN_HEIGHT - 114) + 101, FALSE );
SetFont( MAP_SCREEN_MESSAGE_FONT ); // no longer supports variable fonts
SetFontBackground( FONT_BLACK );
@@ -1150,8 +1194,18 @@ void EnableDisableScrollStringVideoOverlay( BOOLEAN fEnable )
// will go through the list of video overlays for the tactical scroll message system, and enable/disable
// video overlays depending on fEnable
INT8 bCounter = 0;
UINT8 ubLines = 0;
for( bCounter = 0; bCounter < MAX_LINE_COUNT; bCounter++ )
if( guiCurrentScreen == MAP_SCREEN )
{
ubLines = MAX_LINE_COUNT;
}
else
{
ubLines = gGameExternalOptions.ubMaxMessagesTactical;
}
for( bCounter = 0; bCounter < ubLines; bCounter++ )
{
// if valid, enable/disable