Warning: ob_start(): function 'compress_handler' not found or invalid function name in /www/htdocs/xfmantis/core.php on line 18
0002332: Nachrichten auf Geoscape zusammenfassen - Mantis
Mantis - X-Force
Viewing Issue Advanced Details
2332 Allgemein feature always 05.10.09 19:07 06.11.09 03:00
Natter  
gnfalex  
normal  
closed  
fixed  
none    
none V0.915b05  
0002332: Nachrichten auf Geoscape zusammenfassen
Gnfalex hat eine kleine Prozedur geschrieben, die gleiche Nachrichten auf dem Geoscape zusammenfasst. Außerdem werden Nachrichten nur noch im unteren Drittel angezeigt (hier sollte man aber zukünftig überlegen, ob man die Zeilenhöhe aus der Schriftgröße ermitteln sollte - es könnte sein, das die je nach Auflösung nicht 15 Pixel beträgt).
  procedure MergeMessages;
  var
    i :integer;
    Count,temp : String;
    symbol : char;
  begin
    // If some messages already exist,try to unit into one
        // United string look like
    // "28.01.2042 at 01:48: One 'Glas' was produced. (X18)"
    // where 18 -number of message reteates. Previous messages (10,13,15) are erased.
    // If unsimilar messages are exist then sequence is stopped and restarted. Example:
    // "28.01.2042 at 05:13: One 'Glas' was produced. (X103)
    // 28.01.2042 at 05:14: The research for the project 'Tragbares Lenkwaffensystem' has been finished.
    // 28.01.2042 at 06:20: One 'Glas' was produced. (X28)"
    // I didn't check it with messages consist from several strings, but it must work.
    // Then it may look like:
    // "28.01.2042 at 05:13: One 'Glas' was (X103)
    // produced.
    // 28.01.2042 at 05:14: The research for the project 'Tragbares Lenkwaffensystem' has been finished.
    // 28.01.2042 at 06:20: One 'Glas' was (X28)
    // produced."
    temp:=fMessages[firstIndex-1];
    if pos(text,temp)<>0 then
    begin
      count:='';
      for i := pos('(X',temp)+2 to length(temp)-1 do
      begin
        symbol:=temp[i];
        if (i=2) or (symbol=')') then break;
        count:=count+symbol;
      end;
      if count='' then count:='1';
      count:=inttostr(strtoint(count)+1);
      repeat
      begin
        fMessages.Delete(firstindex-1);
        firstindex:=firstindex-1;
      end;
      until (firstindex=0) or (fMessages[firstindex-1][1]<>0000254);
      text:=text+' (X'+count+')';
    end;
  end;

There are no notes attached to this issue.