X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_gui.pas;h=c6b22b8e82d3cbc3b3af1615a38921ee07c4e442;hb=0c447046675a6de0d4cfb88e3cfc31b885138ba1;hp=7e1c60353a920c72263a2f8e0cf04ee6e5b47a2d;hpb=f148382f0e8a0b17c4ced434699c04c3a81fc68c;p=d2df-sdl.git diff --git a/src/game/g_gui.pas b/src/game/g_gui.pas index 7e1c603..c6b22b8 100644 --- a/src/game/g_gui.pas +++ b/src/game/g_gui.pas @@ -17,51 +17,42 @@ unit g_gui; interface -uses - {$IFDEF USE_MEMPOOL}mempool,{$ENDIF} - g_base, e_input, e_log, g_playermodel, g_basic, MAPDEF, utils; + uses + {$IFDEF USE_MEMPOOL} + mempool, + {$ENDIF} + g_base, g_playermodel, MAPDEF, utils + ; const - MAINMENU_HEADER_COLOR: TRGB = (R:255; G:255; B:255); + MAINMENU_ITEMS_COLOR: TRGB = (R:255; G:255; B:255); MAINMENU_UNACTIVEITEMS_COLOR: TRGB = (R:192; G:192; B:192); - MAINMENU_CLICKSOUND = 'MENU_SELECT'; - MAINMENU_CHANGESOUND = 'MENU_CHANGE'; + MAINMENU_HEADER_COLOR: TRGB = (R:255; G:255; B:255); MAINMENU_SPACE = 4; - MAINMENU_MARKER1 = 'MAINMENU_MARKER1'; - MAINMENU_MARKER2 = 'MAINMENU_MARKER2'; MAINMENU_MARKERDELAY = 24; - WINDOW_CLOSESOUND = 'MENU_CLOSE'; - MENU_HEADERCOLOR: TRGB = (R:255; G:255; B:255); + MENU_ITEMSTEXT_COLOR: TRGB = (R:255; G:255; B:255); MENU_UNACTIVEITEMS_COLOR: TRGB = (R:128; G:128; B:128); MENU_ITEMSCTRL_COLOR: TRGB = (R:255; G:0; B:0); MENU_VSPACE = 2; MENU_HSPACE = 32; + MENU_MARKERDELAY = 24; + + MAPPREVIEW_WIDTH = 8; + MAPPREVIEW_HEIGHT = 8; + + KEYREAD_QUERY = '<...>'; + KEYREAD_CLEAR = '???'; + + WINDOW_CLOSESOUND = 'MENU_CLOSE'; + MAINMENU_CLICKSOUND = 'MENU_SELECT'; + MAINMENU_CHANGESOUND = 'MENU_CHANGE'; MENU_CLICKSOUND = 'MENU_SELECT'; MENU_CHANGESOUND = 'MENU_CHANGE'; - MENU_MARKERDELAY = 24; - SCROLL_LEFT = 'SCROLL_LEFT'; - SCROLL_RIGHT = 'SCROLL_RIGHT'; - SCROLL_MIDDLE = 'SCROLL_MIDDLE'; - SCROLL_MARKER = 'SCROLL_MARKER'; SCROLL_ADDSOUND = 'SCROLL_ADD'; SCROLL_SUBSOUND = 'SCROLL_SUB'; - EDIT_LEFT = 'EDIT_LEFT'; - EDIT_RIGHT = 'EDIT_RIGHT'; - EDIT_MIDDLE = 'EDIT_MIDDLE'; - EDIT_CURSORCOLOR: TRGB = (R:200; G:0; B:0); - EDIT_CURSORLEN = 10; - KEYREAD_QUERY = '<...>'; - KEYREAD_CLEAR = '???'; - KEYREAD_TIMEOUT = 24; - MAPPREVIEW_WIDTH = 8; - MAPPREVIEW_HEIGHT = 8; - BSCROLL_UPA = 'BSCROLL_UP_A'; - BSCROLL_UPU = 'BSCROLL_UP_U'; - BSCROLL_DOWNA = 'BSCROLL_DOWN_A'; - BSCROLL_DOWNU = 'BSCROLL_DOWN_U'; - BSCROLL_MIDDLE = 'BSCROLL_MIDDLE'; + WM_KEYDOWN = 101; WM_CHAR = 102; WM_USER = 110; @@ -75,22 +66,6 @@ type lParam: LongInt; end; - TFontType = (Texture, Character); - - TFont = class{$IFDEF USE_MEMPOOL}(TPoolObject){$ENDIF} - private - FID: DWORD; - FScale: Single; - FFontType: TFontType; - public - constructor Create(FontID: DWORD; FontType: TFontType); - destructor Destroy; override; - procedure Draw(X, Y: Integer; Text: string; R, G, B: Byte); - procedure GetTextSize(Text: string; var w, h: Word); - property Scale: Single read FScale write FScale; - property ID: DWORD read FID; - end; - TGUIControl = class; TGUIWindow = class; @@ -168,20 +143,20 @@ type private FText: string; FColor: TRGB; - FFont: TFont; + FBigFont: Boolean; FSound: string; FShowWindow: string; public Proc: procedure; ProcEx: procedure (sender: TGUITextButton); - constructor Create(aProc: Pointer; FontID: DWORD; Text: string); + constructor Create(aProc: Pointer; BigFont: Boolean; Text: string); destructor Destroy(); override; procedure OnMessage(var Msg: TMessage); override; procedure Update(); override; procedure Click(Silent: Boolean = False); property Caption: string read FText write FText; property Color: TRGB read FColor write FColor; - property Font: TFont read FFont write FFont; + property BigFont: Boolean read FBigFont write FBigFont; property ShowWindow: string read FShowWindow write FShowWindow; end; @@ -189,17 +164,17 @@ type private FText: string; FColor: TRGB; - FFont: TFont; + FBigFont: Boolean; FFixedLen: Word; FOnClickEvent: TOnClickEvent; public - constructor Create(Text: string; FontID: DWORD); + constructor Create(Text: string; BigFont: Boolean); procedure OnMessage(var Msg: TMessage); override; property OnClick: TOnClickEvent read FOnClickEvent write FOnClickEvent; property FixedLength: Word read FFixedLen write FFixedLen; property Text: string read FText write FText; property Color: TRGB read FColor write FColor; - property Font: TFont read FFont write FFont; + property BigFont: Boolean read FBigFont write FBigFont; end; TGUIScroll = class(TGUIControl) @@ -221,27 +196,27 @@ type TGUISwitch = class(TGUIControl) private - FFont: TFont; + FBigFont: Boolean; FItems: TGUIItemsList; FIndex: Integer; FColor: TRGB; FOnChangeEvent: TOnChangeEvent; public - constructor Create(FontID: DWORD); + constructor Create(BigFont: Boolean); procedure OnMessage(var Msg: TMessage); override; procedure AddItem(Item: string); procedure Update; override; function GetText: string; property ItemIndex: Integer read FIndex write FIndex; property Color: TRGB read FColor write FColor; - property Font: TFont read FFont write FFont; + property BigFont: Boolean read FBigFont write FBigFont; property OnChange: TOnChangeEvent read FOnChangeEvent write FOnChangeEvent; property Items: TGUIItemsList read FItems; end; TGUIEdit = class(TGUIControl) private - FFont: TFont; + FBigFont: Boolean; FCaretPos: Integer; FMaxLength: Word; FWidth: Word; @@ -253,7 +228,7 @@ type FInvalid: Boolean; procedure SetText(Text: string); public - constructor Create(FontID: DWORD); + constructor Create(BigFont: Boolean); procedure OnMessage(var Msg: TMessage); override; procedure Update; override; property OnChange: TOnChangeEvent read FOnChangeEvent write FOnChangeEvent; @@ -263,7 +238,7 @@ type property OnlyDigits: Boolean read FOnlyDigits write FOnlyDigits; property Text: string read FText write SetText; property Color: TRGB read FColor write FColor; - property Font: TFont read FFont write FFont; + property BigFont: Boolean read FBigFont write FBigFont; property Invalid: Boolean read FInvalid write FInvalid; property CaretPos: Integer read FCaretPos; @@ -271,17 +246,17 @@ type TGUIKeyRead = class(TGUIControl) private - FFont: TFont; + FBigFont: Boolean; FColor: TRGB; FKey: Word; FIsQuery: Boolean; public - constructor Create(FontID: DWORD); + constructor Create(BigFont: Boolean); procedure OnMessage(var Msg: TMessage); override; function WantActivationKey (key: LongInt): Boolean; override; property Key: Word read FKey write FKey; property Color: TRGB read FColor write FColor; - property Font: TFont read FFont write FFont; + property BigFont: Boolean read FBigFont write FBigFont; property IsQuery: Boolean read FIsQuery; end; @@ -289,21 +264,20 @@ type // can hold two keys TGUIKeyRead2 = class(TGUIControl) private - FFont: TFont; - FFontID: DWORD; + FBigFont: Boolean; FColor: TRGB; FKey0, FKey1: Word; // this should be an array. sorry. FKeyIdx: Integer; FIsQuery: Boolean; FMaxKeyNameWdt: Integer; public - constructor Create(FontID: DWORD); + constructor Create(BigFont: Boolean); procedure OnMessage(var Msg: TMessage); override; function WantActivationKey (key: LongInt): Boolean; override; property Key0: Word read FKey0 write FKey0; property Key1: Word read FKey1 write FKey1; property Color: TRGB read FColor write FColor; - property Font: TFont read FFont write FFont; + property BigFont: Boolean read FBigFont write FBigFont; property IsQuery: Boolean read FIsQuery; property MaxKeyNameWdt: Integer read FMaxKeyNameWdt; @@ -373,7 +347,7 @@ type FItems: SSArray; FActiveColor: TRGB; FUnActiveColor: TRGB; - FFont: TFont; + FBigFont: Boolean; FStartLine: Integer; FIndex: Integer; FWidth: Word; @@ -387,7 +361,7 @@ type procedure FSetIndex(aIndex: Integer); public - constructor Create(FontID: DWORD; Width, Height: Word); + constructor Create(BigFont: Boolean; Width, Height: Word); procedure OnMessage(var Msg: TMessage); override; procedure AddItem(Item: String); function ItemExists (item: String): Boolean; @@ -403,7 +377,7 @@ type property DrawScrollBar: Boolean read FDrawScroll write FDrawScroll; property ActiveColor: TRGB read FActiveColor write FActiveColor; property UnActiveColor: TRGB read FUnActiveColor write FUnActiveColor; - property Font: TFont read FFont write FFont; + property BigFont: Boolean read FBigFont write FBigFont; property Width: Word read FWidth; property Height: Word read FHeight; @@ -432,7 +406,7 @@ type TGUIMemo = class(TGUIControl) private FLines: SSArray; - FFont: TFont; + FBigFont: Boolean; FStartLine: Integer; FWidth: Word; FHeight: Word; @@ -440,14 +414,14 @@ type FDrawBack: Boolean; FDrawScroll: Boolean; public - constructor Create(FontID: DWORD; Width, Height: Word); + constructor Create(BigFont: Boolean; Width, Height: Word); procedure OnMessage(var Msg: TMessage); override; procedure Clear; procedure SetText(Text: string); property DrawBack: Boolean read FDrawBack write FDrawBack; property DrawScrollBar: Boolean read FDrawScroll write FDrawScroll; property Color: TRGB read FColor write FColor; - property Font: TFont read FFont write FFont; + property BigFont: Boolean read FBigFont write FBigFont; property Width: Word read FWidth; property Height: Word read FHeight; @@ -462,10 +436,10 @@ type FButtons: TGUITextButtonList; FHeader: TGUILabel; FIndex: Integer; - FFontID: DWORD; + FBigFont: Boolean; FCounter: Byte; // !!! update it within render public - constructor Create(FontID: DWORD; Header: string); + constructor Create(BigFont: Boolean; Header: string); destructor Destroy; override; procedure OnMessage(var Msg: TMessage); override; function AddButton(fProc: Pointer; Caption: string; ShowWindow: string = ''): TGUITextButton; @@ -495,14 +469,14 @@ type FItems: TMenuItemList; FHeader: TGUILabel; FIndex: Integer; - FFontID: DWORD; + FBigFont: Boolean; FCounter: Byte; FAlign: Boolean; FLeft: Integer; FYesNo: Boolean; function NewItem(): Integer; public - constructor Create(HeaderFont, ItemsFont: DWORD; Header: string); + constructor Create(HeaderBigFont, ItemsBigFont: Boolean; Header: string); destructor Destroy; override; procedure OnMessage(var Msg: TMessage); override; procedure AddSpace(); @@ -531,7 +505,7 @@ type property Counter: Byte read FCounter; property Index: Integer read FIndex; property Items: TMenuItemList read FItems; - property FontID: DWORD read FFontID; + property BigFont: Boolean read FBigFont; end; var @@ -555,8 +529,9 @@ uses g_system, {$ENDIF} {$IFDEF ENABLE_RENDER} - r_gui, r_textures, r_graphics, + r_render, {$ENDIF} + e_input, e_log, g_sound, SysUtils, e_res, g_game, Math, StrUtils, g_player, g_options, g_console, g_map, g_weapons, xdynrec, wadreader; @@ -565,7 +540,7 @@ uses var Saved_Windows: SSArray; -function GetLines (text: string; FontID: DWORD; MaxWidth: Word): SSArray; +function GetLines (text: string; BigFont: Boolean; MaxWidth: Word): SSArray; var k: Integer = 1; lines: Integer = 0; @@ -589,10 +564,16 @@ function GetLines (text: string; FontID: DWORD; MaxWidth: Word): SSArray; end; function LineWidth (): Integer; inline; - var w, h: Word; + {$IFDEF ENABLE_RENDER} + var w, h: Integer; + {$ENDIF} begin - e_CharFont_GetSize(FontID, GetLine(i, False), w, h); - Result := w; + {$IFDEF ENABLE_RENDER} + r_Render_GetStringSize(BigFont, GetLine(i, False), w, h); + Result := w; + {$ELSE} + Result := 0; + {$ENDIF} end; begin @@ -916,7 +897,7 @@ end; {$ENDIF} begin {$IFDEF ENABLE_RENDER} - r_GUI_GetSize(Self, Result, h); + r_Render_GetControlSize(Self, Result, h); {$ELSE} Result := 0; {$ENDIF} @@ -928,7 +909,7 @@ end; {$ENDIF} begin {$IFDEF ENABLE_RENDER} - r_GUI_GetSize(Self, w, Result); + r_Render_GetControlSize(Self, w, Result); {$ELSE} Result := 0; {$ENDIF} @@ -946,15 +927,14 @@ begin if FShowWindow <> '' then g_GUI_ShowWindow(FShowWindow); end; -constructor TGUITextButton.Create(aProc: Pointer; FontID: DWORD; Text: string); +constructor TGUITextButton.Create(aProc: Pointer; BigFont: Boolean; Text: string); begin inherited Create(); Self.Proc := aProc; ProcEx := nil; - FFont := TFont.Create(FontID, TFontType.Character); - + FBigFont := BigFont; FText := Text; end; @@ -983,56 +963,21 @@ begin inherited; end; -{ TFont } - -constructor TFont.Create(FontID: DWORD; FontType: TFontType); -begin - FID := FontID; - FScale := 1; - FFontType := FontType; -end; - -destructor TFont.Destroy; -begin - - inherited; -end; - -procedure TFont.Draw(X, Y: Integer; Text: string; R, G, B: Byte); -begin - if FFontType = TFontType.Character then e_CharFont_PrintEx(ID, X, Y, Text, _RGB(R, G, B), FScale) - else e_TextureFontPrintEx(X, Y, Text, ID, R, G, B, FScale); -end; - -procedure TFont.GetTextSize(Text: string; var w, h: Word); -var - cw, ch: Byte; -begin - if FFontType = TFontType.Character then e_CharFont_GetSize(ID, Text, w, h) - else - begin - e_TextureFontGetSize(ID, cw, ch); - w := cw*Length(Text); - h := ch; - end; - - w := Round(w*FScale); - h := Round(h*FScale); -end; - { TGUIMainMenu } function TGUIMainMenu.AddButton(fProc: Pointer; Caption: string; ShowWindow: string = ''): TGUITextButton; -var - a, _x: Integer; - h, hh: Word; - lw: Word = 0; - lh: Word = 0; + var + {$IFDEF ENABLE_RENDER} + lw: Integer; + {$ENDIF} + a, _x: Integer; + h, hh: Word; + lh: Integer; begin FIndex := 0; SetLength(FButtons, Length(FButtons)+1); - FButtons[High(FButtons)] := TGUITextButton.Create(fProc, FFontID, Caption); + FButtons[High(FButtons)] := TGUITextButton.Create(fProc, FBigFont, Caption); FButtons[High(FButtons)].ShowWindow := ShowWindow; with FButtons[High(FButtons)] do begin @@ -1047,8 +992,12 @@ begin if FButtons[a] <> nil then _x := Min(_x, (gScreenWidth div 2)-(FButtons[a].GetWidth div 2)); - if FHeader = nil then - r_GUI_GetLogoSize(lw, lh); + lh := 0; + {$IFDEF ENABLE_RENDER} + lw := 0; + if FHeader = nil then + r_Render_GetLogoSize(lw, lh); + {$ENDIF} hh := FButtons[High(FButtons)].GetHeight; if FHeader = nil then h := lh + hh * (1 + Length(FButtons)) + MAINMENU_SPACE * (Length(FButtons) - 1) @@ -1085,17 +1034,17 @@ begin FButtons[High(FButtons)] := nil; end; -constructor TGUIMainMenu.Create(FontID: DWORD; Header: string); +constructor TGUIMainMenu.Create(BigFont: Boolean; Header: string); begin inherited Create(); FIndex := -1; - FFontID := FontID; + FBigFont := BigFont; FCounter := MAINMENU_MARKERDELAY; if Header <> '' then begin - FHeader := TGUILabel.Create(Header, FFontID); + FHeader := TGUILabel.Create(Header, BigFont); with FHeader do begin FColor := MAINMENU_HEADER_COLOR; @@ -1205,12 +1154,11 @@ end; { TGUILabel } -constructor TGUILabel.Create(Text: string; FontID: DWORD); +constructor TGUILabel.Create(Text: string; BigFont: Boolean); begin inherited Create(); - FFont := TFont.Create(FontID, TFontType.Character); - + FBigFont := BigFont; FText := Text; FFixedLen := 0; FOnClickEvent := nil; @@ -1239,7 +1187,7 @@ begin i := NewItem(); with FItems[i] do begin - Control := TGUITextButton.Create(Proc, FFontID, fText); + Control := TGUITextButton.Create(Proc, FBigFont, fText); with Control as TGUITextButton do begin ShowWindow := _ShowWindow; @@ -1264,7 +1212,7 @@ begin i := NewItem(); with FItems[i] do begin - Text := TGUILabel.Create(fText, FFontID); + Text := TGUILabel.Create(fText, FBigFont); with Text do begin FColor := MENU_ITEMSTEXT_COLOR; @@ -1281,7 +1229,7 @@ var a, i: Integer; l: SSArray; begin - l := GetLines(fText, FFontID, MaxWidth); + l := GetLines(fText, FBigFont, MaxWidth); if l = nil then Exit; @@ -1290,7 +1238,7 @@ begin i := NewItem(); with FItems[i] do begin - Text := TGUILabel.Create(l[a], FFontID); + Text := TGUILabel.Create(l[a], FBigFont); if FYesNo then begin with Text do begin FColor := _RGB(255, 0, 0); end; @@ -1321,18 +1269,18 @@ begin ReAlign(); end; -constructor TGUIMenu.Create(HeaderFont, ItemsFont: DWORD; Header: string); +constructor TGUIMenu.Create(HeaderBigFont, ItemsBigFont: Boolean; Header: string); begin inherited Create(); FItems := nil; FIndex := -1; - FFontID := ItemsFont; + FBigFont := ItemsBigFont; FCounter := MENU_MARKERDELAY; FAlign := True; FYesNo := false; - FHeader := TGUILabel.Create(Header, HeaderFont); + FHeader := TGUILabel.Create(Header, HeaderBigFont); with FHeader do begin FX := (gScreenWidth div 2)-(GetWidth div 2); @@ -1514,10 +1462,13 @@ begin end; procedure TGUIMenu.ReAlign(); -var - a, tx, cx, w, h: Integer; - cww: array of Integer; // cached widths - maxcww: Integer; + var + {$IFDEF ENABLE_RENDER} + fw, fh: Integer; + {$ENDIF} + a, tx, cx, w, h: Integer; + cww: array of Integer; // cached widths + maxcww: Integer; begin if FItems = nil then Exit; @@ -1584,7 +1535,12 @@ begin if (ControlType = TGUIListBox) or (ControlType = TGUIFileListBox) then h := h+(FItems[a].Control as TGUIListBox).GetHeight() else - h := h+e_CharFont_GetMaxHeight(FFontID); + begin + {$IFDEF ENABLE_RENDER} + r_Render_GetMaxFontSize(FBigFont, fw, fh); + h := h + fh; + {$ENDIF} + end; end; end; @@ -1636,7 +1592,15 @@ begin if (ControlType = TGUIListBox) or (ControlType = TGUIFileListBox) then Inc(h, (Control as TGUIListBox).GetHeight+MENU_VSPACE) else if ControlType = TGUIMemo then Inc(h, (Control as TGUIMemo).GetHeight+MENU_VSPACE) - else Inc(h, e_CharFont_GetMaxHeight(FFontID)+MENU_VSPACE); + else + begin + {$IFDEF ENABLE_RENDER} + r_Render_GetMaxFontSize(FBigFont, fw, fh); + h := h + fh + MENU_VSPACE; + {$ELSE} + h := h + MENU_VSPACE; + {$ENDIF} + end; end; end; @@ -1674,7 +1638,7 @@ begin begin Control := TGUIScroll.Create(); - Text := TGUILabel.Create(fText, FFontID); + Text := TGUILabel.Create(fText, FBigFont); with Text do begin FColor := MENU_ITEMSTEXT_COLOR; @@ -1697,10 +1661,10 @@ begin i := NewItem(); with FItems[i] do begin - Control := TGUISwitch.Create(FFontID); + Control := TGUISwitch.Create(FBigFont); (Control as TGUISwitch).FColor := MENU_ITEMSCTRL_COLOR; - Text := TGUILabel.Create(fText, FFontID); + Text := TGUILabel.Create(fText, FBigFont); with Text do begin FColor := MENU_ITEMSTEXT_COLOR; @@ -1723,7 +1687,7 @@ begin i := NewItem(); with FItems[i] do begin - Control := TGUIEdit.Create(FFontID); + Control := TGUIEdit.Create(FBigFont); with Control as TGUIEdit do begin FWindow := Self.FWindow; @@ -1732,7 +1696,7 @@ begin if fText = '' then Text := nil else begin - Text := TGUILabel.Create(fText, FFontID); + Text := TGUILabel.Create(fText, FBigFont); Text.FColor := MENU_ITEMSTEXT_COLOR; end; @@ -1767,14 +1731,14 @@ begin i := NewItem(); with FItems[i] do begin - Control := TGUIKeyRead.Create(FFontID); + Control := TGUIKeyRead.Create(FBigFont); with Control as TGUIKeyRead do begin FWindow := Self.FWindow; FColor := MENU_ITEMSCTRL_COLOR; end; - Text := TGUILabel.Create(fText, FFontID); + Text := TGUILabel.Create(fText, FBigFont); with Text do begin FColor := MENU_ITEMSTEXT_COLOR; @@ -1797,14 +1761,14 @@ begin i := NewItem(); with FItems[i] do begin - Control := TGUIKeyRead2.Create(FFontID); + Control := TGUIKeyRead2.Create(FBigFont); with Control as TGUIKeyRead2 do begin FWindow := Self.FWindow; FColor := MENU_ITEMSCTRL_COLOR; end; - Text := TGUILabel.Create(fText, FFontID); + Text := TGUILabel.Create(fText, FBigFont); with Text do begin FColor := MENU_ITEMSCTRL_COLOR; //MENU_ITEMSTEXT_COLOR; @@ -1828,7 +1792,7 @@ begin i := NewItem(); with FItems[i] do begin - Control := TGUIListBox.Create(FFontID, Width, Height); + Control := TGUIListBox.Create(FBigFont, Width, Height); with Control as TGUIListBox do begin FWindow := Self.FWindow; @@ -1836,7 +1800,7 @@ begin FUnActiveColor := MENU_ITEMSTEXT_COLOR; end; - Text := TGUILabel.Create(fText, FFontID); + Text := TGUILabel.Create(fText, FBigFont); with Text do begin FColor := MENU_ITEMSTEXT_COLOR; @@ -1859,7 +1823,7 @@ begin i := NewItem(); with FItems[i] do begin - Control := TGUIFileListBox.Create(FFontID, Width, Height); + Control := TGUIFileListBox.Create(FBigFont, Width, Height); with Control as TGUIFileListBox do begin FWindow := Self.FWindow; @@ -1869,7 +1833,7 @@ begin if fText = '' then Text := nil else begin - Text := TGUILabel.Create(fText, FFontID); + Text := TGUILabel.Create(fText, FBigFont); Text.FColor := MENU_ITEMSTEXT_COLOR; end; @@ -1890,14 +1854,14 @@ begin i := NewItem(); with FItems[i] do begin - Control := TGUILabel.Create('', FFontID); + Control := TGUILabel.Create('', FBigFont); with Control as TGUILabel do begin FWindow := Self.FWindow; FColor := MENU_ITEMSCTRL_COLOR; end; - Text := TGUILabel.Create(fText, FFontID); + Text := TGUILabel.Create(fText, FBigFont); with Text do begin FColor := MENU_ITEMSTEXT_COLOR; @@ -1920,7 +1884,7 @@ begin i := NewItem(); with FItems[i] do begin - Control := TGUIMemo.Create(FFontID, Width, Height); + Control := TGUIMemo.Create(FBigFont, Width, Height); with Control as TGUIMemo do begin FWindow := Self.FWindow; @@ -1929,7 +1893,7 @@ begin if fText = '' then Text := nil else begin - Text := TGUILabel.Create(fText, FFontID); + Text := TGUILabel.Create(fText, FBigFont); Text.FColor := MENU_ITEMSTEXT_COLOR; end; @@ -2024,13 +1988,13 @@ begin if FIndex = -1 then FIndex := 0; end; -constructor TGUISwitch.Create(FontID: DWORD); +constructor TGUISwitch.Create(BigFont: Boolean); begin inherited Create(); FIndex := -1; - FFont := TFont.Create(FontID, TFontType.Character); + FBigFont := BigFont; end; function TGUISwitch.GetText: string; @@ -2090,12 +2054,11 @@ end; { TGUIEdit } -constructor TGUIEdit.Create(FontID: DWORD); +constructor TGUIEdit.Create(BigFont: Boolean); begin inherited Create(); - FFont := TFont.Create(FontID, TFontType.Character); - + FBigFont := BigFont; FMaxLength := 0; FWidth := 0; FInvalid := false; @@ -2179,13 +2142,12 @@ end; { TGUIKeyRead } -constructor TGUIKeyRead.Create(FontID: DWORD); +constructor TGUIKeyRead.Create(BigFont: Boolean); begin inherited Create(); FKey := 0; FIsQuery := false; - - FFont := TFont.Create(FontID, TFontType.Character); + FBigFont := BigFont; end; function TGUIKeyRead.WantActivationKey (key: LongInt): Boolean; @@ -2256,10 +2218,10 @@ end; { TGUIKeyRead2 } -constructor TGUIKeyRead2.Create(FontID: DWORD); -var - a: Byte; - w, h: Word; +constructor TGUIKeyRead2.Create(BigFont: Boolean); + {$IFDEF ENABLE_RENDER} + var a: Byte; w, h: Integer; + {$ENDIF} begin inherited Create(); @@ -2268,23 +2230,22 @@ begin FKeyIdx := 0; FIsQuery := False; - FFontID := FontID; - FFont := TFont.Create(FontID, TFontType.Character); + FBigFont := BigFont; FMaxKeyNameWdt := 0; - for a := 0 to 255 do - begin - FFont.GetTextSize(e_KeyNames[a], w, h); - FMaxKeyNameWdt := Max(FMaxKeyNameWdt, w); - end; - - FMaxKeyNameWdt := FMaxKeyNameWdt-(FMaxKeyNameWdt div 3); - - FFont.GetTextSize(KEYREAD_QUERY, w, h); - if w > FMaxKeyNameWdt then FMaxKeyNameWdt := w; - FFont.GetTextSize(KEYREAD_CLEAR, w, h); - if w > FMaxKeyNameWdt then FMaxKeyNameWdt := w; + {$IFDEF ENABLE_RENDER} + for a := 0 to 255 do + begin + r_Render_GetStringSize(BigFont, e_KeyNames[a], w, h); + FMaxKeyNameWdt := Max(FMaxKeyNameWdt, w); + end; + FMaxKeyNameWdt := FMaxKeyNameWdt-(FMaxKeyNameWdt div 3); + r_Render_GetStringSize(BigFont, KEYREAD_QUERY, w, h); + if w > FMaxKeyNameWdt then FMaxKeyNameWdt := w; + r_Render_GetStringSize(BigFont, KEYREAD_CLEAR, w, h); + if w > FMaxKeyNameWdt then FMaxKeyNameWdt := w; + {$ENDIF} end; function TGUIKeyRead2.WantActivationKey (key: LongInt): Boolean; @@ -2615,12 +2576,11 @@ begin FIndex := -1; end; -constructor TGUIListBox.Create(FontID: DWORD; Width, Height: Word); +constructor TGUIListBox.Create(BigFont: Boolean; Width, Height: Word); begin inherited Create(); - FFont := TFont.Create(FontID, TFontType.Character); - + FBigFont := BigFont; FWidth := Width; FHeight := Height; FIndex := -1; @@ -2983,12 +2943,11 @@ begin FStartLine := 0; end; -constructor TGUIMemo.Create(FontID: DWORD; Width, Height: Word); +constructor TGUIMemo.Create(BigFont: Boolean; Width, Height: Word); begin inherited Create(); - FFont := TFont.Create(FontID, TFontType.Character); - + FBigFont := BigFont; FWidth := Width; FHeight := Height; FDrawBack := True; @@ -3032,16 +2991,13 @@ end; procedure TGUIMemo.SetText(Text: string); begin FStartLine := 0; - FLines := GetLines(Text, FFont.ID, FWidth*16); + FLines := GetLines(Text, FBigFont, FWidth * 16); end; { TGUIimage } procedure TGUIimage.ClearImage(); begin - if FImageRes = '' then Exit; - - g_Texture_Delete(FImageRes); FImageRes := ''; end; @@ -3064,9 +3020,7 @@ end; procedure TGUIimage.SetImage(Res: string); begin - ClearImage(); - - if g_Texture_CreateWADEx(Res, Res) then FImageRes := Res; + FImageRes := Res; end; procedure TGUIimage.Update();