DEADSOFTWARE

Added touchscreen controls
[d2df-sdl.git] / src / game / g_console.pas
index 19c83b6f67c7c5ddc5269a838c295bc7643ff246..230e5b6e8cf4234d88c3a020fe854b79e8aaeb6d 100644 (file)
@@ -1,4 +1,4 @@
-(* Copyright (C)  DooM 2D:Forever Developers
+(* 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
@@ -19,7 +19,7 @@ unit g_console;
 interface
 
 uses
-  wadreader; // for SArray
+  utils; // for SSArray
 
 procedure g_Console_Init ();
 procedure g_Console_Update ();
@@ -36,7 +36,7 @@ procedure conwriteln (const s: AnsiString; show: Boolean=false);
 procedure conwritefln (const s: AnsiString; args: array of const; show: Boolean=false);
 
 // <0: no arg; 0/1: true/false
-function conGetBoolArg (p: SArray; idx: Integer): Integer;
+function conGetBoolArg (p: SSArray; idx: Integer): Integer;
 
 procedure g_Console_Chat_Switch (team: Boolean=false);
 
@@ -60,15 +60,15 @@ implementation
 
 uses
   g_textures, g_main, e_graphics, e_input, g_game,
-  SysUtils, g_basic, g_options, Math,
-  g_menu, g_language, g_net, g_netmsg, e_log, conbuf, utils;
+  SysUtils, g_basic, g_options, Math, g_touch,
+  g_menu, g_language, g_net, g_netmsg, e_log, conbuf;
 
 
 type
   PCommand = ^TCommand;
 
-  TCmdProc = procedure (p: SArray);
-  TCmdProcEx = procedure (me: PCommand; p: SArray);
+  TCmdProc = procedure (p: SSArray);
+  TCmdProcEx = procedure (me: PCommand; p: SSArray);
 
   TCommand = record
     cmd: AnsiString;
@@ -83,7 +83,7 @@ type
 
   TAlias = record
     name: AnsiString;
-    commands: SArray;
+    commands: SSArray;
   end;
 
 
@@ -103,9 +103,9 @@ var
   Cons_Shown: Boolean; // Ðèñîâàòü ëè êîíñîëü?
   Line: AnsiString;
   CPos: Word;
-  //ConsoleHistory: SArray;
-  CommandHistory: SArray;
-  Whitelist: SArray;
+  //ConsoleHistory: SSArray;
+  CommandHistory: SSArray;
+  Whitelist: SSArray;
   commands: Array of TCommand = nil;
   Aliases: Array of TAlias = nil;
   CmdIndex: Word;
@@ -157,7 +157,7 @@ end;
 
 // ////////////////////////////////////////////////////////////////////////// //
 // <0: no arg; 0/1: true/false; 666: toggle
-function conGetBoolArg (p: SArray; idx: Integer): Integer;
+function conGetBoolArg (p: SSArray; idx: Integer): Integer;
 begin
   if (idx < 0) or (idx > High(p)) then begin result := -1; exit; end;
   result := 0;
@@ -168,7 +168,7 @@ begin
 end;
 
 
-procedure boolVarHandler (me: PCommand; p: SArray);
+procedure boolVarHandler (me: PCommand; p: SSArray);
   procedure binaryFlag (var flag: Boolean; msg: AnsiString);
   begin
     if (Length(p) > 2) then
@@ -220,7 +220,7 @@ type
   end;
 
 
-procedure singleVarHandler (me: PCommand; p: SArray);
+procedure singleVarHandler (me: PCommand; p: SSArray);
 var
   pv: PVarSingle;
   nv: Single;
@@ -265,7 +265,7 @@ var
   cp: PCommand;
   pv: PVarSingle;
 begin
-  GetMem(pv, sizeof(pv^));
+  GetMem(pv, sizeof(TVarSingle));
   pv.val := pvar;
   pv.min := amin;
   pv.max := amax;
@@ -300,7 +300,7 @@ begin
     end;
 end;
 
-function ParseAlias(Str: AnsiString): SArray;
+function ParseAlias(Str: AnsiString): SSArray;
 begin
   Result := nil;
 
@@ -316,7 +316,7 @@ begin
   end;
 end;
 
-procedure ConsoleCommands(p: SArray);
+procedure ConsoleCommands(p: SSArray);
 var
   cmd, s: AnsiString;
   a, b: Integer;
@@ -469,6 +469,13 @@ begin
       g_Console_Add('exec <script file>');
   end;
 
+  if (cmd = 'ver') or (cmd = 'version') then
+  begin
+    conwriteln('Doom 2D: Forever v. ' + GAME_VERSION);
+    conwritefln('Net protocol v. %d', [NET_PROTOCOL_VER]);
+    conwritefln('Build date: %s at %s', [GAME_BUILDDATE, GAME_BUILDTIME]);
+  end;
+
   if cmd = 'alias' then
   begin
     // alias [alias_name] [commands]
@@ -563,7 +570,7 @@ begin
 end;
 
 
-procedure segfault (p: SArray);
+procedure segfault (p: SSArray);
 var
   pp: PByte = nil;
 begin
@@ -602,6 +609,8 @@ begin
   AddCommand('exec', ConsoleCommands);
   AddCommand('alias', ConsoleCommands);
   AddCommand('call', ConsoleCommands);
+  AddCommand('ver', ConsoleCommands);
+  AddCommand('version', ConsoleCommands);
 
   AddCommand('d_window', DebugCommands);
   AddCommand('d_sounds', DebugCommands);
@@ -917,6 +926,7 @@ begin
   if gChatShow then Exit;
   gConsoleShow := not gConsoleShow;
   Cons_Shown := True;
+  g_Touch_ShowKeyboard(gConsoleShow or gChatShow);
 end;
 
 procedure g_Console_Chat_Switch(Team: Boolean = False);
@@ -929,6 +939,7 @@ begin
     gChatEnter := False;
   Line := '';
   CPos := 1;
+  g_Touch_ShowKeyboard(gConsoleShow or gChatShow);
 end;
 
 procedure g_Console_Char(C: AnsiChar);
@@ -1105,6 +1116,7 @@ begin
           CPos := 1;
           gChatShow := False;
           gJustChatted := True;
+          g_Touch_ShowKeyboard(gConsoleShow or gChatShow);
         end;
     end;
     IK_TAB:
@@ -1168,7 +1180,7 @@ begin
     end;
 end;
 
-function ParseString(Str: AnsiString): SArray;
+function ParseString(Str: AnsiString): SSArray;
 begin
   Result := nil;
 
@@ -1319,7 +1331,7 @@ end;
 
 function g_Console_CommandBlacklisted(C: AnsiString): Boolean;
 var
-  Arr: SArray;
+  Arr: SSArray;
   i: Integer;
 begin
   Result := True;
@@ -1340,7 +1352,7 @@ end;
 
 procedure g_Console_Process(L: AnsiString; quiet: Boolean = False);
 var
-  Arr: SArray;
+  Arr: SSArray;
   i: Integer;
 begin
   Arr := nil;