mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-11 07:12:02 +00:00
- allow setting the startup screen's title through GAMEINFO lump.
SVN r2850 (trunk)
This commit is contained in:
parent
4397ef3323
commit
3f420c97bd
7 changed files with 51 additions and 26 deletions
|
@ -668,6 +668,12 @@ const IWADInfo *D_FindIWAD(TArray<FString> &wadfiles, const char *iwad, const ch
|
||||||
EIWADType iwadType = IdentifyVersion(wadfiles, iwad, basewad);
|
EIWADType iwadType = IdentifyVersion(wadfiles, iwad, basewad);
|
||||||
gameiwad = iwadType;
|
gameiwad = iwadType;
|
||||||
const IWADInfo *iwad_info = &IWADInfos[iwadType];
|
const IWADInfo *iwad_info = &IWADInfos[iwadType];
|
||||||
|
if (DoomStartupInfo.Name.IsEmpty()) DoomStartupInfo.Name = iwad_info->Name;
|
||||||
|
if (DoomStartupInfo.BkColor == 0 && DoomStartupInfo.FgColor == 0)
|
||||||
|
{
|
||||||
|
DoomStartupInfo.BkColor = iwad_info->BkColor;
|
||||||
|
DoomStartupInfo.FgColor = iwad_info->FgColor;
|
||||||
|
}
|
||||||
I_SetIWADInfo(iwad_info);
|
I_SetIWADInfo(iwad_info);
|
||||||
return iwad_info;
|
return iwad_info;
|
||||||
}
|
}
|
|
@ -203,6 +203,7 @@ bool PageBlank;
|
||||||
FTexture *Page;
|
FTexture *Page;
|
||||||
FTexture *Advisory;
|
FTexture *Advisory;
|
||||||
bool nospriterename;
|
bool nospriterename;
|
||||||
|
FStartupInfo DoomStartupInfo;
|
||||||
|
|
||||||
cycle_t FrameCycles;
|
cycle_t FrameCycles;
|
||||||
|
|
||||||
|
@ -1697,6 +1698,19 @@ static FString ParseGameInfo(TArray<FString> &pwads, const char *fn, const char
|
||||||
{
|
{
|
||||||
nospriterename = true;
|
nospriterename = true;
|
||||||
}
|
}
|
||||||
|
else if (!nextKey.CompareNoCase("STARTUPTITLE"))
|
||||||
|
{
|
||||||
|
sc.MustGetString();
|
||||||
|
DoomStartupInfo.Name = sc.String;
|
||||||
|
}
|
||||||
|
else if (!nextKey.CompareNoCase("STARTUPCOLORS"))
|
||||||
|
{
|
||||||
|
sc.MustGetString();
|
||||||
|
DoomStartupInfo.FgColor = V_GetColor(NULL, sc.String);
|
||||||
|
sc.MustGetStringName(",");
|
||||||
|
sc.MustGetString();
|
||||||
|
DoomStartupInfo.BkColor = V_GetColor(NULL, sc.String);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return iwad;
|
return iwad;
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,6 +106,15 @@ struct IWADInfo
|
||||||
int flags;
|
int flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct FStartupInfo
|
||||||
|
{
|
||||||
|
FString Name;
|
||||||
|
DWORD FgColor; // Foreground color for title banner
|
||||||
|
DWORD BkColor; // Background color for title banner
|
||||||
|
};
|
||||||
|
|
||||||
|
extern FStartupInfo DoomStartupInfo;
|
||||||
|
|
||||||
extern const IWADInfo IWADInfos[NUM_IWAD_TYPES];
|
extern const IWADInfo IWADInfos[NUM_IWAD_TYPES];
|
||||||
extern EIWADType gameiwad;
|
extern EIWADType gameiwad;
|
||||||
|
|
||||||
|
|
|
@ -2250,6 +2250,8 @@ static void P_LoopSidedefs (bool firstloop)
|
||||||
right = bestright;
|
right = bestright;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
assert((unsigned)i<(unsigned)numsides);
|
||||||
|
assert(right<(unsigned)numsides);
|
||||||
sides[i].RightSide = right;
|
sides[i].RightSide = right;
|
||||||
sides[right].LeftSide = i;
|
sides[right].LeftSide = i;
|
||||||
}
|
}
|
||||||
|
|
|
@ -355,7 +355,7 @@ void LayoutMainWindow (HWND hWnd, HWND pane)
|
||||||
w = rect.right;
|
w = rect.right;
|
||||||
h = rect.bottom;
|
h = rect.bottom;
|
||||||
|
|
||||||
if (DoomStartupInfo != NULL && GameTitleWindow != NULL)
|
if (DoomStartupInfo.Name.IsNotEmpty() && GameTitleWindow != NULL)
|
||||||
{
|
{
|
||||||
bannerheight = GameTitleFontHeight + 5;
|
bannerheight = GameTitleFontHeight + 5;
|
||||||
MoveWindow (GameTitleWindow, 0, 0, w, bannerheight, TRUE);
|
MoveWindow (GameTitleWindow, 0, 0, w, bannerheight, TRUE);
|
||||||
|
@ -399,6 +399,19 @@ void LayoutMainWindow (HWND hWnd, HWND pane)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
// I_SetIWADInfo
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
|
||||||
|
void I_SetIWADInfo(const IWADInfo *info)
|
||||||
|
{
|
||||||
|
// Make the startup banner show itself
|
||||||
|
LayoutMainWindow(Window, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// LConProc
|
// LConProc
|
||||||
|
@ -501,7 +514,7 @@ LRESULT CALLBACK LConProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
|
|
||||||
case WM_DRAWITEM:
|
case WM_DRAWITEM:
|
||||||
// Draw title banner.
|
// Draw title banner.
|
||||||
if (wParam == IDC_STATIC_TITLE && DoomStartupInfo != NULL)
|
if (wParam == IDC_STATIC_TITLE && DoomStartupInfo.Name.IsNotEmpty())
|
||||||
{
|
{
|
||||||
const PalEntry *c;
|
const PalEntry *c;
|
||||||
|
|
||||||
|
@ -511,7 +524,7 @@ LRESULT CALLBACK LConProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
// Draw the background.
|
// Draw the background.
|
||||||
rect = drawitem->rcItem;
|
rect = drawitem->rcItem;
|
||||||
rect.bottom -= 1;
|
rect.bottom -= 1;
|
||||||
c = (const PalEntry *)&DoomStartupInfo->BkColor;
|
c = (const PalEntry *)&DoomStartupInfo.BkColor;
|
||||||
hbr = CreateSolidBrush (RGB(c->r,c->g,c->b));
|
hbr = CreateSolidBrush (RGB(c->r,c->g,c->b));
|
||||||
FillRect (drawitem->hDC, &drawitem->rcItem, hbr);
|
FillRect (drawitem->hDC, &drawitem->rcItem, hbr);
|
||||||
DeleteObject (hbr);
|
DeleteObject (hbr);
|
||||||
|
@ -519,14 +532,14 @@ LRESULT CALLBACK LConProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
// Calculate width of the title string.
|
// Calculate width of the title string.
|
||||||
SetTextAlign (drawitem->hDC, TA_TOP);
|
SetTextAlign (drawitem->hDC, TA_TOP);
|
||||||
oldfont = SelectObject (drawitem->hDC, GameTitleFont != NULL ? GameTitleFont : (HFONT)GetStockObject (DEFAULT_GUI_FONT));
|
oldfont = SelectObject (drawitem->hDC, GameTitleFont != NULL ? GameTitleFont : (HFONT)GetStockObject (DEFAULT_GUI_FONT));
|
||||||
titlelen = (int)strlen (DoomStartupInfo->Name);
|
titlelen = (int)DoomStartupInfo.Name.Len();
|
||||||
GetTextExtentPoint32 (drawitem->hDC, DoomStartupInfo->Name, titlelen, &size);
|
GetTextExtentPoint32 (drawitem->hDC, DoomStartupInfo.Name, titlelen, &size);
|
||||||
|
|
||||||
// Draw the title.
|
// Draw the title.
|
||||||
c = (const PalEntry *)&DoomStartupInfo->FgColor;
|
c = (const PalEntry *)&DoomStartupInfo.FgColor;
|
||||||
SetTextColor (drawitem->hDC, RGB(c->r,c->g,c->b));
|
SetTextColor (drawitem->hDC, RGB(c->r,c->g,c->b));
|
||||||
SetBkMode (drawitem->hDC, TRANSPARENT);
|
SetBkMode (drawitem->hDC, TRANSPARENT);
|
||||||
TextOut (drawitem->hDC, rect.left + (rect.right - rect.left - size.cx) / 2, 2, DoomStartupInfo->Name, titlelen);
|
TextOut (drawitem->hDC, rect.left + (rect.right - rect.left - size.cx) / 2, 2, DoomStartupInfo.Name, titlelen);
|
||||||
SelectObject (drawitem->hDC, oldfont);
|
SelectObject (drawitem->hDC, oldfont);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -143,8 +143,6 @@ UINT MillisecondsPerTic;
|
||||||
HANDLE NewTicArrived;
|
HANDLE NewTicArrived;
|
||||||
uint32 LanguageIDs[4];
|
uint32 LanguageIDs[4];
|
||||||
|
|
||||||
const IWADInfo *DoomStartupInfo;
|
|
||||||
|
|
||||||
int (*I_GetTime) (bool saveMS);
|
int (*I_GetTime) (bool saveMS);
|
||||||
int (*I_WaitForTic) (int);
|
int (*I_WaitForTic) (int);
|
||||||
void (*I_FreezeTime) (bool frozen);
|
void (*I_FreezeTime) (bool frozen);
|
||||||
|
@ -833,20 +831,6 @@ void STACK_ARGS I_Error(const char *error, ...)
|
||||||
throw CRecoverableError(errortext);
|
throw CRecoverableError(errortext);
|
||||||
}
|
}
|
||||||
|
|
||||||
//==========================================================================
|
|
||||||
//
|
|
||||||
// I_SetIWADInfo
|
|
||||||
//
|
|
||||||
//==========================================================================
|
|
||||||
|
|
||||||
void I_SetIWADInfo(const IWADInfo *info)
|
|
||||||
{
|
|
||||||
DoomStartupInfo = info;
|
|
||||||
|
|
||||||
// Make the startup banner show itself
|
|
||||||
LayoutMainWindow(Window, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// ToEditControl
|
// ToEditControl
|
||||||
|
|
|
@ -138,9 +138,6 @@ bool I_WriteIniFailed ();
|
||||||
unsigned int I_MSTime (void);
|
unsigned int I_MSTime (void);
|
||||||
unsigned int I_FPSTime();
|
unsigned int I_FPSTime();
|
||||||
|
|
||||||
// [RH] Title banner to display during startup
|
|
||||||
extern const IWADInfo *DoomStartupInfo;
|
|
||||||
|
|
||||||
// [RH] Used by the display code to set the normal window procedure
|
// [RH] Used by the display code to set the normal window procedure
|
||||||
void I_SetWndProc();
|
void I_SetWndProc();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue