summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: f2222ab)
raw | patch | inline | side by side (parent: f2222ab)
author | Joseph Stalin <granminigun@pm.me> | |
Wed, 4 Sep 2019 12:05:36 +0000 (17:05 +0500) | ||
committer | Joseph Stalin <granminigun@pm.me> | |
Wed, 4 Sep 2019 12:07:07 +0000 (17:07 +0500) |
src/game/g_gui.pas | patch | blob | history | |
src/game/g_menu.pas | patch | blob | history |
diff --git a/src/game/g_gui.pas b/src/game/g_gui.pas
index a76a1801f560969bd0ab491f9dca790cc7565c3f..a97ddeb77a720382a5da623077aca7e1a5a99ab9 100644 (file)
--- a/src/game/g_gui.pas
+++ b/src/game/g_gui.pas
private
FButtons: array of TGUITextButton;
FHeader: TGUILabel;
+ FLogo: DWord;
FIndex: Integer;
FFontID: DWORD;
FCounter: Byte;
FMarkerID1: DWORD;
FMarkerID2: DWORD;
public
- constructor Create(FontID: DWORD; Header: string);
+ constructor Create(FontID: DWORD; Logo, Header: string);
destructor Destroy; override;
procedure OnMessage(var Msg: TMessage); override;
function AddButton(fProc: Pointer; Caption: string; ShowWindow: string = ''): TGUITextButton;
function TGUIMainMenu.AddButton(fProc: Pointer; Caption: string; ShowWindow: string = ''): TGUITextButton;
var
a, _x: Integer;
- h, hh: Word;
+ h, hh, lh: Word;
begin
FIndex := 0;
if FButtons[a] <> nil then
_x := Min(_x, (gScreenWidth div 2)-(FButtons[a].GetWidth div 2));
- hh := FHeader.GetHeight;
+ if FLogo <> 0 then e_GetTextureSize(FLogo, nil, @lh);
+ hh := FButtons[High(FButtons)].GetHeight;
- h := hh*(2+Length(FButtons))+MAINMENU_SPACE*(Length(FButtons)-1);
- h := (gScreenHeight div 2)-(h div 2);
+ if FLogo <> 0 then h := lh + hh * (1 + Length(FButtons)) + MAINMENU_SPACE * (Length(FButtons) - 1)
+ else h := hh * (2 + Length(FButtons)) + MAINMENU_SPACE * (Length(FButtons) - 1);
+ h := (gScreenHeight div 2) - (h div 2);
- with FHeader do
+ if FHeader <> nil then with FHeader do
begin
FX := _x;
FY := h;
end;
- Inc(h, hh*2);
+ if FLogo <> 0 then Inc(h, lh)
+ else Inc(h, hh*2);
for a := 0 to High(FButtons) do
begin
FButtons[High(FButtons)] := nil;
end;
-constructor TGUIMainMenu.Create(FontID: DWORD; Header: string);
+constructor TGUIMainMenu.Create(FontID: DWORD; Logo, Header: string);
begin
inherited Create();
g_Texture_Get(MAINMENU_MARKER1, FMarkerID1);
g_Texture_Get(MAINMENU_MARKER2, FMarkerID2);
- FHeader := TGUILabel.Create(Header, FFontID);
- with FHeader do
+ if not g_Texture_Get(Logo, FLogo) then
begin
- FColor := MAINMENU_HEADER_COLOR;
- FX := (gScreenWidth div 2)-(GetWidth div 2);
- FY := (gScreenHeight div 2)-(GetHeight div 2);
+ FHeader := TGUILabel.Create(Header, FFontID);
+ with FHeader do
+ begin
+ FColor := MAINMENU_HEADER_COLOR;
+ FX := (gScreenWidth div 2)-(GetWidth div 2);
+ FY := (gScreenHeight div 2)-(GetHeight div 2);
+ end;
end;
end;
procedure TGUIMainMenu.Draw;
var
a: Integer;
+ w, h: Word;
+
begin
inherited;
- FHeader.Draw;
+ if FHeader <> nil then FHeader.Draw
+ else begin
+ e_GetTextureSize(FLogo, @w, @h);
+ e_Draw(FLogo, ((gScreenWidth div 2) - (w div 2)), FButtons[0].FY - FButtons[0].GetHeight - h, 0, True, False);
+ end;
if FButtons <> nil then
begin
diff --git a/src/game/g_menu.pas b/src/game/g_menu.pas
index f43a8c6459dcd52dc57c82c486f2d553ed8f6057..9aa5b5604d5f4611a6b7fb2783058a4c3a416b82 100644 (file)
--- a/src/game/g_menu.pas
+++ b/src/game/g_menu.pas
begin
e_WriteLog('Loading menu data...', TMsgType.Notify);
+ g_Texture_CreateWADEx('MAINMENU_LOGO', GameWAD+':TEXTURES\MAINLOGO');
g_Texture_CreateWADEx('MAINMENU_MARKER1', GameWAD+':TEXTURES\MARKER1');
g_Texture_CreateWADEx('MAINMENU_MARKER2', GameWAD+':TEXTURES\MARKER2');
g_Texture_CreateWADEx('SCROLL_LEFT', GameWAD+':TEXTURES\SLEFT');
e_CharFont_Remove(gMenuFont);
e_CharFont_Remove(gMenuSmallFont);
+ g_Texture_Delete('MAINMENU_LOGO');
g_Texture_Delete('MAINMENU_MARKER1');
g_Texture_Delete('MAINMENU_MARKER2');
g_Texture_Delete('SCROLL_LEFT');
begin
Menu := TGUIWindow.Create('FirstLanguageMenu');
- with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, ' '))) do
+ with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, '', ' '))) do
begin
Name := 'mmFirstLanguageMenu';
AddButton(@ProcSetFirstRussianLanguage, 'Ðóññêèé', '');
//list: SSArray;
begin
Menu := TGUIWindow.Create('MainMenu');
- with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, _lc[I_MENU_MAIN_MENU]))) do
+ with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, 'MAINMENU_LOGO', _lc[I_MENU_MAIN_MENU]))) do
begin
Name := 'mmMainMenu';
AddButton(nil, _lc[I_MENU_NEW_GAME], 'NewGameMenu');
g_GUI_AddWindow(Menu);
Menu := TGUIWindow.Create('NewGameMenu');
- with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, _lc[I_MENU_NEW_GAME]))) do
+ with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, '', _lc[I_MENU_NEW_GAME]))) do
begin
Name := 'mmNewGameMenu';
AddButton(@ProcSingle1Player, _lc[I_MENU_1_PLAYER]);
g_GUI_AddWindow(Menu);
Menu := TGUIWindow.Create('NetGameMenu');
- with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, _lc[I_MENU_MULTIPLAYER]))) do
+ with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, '', _lc[I_MENU_MULTIPLAYER]))) do
begin
Name := 'mmNetGameMenu';
AddButton(@ProcRecallAddress, _lc[I_MENU_START_CLIENT], 'NetClientMenu');
g_GUI_AddWindow(Menu);
Menu := TGUIWindow.Create('OptionsMenu');
- with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, _lc[I_MENU_OPTIONS]))) do
+ with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, '', _lc[I_MENU_OPTIONS]))) do
begin
Name := 'mmOptionsMenu';
AddButton(nil, _lc[I_MENU_VIDEO_OPTIONS], 'OptionsVideoMenu');
g_GUI_AddWindow(Menu);
Menu := TGUIWindow.Create('GameSingleMenu');
- with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, _lc[I_MENU_MAIN_MENU]))) do
+ with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, '', _lc[I_MENU_MAIN_MENU]))) do
begin
Name := 'mmGameSingleMenu';
AddButton(nil, _lc[I_MENU_LOAD_GAME], 'LoadMenu');
g_GUI_AddWindow(Menu);
Menu := TGUIWindow.Create('GameCustomMenu');
- with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, _lc[I_MENU_MAIN_MENU]))) do
+ with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, '', _lc[I_MENU_MAIN_MENU]))) do
begin
Name := 'mmGameCustomMenu';
AddButton(nil, _lc[I_MENU_CHANGE_PLAYERS], 'TeamMenu');
g_GUI_AddWindow(Menu);
Menu := TGUIWindow.Create('GameServerMenu');
- with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, _lc[I_MENU_MAIN_MENU]))) do
+ with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, '', _lc[I_MENU_MAIN_MENU]))) do
begin
Name := 'mmGameServerMenu';
AddButton(nil, _lc[I_MENU_CHANGE_PLAYERS], 'TeamMenu');
g_GUI_AddWindow(Menu);
Menu := TGUIWindow.Create('GameClientMenu');
- with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, _lc[I_MENU_MAIN_MENU]))) do
+ with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, '', _lc[I_MENU_MAIN_MENU]))) do
begin
Name := 'mmGameClientMenu';
AddButton(nil, _lc[I_MENU_CHANGE_PLAYERS], 'TeamMenu');
g_GUI_AddWindow(Menu);
Menu := TGUIWindow.Create('TeamMenu');
- with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, _lc[I_MENU_CHANGE_PLAYERS]))) do
+ with TGUIMainMenu(Menu.AddChild(TGUIMainMenu.Create(gMenuFont, '', _lc[I_MENU_CHANGE_PLAYERS]))) do
begin
Name := 'mmTeamMenu';
AddButton(@ProcJoinRed, _lc[I_MENU_JOIN_RED], '').Name := 'tmJoinRed';