X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fgame%2Fg_console.pas;h=5953403c7dd3aa4f4e714d7e1a99de1e927fb770;hb=683e1735a7efbf7342dec58a49d7f559a1e75fea;hp=8b25d01e0903c6313fffdca6f7a2d6af9a2f8f7e;hpb=dfdeb17c6cae4834cab6969259ccbe75e2049798;p=d2df-sdl.git diff --git a/src/game/g_console.pas b/src/game/g_console.pas index 8b25d01..5953403 100644 --- a/src/game/g_console.pas +++ b/src/game/g_console.pas @@ -39,7 +39,7 @@ uses procedure g_Console_Init; procedure g_Console_Update; -procedure g_Console_Draw; +procedure g_Console_Draw (MessagesOnly: Boolean = False); procedure g_Console_Char (C: AnsiChar); procedure g_Console_Control (K: Word); procedure g_Console_Process (L: AnsiString; quiet: Boolean=false); @@ -115,8 +115,6 @@ type const - Step = 32; - Alpha = 25; MsgTime = 144; MaxScriptRecursion = 16; @@ -128,8 +126,8 @@ var RecursionLimitHit: Boolean = False; Cons_Y: SmallInt; ConsoleHeight: Single; - Cons_Shown: Boolean; // Ðèñîâàòü ëè êîíñîëü? - InputReady: Boolean; + Cons_Shown: Boolean; // draw console + InputReady: Boolean; // allow text input in console/chat Line: AnsiString; CPos: Word; //ConsoleHistory: SSArray; @@ -149,14 +147,15 @@ var end; menu_toggled: BOOLEAN; (* hack for menu controls *) ChatTop: BOOLEAN; + ConsoleStep: Single; + ConsoleTrans: Single; procedure g_Console_Switch; begin - if gConsoleShow then - Cons_Y := Max(Cons_Y, -Floor(gScreenHeight * ConsoleHeight)) - else - Cons_Y := Min(Cons_Y, -Floor(gScreenHeight * ConsoleHeight)); + Cons_Y := Min(0, Max(Cons_Y, -Floor(gScreenHeight * ConsoleHeight))); + if Cons_Shown = False then + Cons_Y := -Floor(gScreenHeight * ConsoleHeight); gChatShow := False; gConsoleShow := not gConsoleShow; Cons_Shown := True; @@ -167,10 +166,9 @@ end; procedure g_Console_Chat_Switch (Team: Boolean = False); begin if not g_Game_IsNet then Exit; - if gConsoleShow then - Cons_Y := Max(Cons_Y, -Floor(gScreenHeight * ConsoleHeight)) - else - Cons_Y := Min(Cons_Y, -Floor(gScreenHeight * ConsoleHeight)); + Cons_Y := Min(0, Max(Cons_Y, -Floor(gScreenHeight * ConsoleHeight))); + if Cons_Shown = False then + Cons_Y := -Floor(gScreenHeight * ConsoleHeight); gConsoleShow := False; gChatShow := not gChatShow; gChatTeam := Team; @@ -988,28 +986,25 @@ begin g_Console_Add(''); end; -procedure g_Console_Update(); +procedure g_Console_Update; var - a, b: Integer; + a, b, Step: Integer; begin if Cons_Shown then begin + Step := Max(1, Round(Floor(gScreenHeight * ConsoleHeight) * ConsoleStep)); if gConsoleShow then begin (* Open animation *) Cons_Y := Min(Cons_Y + Step, 0); - if Cons_Y >= 0 then - InputReady := True + InputReady := True end else begin (* Close animation *) Cons_Y := Max(Cons_Y - Step, -Floor(gScreenHeight * ConsoleHeight)); - if Cons_Y <= -Floor(gScreenHeight * ConsoleHeight) then - begin - Cons_Shown := False; - InputReady := False - end + Cons_Shown := Cons_Y > -Floor(gScreenHeight * ConsoleHeight); + InputReady := False end; if gChatShow then @@ -1097,7 +1092,7 @@ begin until not cbufLineUp(sp, ep); end; -procedure g_Console_Draw(); +procedure g_Console_Draw(MessagesOnly: Boolean = False); var CWidth, CHeight: Byte; mfW, mfH: Word; @@ -1114,6 +1109,8 @@ begin if MsgArray[a].Time > 0 then e_TextureFontPrintFmt(0, offset_y + CHeight * a, MsgArray[a].Msg, gStdFont, True); + if MessagesOnly then Exit; + if gChatShow then begin if ChatTop then @@ -1144,7 +1141,7 @@ begin _RGB(128, 0, 0), 2.0); end; - e_DrawSize(ID, 0, Cons_Y, Alpha, False, False, gScreenWidth, Floor(gScreenHeight * ConsoleHeight)); + e_DrawSize(ID, 0, Cons_Y, Round(ConsoleTrans * 255), False, False, gScreenWidth, Floor(gScreenHeight * ConsoleHeight)); e_TextureFontPrint(0, Cons_Y + Floor(gScreenHeight * ConsoleHeight) - CHeight - 4, '> ' + Line, gStdFont); drawConsoleText(); @@ -1914,11 +1911,15 @@ end; initialization conRegVar('chat_at_top', @ChatTop, 'draw chat at top border', 'draw chat at top border'); conRegVar('console_height', @ConsoleHeight, 0.0, 1.0, 'set console size', 'set console size'); + conRegVar('console_trans', @ConsoleTrans, 0.0, 1.0, 'set console transparency', 'set console transparency'); + conRegVar('console_step', @ConsoleStep, 0.0, 1.0, 'set console animation speed', 'set console animation speed'); {$IFDEF ANDROID} ChatTop := True; - ConsoleHeight := 0.35 + ConsoleHeight := 0.35; {$ELSE} ChatTop := False; - ConsoleHeight := 0.5 + ConsoleHeight := 0.5; {$ENDIF} + ConsoleTrans := 0.1; + ConsoleStep := 0.07; end.