diff --git a/src/game/g_menu.pas b/src/game/g_menu.pas
index 2d83a526d2b53d96de91f4bcc2f3fb39169d4ec0..d808bf3bdc446bef705d698b86ea094b74892a6d 100644 (file)
--- a/src/game/g_menu.pas
+++ b/src/game/g_menu.pas
g_basic, g_console, g_sound, g_gfx, g_player, g_options, g_weapons,
e_log, SysUtils, CONFIG, g_playermodel, DateUtils,
MAPDEF, Math, g_saveload,
g_basic, g_console, g_sound, g_gfx, g_player, g_options, g_weapons,
e_log, SysUtils, CONFIG, g_playermodel, DateUtils,
MAPDEF, Math, g_saveload,
- e_texture, g_language,
+ e_texture, g_language, e_res,
g_net, g_netmsg, g_netmaster, g_items, e_input, g_touch,
utils, wadreader, g_system;
g_net, g_netmsg, g_netmaster, g_items, e_input, g_touch,
utils, wadreader, g_system;
menu: TGUIMenu;
i: Integer;
ovs: Boolean;
menu: TGUIMenu;
i: Integer;
ovs: Boolean;
+ s: AnsiString;
begin
menu := TGUIMenu(g_GUI_GetWindow('OptionsVideoMenu').GetControl('mOptionsVideoMenu'));
begin
menu := TGUIMenu(g_GUI_GetWindow('OptionsVideoMenu').GetControl('mOptionsVideoMenu'));
sys_EnableVSync(gVSync);
gTextureFilter := TGUISwitch(menu.GetControl('swTextureFilter')).ItemIndex = 0;
sys_EnableVSync(gVSync);
gTextureFilter := TGUISwitch(menu.GetControl('swTextureFilter')).ItemIndex = 0;
- glLegacyNPOT := not (TGUISwitch(menu.GetControl('swLegacyNPOT')).ItemIndex = 0);
+ glNPOTOverride := not (TGUISwitch(menu.GetControl('swLegacyNPOT')).ItemIndex = 0);
menu := TGUIMenu(g_GUI_GetWindow('OptionsSoundMenu').GetControl('mOptionsSoundMenu'));
menu := TGUIMenu(g_GUI_GetWindow('OptionsSoundMenu').GetControl('mOptionsSoundMenu'));
if g_Game_IsClient then MC_SEND_PlayerSettings;
if g_Game_IsClient then MC_SEND_PlayerSettings;
- g_Options_Write(GameDir+'/'+CONFIG_FILENAME);
- g_Console_WriteGameConfig();
+ s := e_GetWriteableDir(ConfigDirs);
+ if s <> '' then
+ g_Options_Write(s + '/' + CONFIG_FILENAME);
+ g_Console_WriteGameConfig;
end;
procedure ReadOptions();
end;
procedure ReadOptions();
if gVSync then ItemIndex := 0 else ItemIndex := 1;
with TGUISwitch(menu.GetControl('swLegacyNPOT')) do
if gVSync then ItemIndex := 0 else ItemIndex := 1;
with TGUISwitch(menu.GetControl('swLegacyNPOT')) do
- if not glLegacyNPOT then ItemIndex := 0 else ItemIndex := 1;
+ if not glNPOTOverride then ItemIndex := 0 else ItemIndex := 1;
menu := TGUIMenu(g_GUI_GetWindow('OptionsSoundMenu').GetControl('mOptionsSoundMenu'));
menu := TGUIMenu(g_GUI_GetWindow('OptionsSoundMenu').GetControl('mOptionsSoundMenu'));
Map: String;
GameMode: Byte;
Options: LongWord;
Map: String;
GameMode: Byte;
Options: LongWord;
+ s: AnsiString;
begin
with TGUIMenu(g_ActiveWindow.GetControl('mCustomGameMenu')) do
begin
begin
with TGUIMenu(g_ActiveWindow.GetControl('mCustomGameMenu')) do
begin
gcMap := Map;
end;
gcMap := Map;
end;
- g_Options_Write_Gameplay_Custom(GameDir+'/'+CONFIG_FILENAME);
+ s := e_GetWriteableDir(ConfigDirs);
+ if s <> '' then
+ g_Options_Write_Gameplay_Custom(s + '/' + CONFIG_FILENAME);
g_Game_StartCustom(Map, GameMode, gcTimeLimit, gcGoalLimit,
gcMaxLives, Options, gcPlayers);
g_Game_StartCustom(Map, GameMode, gcTimeLimit, gcGoalLimit,
gcMaxLives, Options, gcPlayers);
Map: String;
GameMode: Byte;
Options: LongWord;
Map: String;
GameMode: Byte;
Options: LongWord;
+ s: AnsiString;
begin
with TGUIMenu(g_ActiveWindow.GetControl('mNetServerMenu')) do
begin
begin
with TGUIMenu(g_ActiveWindow.GetControl('mNetServerMenu')) do
begin
NetUseMaster := TGUISwitch(GetControl('swUseMaster')).ItemIndex = 0;
end;
NetUseMaster := TGUISwitch(GetControl('swUseMaster')).ItemIndex = 0;
end;
- g_Options_Write_Net_Server(GameDir+'/'+CONFIG_FILENAME);
- g_Options_Write_Gameplay_Net(GameDir+'/'+CONFIG_FILENAME);
+ s := e_GetWriteableDir(ConfigDirs);
+ if s <> '' then
+ begin
+ g_Options_Write_Net_Server(s + '/' + CONFIG_FILENAME);
+ g_Options_Write_Gameplay_Net(s + '/' + CONFIG_FILENAME)
+ end;
g_Game_StartServer(Map, GameMode, gnTimeLimit, gnGoalLimit, gnMaxLives,
Options, gnPlayers, 0, NetPort);
g_Game_StartServer(Map, GameMode, gnTimeLimit, gnGoalLimit, gnMaxLives,
Options, gnPlayers, 0, NetPort);
procedure ProcConnectNetGame();
var
PW: String;
procedure ProcConnectNetGame();
var
PW: String;
+ s: AnsiString;
begin
with TGUIMenu(g_ActiveWindow.GetControl('mNetClientMenu')) do
begin
begin
with TGUIMenu(g_ActiveWindow.GetControl('mNetClientMenu')) do
begin
PW := TGUIEdit(GetControl('edPW')).Text;
end;
PW := TGUIEdit(GetControl('edPW')).Text;
end;
- g_Options_Write_Net_Client(GameDir+'/'+CONFIG_FILENAME);
+ s := e_GetWriteableDir(ConfigDirs);
+ if s <> '' then
+ g_Options_Write_Net_Client(s + '/' + CONFIG_FILENAME);
g_Game_StartClient(NetClientIP, NetClientPort, PW);
end;
procedure ProcEnterPassword();
var
PW: string;
g_Game_StartClient(NetClientIP, NetClientPort, PW);
end;
procedure ProcEnterPassword();
var
PW: string;
+ s: AnsiString;
begin
with TGUIMenu(g_ActiveWindow.GetControl('mClientPasswordMenu')) do
begin
begin
with TGUIMenu(g_ActiveWindow.GetControl('mClientPasswordMenu')) do
begin
PW := TGUIEdit(GetControl('edPW')).Text;
end;
PW := TGUIEdit(GetControl('edPW')).Text;
end;
- g_Options_Write_Net_Client(GameDir+'/'+CONFIG_FILENAME);
+ s := e_GetWriteableDir(ConfigDirs);
+ if s <> '' then
+ g_Options_Write_Net_Client(s + '/' + CONFIG_FILENAME);
g_Game_StartClient(NetClientIP, NetClientPort, PW);
end;
g_Game_StartClient(NetClientIP, NetClientPort, PW);
end;
begin
with TGUIMenu(g_ActiveWindow.GetControl('mCampaignMenu')) do
begin
begin
with TGUIMenu(g_ActiveWindow.GetControl('mCampaignMenu')) do
begin
- WAD := ExtractRelativePath(MapsDir, TGUIFileListBox(GetControl('lsWAD')).SelectedItem());
+ WAD := TGUIFileListBox(GetControl('lsWAD')).SelectedItem();
TwoPlayers := TGUISwitch(GetControl('swPlayers')).ItemIndex = 1;
end;
TwoPlayers := TGUISwitch(GetControl('swPlayers')).ItemIndex = 1;
end;
end;
end;
end;
end;
-procedure ProcSingle1Player();
+procedure ProcSinglePlayer (n: Integer);
+ var wad, map: AnsiString;
+begin
+ wad := g_ExtractWadName(gDefaultMegawadStart);
+ map := g_ExtractFilePathName(gDefaultMegawadStart);
+ if e_FindResource(AllMapDirs, wad) then
+ begin
+ wad := ExpandFileName(wad);
+ g_Game_StartSingle(wad + ':\' + map, False, n);
+ end;
+end;
+
+procedure ProcSingle1Player;
begin
begin
- g_Game_StartSingle(gDefaultMegawadStart, False, 1);
+ ProcSinglePlayer(1)
end;
end;
-procedure ProcSingle2Players();
+procedure ProcSingle2Players;
begin
begin
- g_Game_StartSingle(gDefaultMegawadStart, True, 2);
+ ProcSinglePlayer(2)
end;
procedure ProcSelectMapMenu();
end;
procedure ProcSelectMapMenu();
begin
with TGUIMenu(g_ActiveWindow.GetControl('mSelectMapMenu')) do
begin
begin
with TGUIMenu(g_ActiveWindow.GetControl('mSelectMapMenu')) do
begin
- wad := ExtractRelativePath(MapsDir, TGUIFileListBox(GetControl('lsMapWAD')).SelectedItem());
+ wad := TGUIFileListBox(GetControl('lsMapWAD')).SelectedItem();
map := TGUIListBox(GetControl('lsMapRes')).SelectedItem();
end;
map := TGUIListBox(GetControl('lsMapRes')).SelectedItem();
end;
if yes then gExit := EXIT_SIMPLE else g_GUI_HideWindow;
end;
if yes then gExit := EXIT_SIMPLE else g_GUI_HideWindow;
end;
-procedure ProcSetRussianLanguage();
+procedure ProcSetRussianLanguage;
+ var s: AnsiString;
begin
if gLanguage <> LANGUAGE_RUSSIAN then
begin
begin
if gLanguage <> LANGUAGE_RUSSIAN then
begin
gLanguageChange := True;
gAskLanguage := False;
gLanguageChange := True;
gAskLanguage := False;
- g_Options_Write_Language(GameDir+'/'+CONFIG_FILENAME);
+ s := e_GetWriteableDir(ConfigDirs);
+ if s <> '' then
+ g_Options_Write_Language(s + '/' + CONFIG_FILENAME);
// Ñîõðàíÿåì èçìåíåíèÿ âñåõ íàñòðîåê:
ProcApplyOptions();
end;
end;
// Ñîõðàíÿåì èçìåíåíèÿ âñåõ íàñòðîåê:
ProcApplyOptions();
end;
end;
-procedure ProcSetEnglishLanguage();
+procedure ProcSetEnglishLanguage;
+ var s: AnsiString;
begin
if gLanguage <> LANGUAGE_ENGLISH then
begin
begin
if gLanguage <> LANGUAGE_ENGLISH then
begin
gLanguageChange := True;
gAskLanguage := False;
gLanguageChange := True;
gAskLanguage := False;
- g_Options_Write_Language(GameDir+'/'+CONFIG_FILENAME);
+ s := e_GetWriteableDir(ConfigDirs);
+ if s <> '' then
+ g_Options_Write_Language(s + '/' + CONFIG_FILENAME);
// Ñîõðàíÿåì èçìåíåíèÿ âñåõ íàñòðîåê:
ProcApplyOptions();
// Ñîõðàíÿåì èçìåíåíèÿ âñåõ íàñòðîåê:
ProcApplyOptions();
ProcApplyOptions();
end;
ProcApplyOptions();
end;
-procedure ProcSetFirstRussianLanguage();
+procedure ProcSetFirstRussianLanguage;
+ var s: AnsiString;
begin
gLanguage := LANGUAGE_RUSSIAN;
gLanguageChange := True;
gAskLanguage := False;
begin
gLanguage := LANGUAGE_RUSSIAN;
gLanguageChange := True;
gAskLanguage := False;
- g_Options_Write_Language(GameDir+'/'+CONFIG_FILENAME);
+ s := e_GetWriteableDir(ConfigDirs);
+ if s <> '' then
+ g_Options_Write_Language(s + '/' + CONFIG_FILENAME)
end;
end;
-procedure ProcSetFirstEnglishLanguage();
+procedure ProcSetFirstEnglishLanguage;
+ var s: AnsiString;
begin
gLanguage := LANGUAGE_ENGLISH;
gLanguageChange := True;
gAskLanguage := False;
begin
gLanguage := LANGUAGE_ENGLISH;
gLanguageChange := True;
gAskLanguage := False;
- g_Options_Write_Language(GameDir+'/'+CONFIG_FILENAME);
+ s := e_GetWriteableDir(ConfigDirs);
+ if s <> '' then
+ g_Options_Write_Language(s + '/' + CONFIG_FILENAME)
end;
procedure ProcRecallAddress();
end;
procedure ProcRecallAddress();
Sort := True;
Dirs := True;
FileMask := '*.wad|*.pk3|*.zip|*.dfz';
Sort := True;
Dirs := True;
FileMask := '*.wad|*.pk3|*.zip|*.dfz';
- SetBase(MapsDir+'megawads/');
+ SetBase(MegawadDirs);
end;
with AddLabel(_lc[I_MENU_MAP_NAME]) do
end;
with AddLabel(_lc[I_MENU_MAP_NAME]) do
Sort := True;
Dirs := True;
FileMask := '*.wad|*.pk3|*.zip|*.dfz';
Sort := True;
Dirs := True;
FileMask := '*.wad|*.pk3|*.zip|*.dfz';
- SetBase(MapsDir);
+ SetBase(MapDirs);
end;
with AddList(_lc[I_MENU_MAP_RESOURCE], 12, 4) do
begin
end;
with AddList(_lc[I_MENU_MAP_RESOURCE], 12, 4) do
begin