diff --git a/src/game/g_options.pas b/src/game/g_options.pas
index c70af6d73b516d5de6c97bcee57749185afaf4f3..37aac9da3d198269795ff608afd161a840d84d41 100644 (file)
--- a/src/game/g_options.pas
+++ b/src/game/g_options.pas
-{$MODE DELPHI}
+(* Copyright (C) DooM 2D:Forever Developers
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *)
+{$INCLUDE ../shared/a_modes.inc}
unit g_options;
interface
uses
- g_language;
+ g_language, g_weapons;
type
TPlayerControl = record
KeyNextWeapon: Word;
KeyPrevWeapon: Word;
KeyOpen: Word;
+ KeyStrafe: Word;
+ KeyWeapon: array [WP_FIRST..WP_LAST] of Word;
+
+ KeyRight2: Word;
+ KeyLeft2: Word;
+ KeyUp2: Word;
+ KeyDown2: Word;
+ KeyFire2: Word;
+ KeyJump2: Word;
+ KeyNextWeapon2: Word;
+ KeyPrevWeapon2: Word;
+ KeyOpen2: Word;
+ KeyStrafe2: Word;
+ KeyWeapon2: array [WP_FIRST..WP_LAST] of Word;
end;
TGameControls = record
procedure g_Options_Write_Net_Server(FileName: String);
procedure g_Options_Write_Net_Client(FileName: String);
+const DF_Default_Megawad_Start = 'megawads/DOOM2D.WAD:\MAP01';
+
var
gGameControls: TControls;
gScreenWidth: Word = 800;
gsSDLBufferSize: Integer = 2048;
gSFSDebug: Boolean = False;
gSFSFastMode: Boolean = False;
+ gDefaultMegawadStart: AnsiString = DF_Default_Megawad_Start;
+ gBerserkAutoswitch: Boolean = True;
implementation
uses
e_log, e_input, g_window, g_sound, g_gfx, g_player, Math,
- g_map, g_net, g_netmaster, SysUtils, CONFIG, g_game, g_main, e_textures,
- g_items, GL, GLExt, wadreader;
+ g_map, g_net, g_netmaster, SysUtils, CONFIG, g_game, g_main, e_texture,
+ g_items, GL, GLExt, wadreader, e_graphics;
procedure g_Options_SetDefault();
var
KeyNextWeapon := 73;
KeyPrevWeapon := 71;
KeyOpen := 54;
+ KeyStrafe := 0;
+ for i := 0 to High(KeyWeapon) do
+ KeyWeapon[i] := 0;
+
+ KeyRight2 := 0;
+ KeyLeft2 := 0;
+ KeyUp2 := 0;
+ KeyDown2 := 0;
+ KeyFire2 := 0;
+ KeyJump2 := 0;
+ KeyNextWeapon2 := 0;
+ KeyPrevWeapon2 := 0;
+ KeyOpen2 := 0;
+ KeyStrafe2 := 0;
+ for i := 0 to High(KeyWeapon2) do
+ KeyWeapon2[i] := 0;
end;
with gGameControls.P2Control do
KeyNextWeapon := 19;
KeyPrevWeapon := 17;
KeyOpen := 58;
+ KeyStrafe := 0;
+ for i := 0 to High(KeyWeapon) do
+ KeyWeapon[i] := 0;
+
+ KeyRight2 := 0;
+ KeyLeft2 := 0;
+ KeyUp2 := 0;
+ KeyDown2 := 0;
+ KeyFire2 := 0;
+ KeyJump2 := 0;
+ KeyNextWeapon2 := 0;
+ KeyPrevWeapon2 := 0;
+ KeyOpen2 := 0;
+ KeyStrafe2 := 0;
+ for i := 0 to High(KeyWeapon2) do
+ KeyWeapon2[i] := 0;
end;
with gPlayer1Settings do
i: Integer;
begin
gAskLanguage := True;
- e_WriteLog('Reading config', MSG_NOTIFY);
+ e_WriteLog('Reading config', TMsgType.Notify);
if not FileExists(FileName) then
begin
- e_WriteLog('Config file '+FileName+' not found', MSG_WARNING);
+ e_WriteLog('Config file '+FileName+' not found', TMsgType.Warning);
g_Options_SetDefault();
// Default video options:
KeyNextWeapon := ReadInt('Player1', 'KeyNextWeapon', 19);
KeyPrevWeapon := ReadInt('Player1', 'KeyPrevWeapon', 17);
KeyOpen := ReadInt('Player1', 'KeyOpen', 58);
+ KeyStrafe := ReadInt('Player1', 'KeyStrafe', 0);
+ for i := 0 to High(KeyWeapon) do
+ KeyWeapon[i] := ReadInt('Player1', 'KeyWeapon' + IntToStr(i), 0);
+
+ KeyRight2 := ReadInt('Player1', 'KeyRight2', 0);
+ KeyLeft2 := ReadInt('Player1', 'KeyLeft2', 0);
+ KeyUp2 := ReadInt('Player1', 'KeyUp2', 0);
+ KeyDown2 := ReadInt('Player1', 'KeyDown2', 0);
+ KeyFire2 := ReadInt('Player1', 'KeyFire2', 0);
+ KeyJump2 := ReadInt('Player1', 'KeyJump2', 0);
+ KeyNextWeapon2 := ReadInt('Player1', 'KeyNextWeapon2', 0);
+ KeyPrevWeapon2 := ReadInt('Player1', 'KeyPrevWeapon2', 0);
+ KeyOpen2 := ReadInt('Player1', 'KeyOpen2', 0);
+ KeyStrafe2 := ReadInt('Player1', 'KeyStrafe2', 0);
+ for i := 0 to High(KeyWeapon2) do
+ KeyWeapon2[i] := ReadInt('Player1', 'KeyWeapon2' + IntToStr(i), 0);
end;
with gPlayer1Settings, config do
KeyNextWeapon := ReadInt('Player2', 'KeyNextWeapon', 73);
KeyPrevWeapon := ReadInt('Player2', 'KeyPrevWeapon', 71);
KeyOpen := ReadInt('Player2', 'KeyOpen', 54);
+ KeyStrafe := ReadInt('Player2', 'KeyStrafe', 0);
+ for i := 0 to High(KeyWeapon) do
+ KeyWeapon[i] := ReadInt('Player2', 'KeyWeapon' + IntToStr(i), 0);
+
+ KeyRight2 := ReadInt('Player2', 'KeyRight2', 0);
+ KeyLeft2 := ReadInt('Player2', 'KeyLeft2', 0);
+ KeyUp2 := ReadInt('Player2', 'KeyUp2', 0);
+ KeyDown2 := ReadInt('Player2', 'KeyDown2', 0);
+ KeyFire2 := ReadInt('Player2', 'KeyFire2', 0);
+ KeyJump2 := ReadInt('Player2', 'KeyJump2', 0);
+ KeyNextWeapon2 := ReadInt('Player2', 'KeyNextWeapon2', 0);
+ KeyPrevWeapon2 := ReadInt('Player2', 'KeyPrevWeapon2', 0);
+ KeyOpen2 := ReadInt('Player2', 'KeyOpen2', 0);
+ KeyStrafe2 := ReadInt('Player2', 'KeyStrafe2', 0);
+ for i := 0 to High(KeyWeapon2) do
+ KeyWeapon2[i] := ReadInt('Player2', 'KeyWeapon2' + IntToStr(i), 0);
end;
with gPlayer2Settings, config do
wadoptDebug := gSFSDebug;
gSFSFastMode := config.ReadBool('Game', 'SFSFastMode', False);
wadoptFast := gSFSFastMode;
+ e_FastScreenshots := config.ReadBool('Game', 'FastScreenshots', True);
+ gDefaultMegawadStart := config.ReadStr('Game', 'DefaultMegawadStart', 'megawads/DOOM2D.WAD:\MAP01');
+ gBerserkAutoswitch := config.ReadBool('Game', 'BerserkAutoswitch', False);
// Ãåéìïëåé â ñâîåé èãðå
gcMap := config.ReadStr('GameplayCustom', 'Map', '');
config.Free();
- if gTextureFilter then
- TEXTUREFILTER := GL_LINEAR
- else
- TEXTUREFILTER := GL_NEAREST;
+ //if gTextureFilter then TEXTUREFILTER := GL_LINEAR else TEXTUREFILTER := GL_NEAREST;
end;
procedure g_Options_Write(FileName: String);
config: TConfig;
i: Integer;
begin
- e_WriteLog('Writing config', MSG_NOTIFY);
+ e_WriteLog('Writing config', TMsgType.Notify);
config := TConfig.CreateFile(FileName);
WriteInt('Player1', 'KeyNextWeapon', KeyNextWeapon);
WriteInt('Player1', 'KeyPrevWeapon', KeyPrevWeapon);
WriteInt('Player1', 'KeyOpen', KeyOpen);
+ WriteInt('Player1', 'KeyStrafe', KeyStrafe);
+ for i := 0 to High(KeyWeapon) do
+ WriteInt('Player1', 'KeyWeapon' + IntToStr(i), KeyWeapon[i]);
+
+ WriteInt('Player1', 'KeyRight2', KeyRight2);
+ WriteInt('Player1', 'KeyLeft2', KeyLeft2);
+ WriteInt('Player1', 'KeyUp2', KeyUp2);
+ WriteInt('Player1', 'KeyDown2', KeyDown2);
+ WriteInt('Player1', 'KeyFire2', KeyFire2);
+ WriteInt('Player1', 'KeyJump2', KeyJump2);
+ WriteInt('Player1', 'KeyNextWeapon2', KeyNextWeapon2);
+ WriteInt('Player1', 'KeyPrevWeapon2', KeyPrevWeapon2);
+ WriteInt('Player1', 'KeyOpen2', KeyOpen2);
+ WriteInt('Player1', 'KeyStrafe2', KeyStrafe2);
+ for i := 0 to High(KeyWeapon2) do
+ WriteInt('Player1', 'KeyWeapon2' + IntToStr(i), KeyWeapon2[i]);
WriteStr('Player1', 'Name', Name);
WriteStr('Player1', 'model', Model);
WriteInt('Player2', 'KeyNextWeapon', KeyNextWeapon);
WriteInt('Player2', 'KeyPrevWeapon', KeyPrevWeapon);
WriteInt('Player2', 'KeyOpen', KeyOpen);
+ WriteInt('Player2', 'KeyStrafe', KeyStrafe);
+ for i := 0 to High(KeyWeapon) do
+ WriteInt('Player2', 'KeyWeapon' + IntToStr(i), KeyWeapon[i]);
+
+ WriteInt('Player2', 'KeyRight2', KeyRight2);
+ WriteInt('Player2', 'KeyLeft2', KeyLeft2);
+ WriteInt('Player2', 'KeyUp2', KeyUp2);
+ WriteInt('Player2', 'KeyDown2', KeyDown2);
+ WriteInt('Player2', 'KeyFire2', KeyFire2);
+ WriteInt('Player2', 'KeyJump2', KeyJump2);
+ WriteInt('Player2', 'KeyNextWeapon2', KeyNextWeapon2);
+ WriteInt('Player2', 'KeyPrevWeapon2', KeyPrevWeapon2);
+ WriteInt('Player2', 'KeyOpen2', KeyOpen2);
+ WriteInt('Player2', 'KeyStrafe2', KeyStrafe2);
+ for i := 0 to High(KeyWeapon2) do
+ WriteInt('Player2', 'KeyWeapon2' + IntToStr(i), KeyWeapon2[i]);
WriteStr('Player2', 'Name', Name);
WriteStr('Player2', 'model', Model);
config.WriteInt('Game', 'ChatBubble', gChatBubble);
config.WriteBool('Game', 'SFSDebug', gSFSDebug);
config.WriteBool('Game', 'SFSFastMode', gSFSFastMode);
+ config.WriteBool('Game', 'FastScreenshots', e_FastScreenshots);
+ config.WriteStr('Game', 'DefaultMegawadStart', gDefaultMegawadStart);
+ config.WriteBool('Game', 'BerserkAutoswitch', gBerserkAutoswitch);
config.WriteStr ('GameplayCustom', 'Map', gcMap);
config.WriteStr ('GameplayCustom', 'GameMode', gcGameMode);
var
config: TConfig;
begin
- e_WriteLog('Writing language config', MSG_NOTIFY);
+ e_WriteLog('Writing language config', TMsgType.Notify);
config := TConfig.CreateFile(FileName);
config.WriteStr('Game', 'Language', gLanguage);
config: TConfig;
sW, sH: Integer;
begin
- e_WriteLog('Writing resolution to config', MSG_NOTIFY);
+ e_WriteLog('Writing resolution to config', TMsgType.Notify);
config := TConfig.CreateFile(FileName);
var
config: TConfig;
begin
- e_WriteLog('Writing custom gameplay config', MSG_NOTIFY);
+ e_WriteLog('Writing custom gameplay config', TMsgType.Notify);
config := TConfig.CreateFile(FileName);
var
config: TConfig;
begin
- e_WriteLog('Writing network gameplay config', MSG_NOTIFY);
+ e_WriteLog('Writing network gameplay config', TMsgType.Notify);
config := TConfig.CreateFile(FileName);
var
config: TConfig;
begin
- e_WriteLog('Writing server config', MSG_NOTIFY);
+ e_WriteLog('Writing server config', TMsgType.Notify);
config := TConfig.CreateFile(FileName);
var
config: TConfig;
begin
- e_WriteLog('Writing client config', MSG_NOTIFY);
+ e_WriteLog('Writing client config', TMsgType.Notify);
config := TConfig.CreateFile(FileName);