diff -r bc7b6aa5d67a -r 7030706266df hedgewars/uConsole.pas --- a/hedgewars/uConsole.pas Sun Oct 28 15:18:26 2012 +0100 +++ b/hedgewars/uConsole.pas Fri Dec 06 22:20:53 2019 +0100 @@ -1,6 +1,6 @@ (* * Hedgewars, a free turn based strategy game - * Copyright (c) 2004-2012 Andrey Korotaev + * Copyright (c) 2004-2015 Andrey Korotaev * * 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 @@ -13,7 +13,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *) {$INCLUDE "options.inc"} @@ -21,61 +21,25 @@ unit uConsole; interface -procedure initModule; -procedure freeModule; -procedure WriteToConsole(s: shortstring); -procedure WriteLnToConsole(s: shortstring); -function GetLastConsoleLine: shortstring; -function ShortStringAsPChar(s: shortstring): PChar; - -implementation -uses Types, uVariables, uUtils {$IFDEF ANDROID}, log in 'log.pas'{$ENDIF}; - -const cLinesCount = 8; -var cLineWidth: LongInt; - -type - TTextLine = record - s: shortstring - end; - -var ConsoleLines: array[byte] of TTextLine; - CurrLine: LongInt; - -procedure SetLine(var tl: TTextLine; str: shortstring); -begin -with tl do - s:= str; -end; procedure WriteToConsole(s: shortstring); -{$IFNDEF NOCONSOLE} -var Len: LongInt; - done: boolean; -{$ENDIF} +procedure WriteLnToConsole(s: shortstring); + +var lastConsoleline : shortstring; + +implementation +uses uUtils {$IFDEF ANDROID}, log in 'log.pas'{$ENDIF}; + + +procedure WriteToConsole(s: shortstring); begin {$IFNDEF NOCONSOLE} -AddFileLog('[Con] ' + s); + AddFileLog('[Con] ' + s); {$IFDEF ANDROID} + //TODO integrate this function in the uMobile record Log.__android_log_write(Log.Android_LOG_DEBUG, 'HW_Engine', ShortStringAsPChar('[Con]' + s)); {$ELSE} -Write(stderr, s); -done:= false; - -while not done do - begin - Len:= cLineWidth - Length(ConsoleLines[CurrLine].s); - SetLine(ConsoleLines[CurrLine], ConsoleLines[CurrLine].s + copy(s, 1, Len)); - Delete(s, 1, Len); - if byte(ConsoleLines[CurrLine].s[0]) = cLineWidth then - begin - inc(CurrLine); - if CurrLine = cLinesCount then - CurrLine:= 0; - PByte(@ConsoleLines[CurrLine].s)^:= 0 - end; - done:= (Length(s) = 0); - end; + Write(stderr, s); {$ENDIF} {$ENDIF} end; @@ -83,56 +47,22 @@ procedure WriteLnToConsole(s: shortstring); begin {$IFNDEF NOCONSOLE} -WriteToConsole(s); + WriteToConsole(s); {$IFNDEF ANDROID} -WriteLn(stderr, ''); -inc(CurrLine); -if CurrLine = cLinesCount then - CurrLine:= 0; -PByte(@ConsoleLines[CurrLine].s)^:= 0 + WriteLn(stderr, ''); {$ENDIF} {$ENDIF} + lastConsoleline:= s; end; - +{$IFDEF ANDROID} function ShortStringAsPChar(s: shortstring) : PChar; begin if Length(s) = High(s) then Dec(s[0]); s[Ord(Length(s))+1] := #0; + // returning pointer to stack, rly? ShortStringAsPChar:= @s[1]; end; - -function GetLastConsoleLine: shortstring; -var valueStr: shortstring; - i: LongWord; -begin -i:= (CurrLine + cLinesCount - 2) mod cLinesCount; -valueStr:= ConsoleLines[i].s; - -valueStr:= valueStr + #10; - -i:= (CurrLine + cLinesCount - 1) mod cLinesCount; -valueStr:= valueStr + ConsoleLines[i].s; - -GetLastConsoleLine:= valueStr; -end; - -procedure initModule; -var i: LongInt; -begin - CurrLine:= 0; - - // initConsole - cLineWidth:= cScreenWidth div 10; - if cLineWidth > 255 then - cLineWidth:= 255; - for i:= 0 to Pred(cLinesCount) do - PByte(@ConsoleLines[i])^:= 0; -end; - -procedure freeModule; -begin - -end; +{$ENDIF} end.