index 6e587868d4114524cb45887784d91528fdc99a9c..75c3e2ee5e505cc63edb64cbb0622740f13fcf1d 100644 (file)
var
gStdFont: DWORD;
+ gMenuFont: DWORD;
+ gMenuSmallFont: DWORD;
implementation
uses
{$INCLUDE ../nogl/noGLuses.inc}
-{$IFDEF ENABLE_HOLMES}
- g_holmes,
-{$ENDIF}
+ {$IFDEF ENABLE_HOLMES}
+ g_holmes,
+ {$ENDIF}
+ {$IFDEF ENABLE_MENU}
+ g_gui, g_menu,
+ {$ENDIF}
SysUtils, Classes, Math,
g_base, g_basic, r_graphics,
g_system, g_touch,
- MAPDEF, xprofiler, utils, wadreader,
+ MAPDEF, xprofiler, utils, wadreader, CONFIG,
e_input, e_sound,
- g_language, g_console, g_menu, g_triggers, g_player, g_options, g_monsters, g_map, g_panel,
- g_items, g_weapons, g_gfx, g_phys, g_net, g_gui, g_netmaster,
+ g_language, g_console, g_triggers, g_player, g_options, g_monsters, g_map, g_panel,
+ g_items, g_weapons, g_gfx, g_phys, g_net, g_netmaster,
g_game, r_console, r_gfx, r_items, r_map, r_monsters, r_weapons, r_netmaster, r_player, r_textures,
r_playermodel
;
BackID: DWORD = DWORD(-1);
gBackSize: TDFPoint;
+procedure LoadStdFont(cfgres, texture: string; var FontID: DWORD);
+var
+ cwdt, chgt: Byte;
+ spc: ShortInt;
+ ID: DWORD;
+ wad: TWADFile;
+ cfgdata: Pointer;
+ cfglen: Integer;
+ config: TConfig;
+begin
+ cfglen := 0;
+
+ wad := TWADFile.Create;
+ if wad.ReadFile(GameWAD) then
+ wad.GetResource('FONTS/'+cfgres, cfgdata, cfglen);
+ wad.Free();
+
+ if cfglen <> 0 then
+ begin
+ g_Texture_CreateWADEx('FONT_STD', GameWAD+':FONTS\'+texture);
+
+ config := TConfig.CreateMem(cfgdata, cfglen);
+ cwdt := Min(Max(config.ReadInt('FontMap', 'CharWidth', 0), 0), 255);
+ chgt := Min(Max(config.ReadInt('FontMap', 'CharHeight', 0), 0), 255);
+ spc := Min(Max(config.ReadInt('FontMap', 'Kerning', 0), -128), 127);
+
+ if g_Texture_Get('FONT_STD', ID) then
+ e_TextureFontBuild(ID, FontID, cwdt, chgt, spc);
+
+ config.Free();
+ end;
+
+ if cfglen <> 0 then FreeMem(cfgdata);
+end;
+
+procedure LoadFont(txtres, fntres: string; var FontID: DWORD);
+var
+ cwdt, chgt: Byte;
+ spc: ShortInt;
+ CharID: DWORD;
+ wad: TWADFile;
+ cfgdata, fntdata: Pointer;
+ cfglen, fntlen: Integer;
+ config: TConfig;
+ chrwidth: Integer;
+ a: Byte;
+begin
+ cfglen := 0;
+ fntlen := 0;
+
+ wad := TWADFile.Create;
+ if wad.ReadFile(GameWAD) then
+ begin
+ wad.GetResource('FONTS/'+txtres, cfgdata, cfglen);
+ wad.GetResource('FONTS/'+fntres, fntdata, fntlen);
+ end;
+ wad.Free();
+
+ if cfglen <> 0 then
+ begin
+ config := TConfig.CreateMem(cfgdata, cfglen);
+ cwdt := Min(Max(config.ReadInt('FontMap', 'CharWidth', 0), 0), 255);
+ chgt := Min(Max(config.ReadInt('FontMap', 'CharHeight', 0), 0), 255);
+
+ spc := Min(Max(config.ReadInt('FontMap', 'Kerning', 0), -128), 127);
+ FontID := e_CharFont_Create(spc);
+
+ for a := 0 to 255 do
+ begin
+ chrwidth := config.ReadInt(IntToStr(a), 'Width', 0);
+ if chrwidth = 0 then Continue;
+
+ if e_CreateTextureMemEx(fntdata, fntlen, CharID, cwdt*(a mod 16), chgt*(a div 16),
+ cwdt, chgt) then
+ e_CharFont_AddChar(FontID, CharID, Chr(a), chrwidth);
+ end;
+
+ config.Free();
+ end;
+
+ if cfglen <> 0 then FreeMem(cfgdata);
+ if fntlen <> 0 then FreeMem(fntdata);
+end;
+
procedure r_Game_Load;
var
wl, hl: Integer;
end;
end;
+{$IFDEF ENABLE_MENU}
if gPauseMain and gGameOn and (g_ActiveWindow = nil) then
+{$ELSE}
+ if gPauseMain and gGameOn then
+{$ENDIF}
begin
//e_DrawFillQuad(0, 0, gScreenWidth-1, gScreenHeight-1, 48, 48, 48, 180);
e_DarkenQuadWH(0, 0, gScreenWidth, gScreenHeight, 150);
if not gGameOn then
begin
- if (gState = STATE_MENU) then
- begin
- if (g_ActiveWindow = nil) or (g_ActiveWindow.BackTexture = '') then r_Game_DrawMenuBackground('MENU_BACKGROUND');
- // F3 at menu will show game loading dialog
- if e_KeyPressed(IK_F3) then g_Menu_Show_LoadMenu(true);
- if (g_ActiveWindow <> nil) then
+ {$IFDEF ENABLE_MENU}
+ if (gState = STATE_MENU) then
begin
- //e_DrawFillQuad(0, 0, gScreenWidth-1, gScreenHeight-1, 48, 48, 48, 180);
- e_DarkenQuadWH(0, 0, gScreenWidth, gScreenHeight, 150);
- end
- else
- begin
- // F3 at titlepic will show game loading dialog
- if e_KeyPressed(IK_F3) then
+ if (g_ActiveWindow = nil) or (g_ActiveWindow.BackTexture = '') then r_Game_DrawMenuBackground('MENU_BACKGROUND');
+ // F3 at menu will show game loading dialog
+ if e_KeyPressed(IK_F3) then g_Menu_Show_LoadMenu(true);
+ if (g_ActiveWindow <> nil) then
begin
- g_Menu_Show_LoadMenu(true);
- if (g_ActiveWindow <> nil) then e_DarkenQuadWH(0, 0, gScreenWidth, gScreenHeight, 150);
+ //e_DrawFillQuad(0, 0, gScreenWidth-1, gScreenHeight-1, 48, 48, 48, 180);
+ e_DarkenQuadWH(0, 0, gScreenWidth, gScreenHeight, 150);
+ end
+ else
+ begin
+ // F3 at titlepic will show game loading dialog
+ if e_KeyPressed(IK_F3) then
+ begin
+ g_Menu_Show_LoadMenu(true);
+ if (g_ActiveWindow <> nil) then e_DarkenQuadWH(0, 0, gScreenWidth, gScreenHeight, 150);
+ end;
end;
end;
- end;
+ {$ELSE}
+ r_Game_DrawMenuBackground('MENU_BACKGROUND');
+ {$ENDIF}
if gState = STATE_FOLD then
begin
DrawCustomStat();
- if g_ActiveWindow <> nil then
- begin
- //e_DrawFillQuad(0, 0, gScreenWidth-1, gScreenHeight-1, 48, 48, 48, 180);
- e_DarkenQuadWH(0, 0, gScreenWidth, gScreenHeight, 150);
- end;
+ {$IFDEF ENABLE_MENU}
+ if g_ActiveWindow <> nil then
+ begin
+ //e_DrawFillQuad(0, 0, gScreenWidth-1, gScreenHeight-1, 48, 48, 48, 180);
+ e_DarkenQuadWH(0, 0, gScreenWidth, gScreenHeight, 150);
+ end;
+ {$ENDIF}
end;
if gState = STATE_INTERSINGLE then
DrawSingleStat();
- if g_ActiveWindow <> nil then
- begin
- //e_DrawFillQuad(0, 0, gScreenWidth-1, gScreenHeight-1, 48, 48, 48, 180);
- e_DarkenQuadWH(0, 0, gScreenWidth, gScreenHeight, 150);
- end;
+ {$IFDEF ENABLE_MENU}
+ if g_ActiveWindow <> nil then
+ begin
+ //e_DrawFillQuad(0, 0, gScreenWidth-1, gScreenHeight-1, 48, 48, 48, 180);
+ e_DarkenQuadWH(0, 0, gScreenWidth, gScreenHeight, 150);
+ end;
+ {$ENDIF}
end;
end;
if g_Texture_Get('TEXTURE_endpic', ID) then r_Game_DrawMenuBackground('TEXTURE_endpic')
else r_Game_DrawMenuBackground(_lc[I_TEXTURE_ENDPIC]);
- if g_ActiveWindow <> nil then
- begin
- //e_DrawFillQuad(0, 0, gScreenWidth-1, gScreenHeight-1, 48, 48, 48, 180);
- e_DarkenQuadWH(0, 0, gScreenWidth, gScreenHeight, 150);
- end;
+ {$IFDEF ENABLE_MENU}
+ if g_ActiveWindow <> nil then
+ begin
+ //e_DrawFillQuad(0, 0, gScreenWidth-1, gScreenHeight-1, 48, 48, 48, 180);
+ e_DarkenQuadWH(0, 0, gScreenWidth, gScreenHeight, 150);
+ end;
+ {$ENDIF}
end;
if gState = STATE_SLIST then
end;
end;
+{$IFDEF ENABLE_MENU}
if g_ActiveWindow <> nil then
begin
if gGameOn then
end;
g_ActiveWindow.Draw();
end;
+{$ENDIF}
{$IFNDEF HEADLESS}
r_Console_Draw();