summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: bff90d6)
raw | patch | inline | side by side (parent: bff90d6)
author | DeaDDooMER <deaddoomer@deadsoftware.ru> | |
Wed, 14 Aug 2019 18:22:18 +0000 (21:22 +0300) | ||
committer | DeaDDooMER <deaddoomer@deadsoftware.ru> | |
Wed, 14 Aug 2019 18:22:18 +0000 (21:22 +0300) |
src/game/g_console.pas | patch | blob | history | |
src/game/g_touch.pas | patch | blob | history |
diff --git a/src/game/g_console.pas b/src/game/g_console.pas
index 3f3fd8ec2c998132439d1c30cfc78e3a35b701e7..7d953860e9dc7ff6007611e9b3ac3121e0b3ec9e 100644 (file)
--- a/src/game/g_console.pas
+++ b/src/game/g_console.pas
Cons_Y: SmallInt;
ConsoleHeight: Single;
Cons_Shown: Boolean; // Ðèñîâàòü ëè êîíñîëü?
+ InputReady: Boolean;
Line: AnsiString;
CPos: Word;
//ConsoleHistory: SSArray;
procedure g_Console_Switch;
begin
- if gConsoleShow or Cons_Shown or gChatShow then
- g_Touch_ShowKeyboard(False);
gChatShow := False;
gConsoleShow := not gConsoleShow;
Cons_Shown := True;
+ InputReady := False;
+ g_Touch_ShowKeyboard(gConsoleShow or gChatShow);
end;
procedure g_Console_Chat_Switch (Team: Boolean = False);
begin
- if gConsoleShow or Cons_Shown or gChatShow then
- g_Touch_ShowKeyboard(False);
if not g_Game_IsNet then Exit;
gConsoleShow := False;
gChatShow := not gChatShow;
gChatTeam := Team;
Cons_Shown := True;
+ InputReady := False;
Line := '';
CPos := 1;
+ g_Touch_ShowKeyboard(gConsoleShow or gChatShow);
end;
// poor man's floating literal parser; i'm sorry, but `StrToFloat()` sux cocks
gConsoleShow := False;
gChatShow := False;
Cons_Shown := False;
+ InputReady := False;
CPos := 1;
for a := 0 to High(MsgArray) do
begin
if Cons_Shown then
begin
- // Â ïðîöåññå îòêðûòèÿ:
+ (* Open animation *)
if gConsoleShow and (Cons_Y < 0) then
Cons_Y := Cons_Y+Step;
- // Â ïðîöåññå çàêðûòèÿ:
+ (* Colse animation *)
if (not gConsoleShow) and (Cons_Y > -Floor(gScreenHeight * ConsoleHeight)) then
Cons_Y := Cons_Y-Step;
- // Open chat
if gChatShow then
begin
+ (* End open chat animation. Do not show console *)
Cons_Y := -Floor(gScreenHeight * ConsoleHeight);
- Cons_Shown := False;
- g_Touch_ShowKeyboard(True);
- end;
-
- // Îêîí÷àòåëüíî îòêðûëàñü:
+ Cons_Shown := True;
+ InputReady := True;
+// g_Touch_ShowKeyboard(True);
+ end
+ else
if Cons_Y > 0 then
begin
+ (* End open animation *)
Cons_Y := 0;
- g_Touch_ShowKeyboard(True);
- end;
-
- // Îêîí÷àòåëüíî çàêðûëàñü:
+ InputReady := True;
+// g_Touch_ShowKeyboard(True);
+ end
+ else
if Cons_Y <= -Floor(gScreenHeight * ConsoleHeight) then
begin
+ (* End close animation *)
Cons_Y := -Floor(gScreenHeight * ConsoleHeight);
Cons_Shown := False;
+ InputReady := False;
+// g_Touch_ShowKeyboard(False);
end;
end;
if MsgArray[a].Time > 0 then
e_TextureFontPrintFmt(0, offset_y + CHeight * a, MsgArray[a].Msg, gStdFont, True);
- if not Cons_Shown then
+ if gChatShow then
begin
- if gChatShow then
+ if ChatTop then
+ offset_y := 0
+ else
+ offset_y := gScreenHeight - CHeight - 1;
+ if gChatTeam then
begin
- if ChatTop then
- offset_y := 0
- else
- offset_y := gScreenHeight - CHeight - 1;
- if gChatTeam then
- begin
- e_TextureFontPrintEx(0, offset_y, 'say team> ' + Line, gStdFont, 255, 255, 255, 1, True);
- e_TextureFontPrintEx((CPos + 9) * CWidth, offset_y, '_', gStdFont, 255, 255, 255, 1, True);
- end
- else
- begin
- e_TextureFontPrintEx(0, offset_y, 'say> ' + Line, gStdFont, 255, 255, 255, 1, True);
- e_TextureFontPrintEx((CPos + 4) * CWidth, offset_y, '_', gStdFont, 255, 255, 255, 1, True);
- end
- end;
- Exit;
+ e_TextureFontPrintEx(0, offset_y, 'say team> ' + Line, gStdFont, 255, 255, 255, 1, True);
+ e_TextureFontPrintEx((CPos + 9) * CWidth, offset_y, '_', gStdFont, 255, 255, 255, 1, True);
+ end
+ else
+ begin
+ e_TextureFontPrintEx(0, offset_y, 'say> ' + Line, gStdFont, 255, 255, 255, 1, True);
+ e_TextureFontPrintEx((CPos + 4) * CWidth, offset_y, '_', gStdFont, 255, 255, 255, 1, True);
+ end
end;
+ if not Cons_Shown then
+ Exit;
+
if gDebugMode then
begin
e_CharFont_GetSize(gMenuFont, DEBUG_STRING, mfW, mfH);
procedure g_Console_Char(C: AnsiChar);
begin
- Insert(C, Line, CPos);
- CPos := CPos + 1;
+ if InputReady and (gConsoleShow or gChatShow) then
+ begin
+ Insert(C, Line, CPos);
+ CPos := CPos + 1;
+ end
end;
Line := '';
CPos := 1;
gJustChatted := True;
- g_Console_Chat_Switch
+ g_Console_Chat_Switch;
+ InputReady := False;
end;
end;
IK_TAB:
diff --git a/src/game/g_touch.pas b/src/game/g_touch.pas
index faed65c36ab5fc6cb7c1d41d29496ef0bcb3c21e..b9250acb63bd32958b50e96cb4617e1b0d6360f3 100644 (file)
--- a/src/game/g_touch.pas
+++ b/src/game/g_touch.pas
{$IFNDEF HEADLESS}
if g_dbg_input then
e_LogWritefln('g_Touch_ShowKeyboard(%s)', [yes]);
- if yes then
+ (* on desktop we always receive text (needed for cheats) *)
+ if yes or (SDL_HasScreenKeyboardSupport() = SDL_FALSE) then
SDL_StartTextInput
else
SDL_StopTextInput