mirror of
https://github.com/GTAmodding/re3.git
synced 2024-11-15 09:28:59 +00:00
Infamous XBOX subtitle outline
This commit is contained in:
parent
9826fdf6d5
commit
808f7c46f1
4 changed files with 50 additions and 1 deletions
|
@ -262,6 +262,7 @@ enum Config {
|
|||
#define HUD_ENHANCEMENTS // Adjusts some aspects to make the HUD look/behave a little bit better.
|
||||
// #define BETA_SLIDING_TEXT
|
||||
#define TRIANGULAR_BLIPS // height indicating triangular radar blips, as in VC
|
||||
// #define XBOX_SUBTITLES // the infamous outlines
|
||||
#define PC_MENU
|
||||
|
||||
#ifndef PC_MENU
|
||||
|
|
|
@ -942,6 +942,40 @@ CFont::PrintString(float x, float y, wchar *start, wchar *end, float spwidth)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef XBOX_SUBTITLES
|
||||
void
|
||||
CFont::PrintStringFromBottom(float x, float y, wchar *str)
|
||||
{
|
||||
#ifdef MORE_LANGUAGES
|
||||
if (IsJapaneseFont())
|
||||
y -= (32.0f * CFont::Details.scaleY / 2.75f + 2.0f * CFont::Details.scaleY) * GetNumberLines(x, y, str);
|
||||
else
|
||||
#endif
|
||||
y -= (32.0f * CFont::Details.scaleY * 0.5f + 2.0f * CFont::Details.scaleY) * GetNumberLines(x, y, str);
|
||||
PrintString(x, y, str);
|
||||
}
|
||||
|
||||
void
|
||||
CFont::PrintOutlinedString(float x, float y, wchar *str, float outlineStrength, bool fromBottom, CRGBA outlineColor)
|
||||
{
|
||||
CRGBA textColor = Details.color;
|
||||
SetColor(outlineColor);
|
||||
CVector2D offsets[] = { {1.f, 1.f}, {1.f, -1.f}, {-1.f, 1.f}, {-1.f, -1.f} };
|
||||
for(int i = 0; i < ARRAY_SIZE(offsets); i++){
|
||||
if (fromBottom)
|
||||
PrintStringFromBottom(x + SCREEN_SCALE_X(offsets[i].x * outlineStrength), y + SCREEN_SCALE_Y(offsets[i].y * outlineStrength), str);
|
||||
else
|
||||
PrintString(x + SCREEN_SCALE_X(offsets[i].x * outlineStrength), y + SCREEN_SCALE_Y(offsets[i].y * outlineStrength), str);
|
||||
}
|
||||
SetColor(textColor);
|
||||
|
||||
if (fromBottom)
|
||||
PrintStringFromBottom(x, y, str);
|
||||
else
|
||||
PrintString(x, y, str);
|
||||
}
|
||||
#endif
|
||||
|
||||
float
|
||||
CFont::GetCharacterWidth(wchar c)
|
||||
{
|
||||
|
|
|
@ -116,6 +116,10 @@ public:
|
|||
static void InitPerFrame(void);
|
||||
static void PrintChar(float x, float y, wchar c);
|
||||
static void PrintString(float x, float y, wchar *s);
|
||||
#ifdef XBOX_SUBTITLES
|
||||
static void PrintStringFromBottom(float x, float y, wchar *str);
|
||||
static void PrintOutlinedString(float x, float y, wchar *str, float outlineStrength, bool fromBottom, CRGBA outlineColor);
|
||||
#endif
|
||||
static int GetNumberLines(float xstart, float ystart, wchar *s);
|
||||
static void GetTextRect(CRect *rect, float xstart, float ystart, wchar *s);
|
||||
#ifdef MORE_LANGUAGES
|
||||
|
|
|
@ -926,11 +926,20 @@ void CHud::Draw()
|
|||
CFont::SetJustifyOff();
|
||||
CFont::SetBackgroundOff();
|
||||
CFont::SetBackgroundColor(CRGBA(0, 0, 0, 128));
|
||||
CFont::SetScale(SCREEN_SCALE_X(0.48f), SCREEN_SCALE_Y(1.120f));
|
||||
CFont::SetScale(SCREEN_SCALE_X(0.48f), SCREEN_SCALE_Y(1.12f));
|
||||
CFont::SetCentreOn();
|
||||
CFont::SetPropOn();
|
||||
CFont::SetFontStyle(FONT_LOCALE(FONT_BANK));
|
||||
|
||||
#ifdef XBOX_SUBTITLES
|
||||
float radarBulge = SCREEN_SCALE_X(45.0f) + SCREEN_SCALE_X(16.0f);
|
||||
float rectWidth = SCREEN_WIDTH - SCREEN_SCALE_X(45.0f) - SCREEN_SCALE_X(16.0f) - radarBulge;
|
||||
CFont::SetCentreSize(rectWidth);
|
||||
CFont::SetColor(CRGBA(180, 180, 180, 255));
|
||||
|
||||
CFont::PrintOutlinedString(rectWidth / 2.0f + radarBulge, SCREEN_SCALE_Y(4.0f) + SCREEN_SCALE_FROM_BOTTOM(48.0f) - SCREEN_SCALE_Y(1), m_Message,
|
||||
2.0f, true, CRGBA(0, 0, 0, 255));
|
||||
#else
|
||||
float radarBulge = SCREEN_SCALE_X(40.0f) + SCREEN_SCALE_X(8.0f);
|
||||
float rectWidth = SCREEN_WIDTH - SCREEN_SCALE_X(50.0f) - SCREEN_SCALE_X(8.0f) - radarBulge;
|
||||
CFont::SetCentreSize(rectWidth);
|
||||
|
@ -943,6 +952,7 @@ void CHud::Draw()
|
|||
// I'm not sure shadow substaction was intentional here, might be a leftover if CFont::PrintString was used for a shadow draw call
|
||||
CFont::PrintString(rectWidth / 2.0f + radarBulge - SCREEN_SCALE_X(shadow), SCREEN_SCALE_Y(4.0f) + SCREEN_SCALE_FROM_BOTTOM(68.0f) - SCREEN_SCALE_Y(shadow), m_Message);
|
||||
CFont::SetDropShadowPosition(0);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue