mirror of
https://github.com/ZDoom/Raze.git
synced 2024-12-02 09:02:18 +00:00
84173ee09b
The main bulk of this is the new start screen code. To make this work in Raze some more work on the startup procedure is needed. What this does provide is support for the DOS end-of-game text screens in Duke and SW on non-Windows systems.
90 lines
2.3 KiB
C++
90 lines
2.3 KiB
C++
#pragma once
|
|
|
|
#include "zstring.h"
|
|
#include "printf.h"
|
|
|
|
#include <functional>
|
|
|
|
#define WIN32_LEAN_AND_MEAN
|
|
#include <Windows.h>
|
|
|
|
// The WndProc used when the game view is active
|
|
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
|
|
|
|
class MainWindow
|
|
{
|
|
public:
|
|
void Create(const FString& title, int x, int y, int width, int height);
|
|
|
|
void ShowGameView();
|
|
void RestoreConView();
|
|
|
|
void ShowErrorPane(const char* text);
|
|
void CheckForRestart();
|
|
|
|
void HideGameTitleWindow();
|
|
int GetGameTitleWindowHeight();
|
|
|
|
void PrintStr(const char* cp);
|
|
void GetLog(std::function<bool(const void* data, uint32_t size, uint32_t& written)> writeFile);
|
|
|
|
void UpdateLayout();
|
|
|
|
void ShowProgressBar(int maxpos);
|
|
void HideProgressBar();
|
|
void SetProgressPos(int pos);
|
|
|
|
void ShowNetStartPane(const char* message, int maxpos);
|
|
void SetNetStartProgress(int pos);
|
|
bool RunMessageLoop(bool (*timer_callback)(void*), void* userdata);
|
|
void HideNetStartPane();
|
|
|
|
void SetWindowTitle(const char* caption);
|
|
|
|
HWND GetHandle() { return Window; }
|
|
|
|
private:
|
|
void LayoutMainWindow(HWND hWnd, HWND pane);
|
|
int LayoutErrorPane(HWND pane, int w);
|
|
int LayoutNetStartPane(HWND pane, int w);
|
|
|
|
void DoPrintStr(const char* cpt);
|
|
void FlushBufferedConsoleStuff();
|
|
|
|
LRESULT OnMessage(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
LRESULT OnCreate(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
LRESULT OnSize(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
LRESULT OnDrawItem(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
LRESULT OnCommand(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
LRESULT OnClose(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
LRESULT OnDestroy(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
|
|
static LRESULT CALLBACK LConProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
static INT_PTR CALLBACK ErrorPaneProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
|
|
HWND Window = 0;
|
|
|
|
HFONT GameTitleFont = 0;
|
|
LONG GameTitleFontHeight = 0;
|
|
LONG DefaultGUIFontHeight = 0;
|
|
LONG ErrorIconChar = 0;
|
|
|
|
bool restartrequest = false;
|
|
|
|
HWND GameTitleWindow = 0;
|
|
HWND ErrorPane = 0;
|
|
HWND ErrorIcon = 0;
|
|
|
|
bool ConWindowHidden = false;
|
|
HWND ConWindow = 0;
|
|
TArray<FString> bufferedConsoleStuff;
|
|
|
|
HWND ProgressBar = 0;
|
|
|
|
HWND NetStartPane = 0;
|
|
int NetStartMaxPos = 0;
|
|
|
|
HWND StartupScreen = 0;
|
|
};
|
|
|
|
extern MainWindow mainwindow;
|