hedgewars/uChat.pas
branchsdl2transition
changeset 9699 fab319c85a39
parent 9697 198c3ed28fe8
child 9798 f2b18754742f
--- a/hedgewars/uChat.pas	Sun Nov 10 01:45:43 2013 +0400
+++ b/hedgewars/uChat.pas	Sun Nov 10 14:04:15 2013 +0400
@@ -21,6 +21,7 @@
 unit uChat;
 
 interface
+uses SDLh;
 
 procedure initModule;
 procedure freeModule;
@@ -28,11 +29,17 @@
 procedure CleanupInput;
 procedure AddChatString(s: shortstring);
 procedure DrawChat;
-procedure KeyPressChat(Key, Sym: Longword);
 procedure SendHogSpeech(s: shortstring);
 
+{$IFDEF SDL2}
+procedure KeyPressChat(Sym: Longword);
+procedure TextInput(var event: TSDL_TextInputEvent);
+{$ELSE}
+procedure KeyPressChat(Key, Sym: Longword);
+{$ENDIF}
+
 implementation
-uses SDLh, uInputHandler, uTypes, uVariables, uCommands, uUtils, uTextures, uRender, uIO;
+uses uInputHandler, uTypes, uVariables, uCommands, uUtils, uTextures, uRender, uIO;
 
 const MaxStrIndex = 27;
 
@@ -315,7 +322,29 @@
     ResetKbd;
 end;
 
+{$IFDEF SDL2}
+procedure TextInput(var event: TSDL_TextInputEvent);
+var s: shortstring;
+    l: byte;
+begin
+    l:= 0;
+    while event.text[l] <> #0 do
+        begin
+        s[l + 1]:= event.text[l];
+        inc(l)
+        end;
+    s[0]:= char(l);
+
+    if byte(InputStr.s[0]) + l > 240 then exit;
+
+    InputStrL[byte(InputStr.s[0]) + l]:= InputStr.s[0];
+    SetLine(InputStr, InputStr.s + s, true)
+end;
+
+procedure KeyPressChat(Sym: Longword);
+{$ELSE}
 procedure KeyPressChat(Key, Sym: Longword);
+{$ENDIF}
 const firstByteMark: array[0..3] of byte = (0, $C0, $E0, $F0);
 var i, btw, index: integer;
     utf8: shortstring;
@@ -364,6 +393,8 @@
         else
             action:= false;
         end;
+
+{$IFNDEF SDL2}
     if not action and (Key <> 0) then
         begin
         if (Key < $80) then
@@ -391,6 +422,7 @@
         InputStrL[byte(InputStr.s[0]) + btw]:= InputStr.s[0];
         SetLine(InputStr, InputStr.s + utf8, true)
         end
+{$ENDIF}
 end;
 
 procedure chChatMessage(var s: shortstring);