DEADSOFTWARE

more input related fixes
[d2df-sdl.git] / src / game / g_main.pas
index c789caf7785c74a09a79e9e691f62b6277898551..23113e77f629fd2b426ddc783bc1c31f0b30a33f 100644 (file)
@@ -32,7 +32,7 @@ var
   MapsDir: string;
   ModelsDir: string;
   GameWAD: string;
-
+  gSkipFirstChar: Boolean; (* hack for console/chat input *)
 
 implementation
 
@@ -202,10 +202,12 @@ begin
   e_InitInput();
   g_Touch_Init;
 
+(*
   if (e_JoysticksAvailable > 0) then
     e_WriteLog('Input: Joysticks available.', TMsgType.Notify)
   else
     e_WriteLog('Input: No Joysticks.', TMsgType.Notify);
+*)
 
   if (not gNoSound) then
   begin
@@ -496,10 +498,19 @@ begin
 
     IK_BACKQUOTE, VK_CONSOLE: // <`/~/¨/¸>:
       begin
-        g_Console_Switch();
+        if not gChatShow then
+          g_Console_Switch()
+      end;
+
+    IK_ESCAPE: // <Esc>:
+      begin
+        if gChatShow then
+          g_Console_Chat_Switch
+        else if gConsoleShow then
+          g_Console_Switch
       end;
 
-    IK_ESCAPE, VK_ESCAPE: // <Esc>:
+    VK_ESCAPE: // <Esc>:
       begin
         if gChatShow then
         begin
@@ -514,7 +525,7 @@ begin
         else if (g_ActiveWindow <> nil) then
         begin
           Msg.Msg := WM_KEYDOWN;
-          Msg.WParam := IK_ESCAPE;
+          Msg.WParam := VK_ESCAPE;
           g_ActiveWindow.OnMessage(Msg);
           if (not g_Game_IsNet) and (g_ActiveWindow = nil) then g_Game_Pause(false); //Fn loves to do this
         end
@@ -588,6 +599,12 @@ var
   Msg: g_gui.TMessage;
   a: Integer;
 begin
+  if gSkipFirstChar then
+  begin
+    gSkipFirstChar := False;
+    Exit
+  end;
+
   if (not gChatShow) and ((C = '`') or (C = '~') or (C = '¸') or (C = '¨')) then Exit;
 
   if gConsoleShow or gChatShow then