Changeset 51


Ignore:
Timestamp:
Dec 20, 2021, 6:45:12 PM (2 years ago)
Author:
chronos
Message:
  • Modified: Updated Common package.
  • Removed: CoolTranslator merged into Common package.
  • Modified: Code cleanup.
Location:
trunk
Files:
14 added
5 deleted
28 edited

Legend:

Unmodified
Added
Removed
  • trunk/Forms/UFormNewGame.pas

    r47 r51  
    288288procedure TFormNewGame.FormCreate(Sender: TObject);
    289289begin
    290   Core.CoolTranslator1.TranslateComponentRecursive(Self);
     290  Core.Translator1.TranslateComponentRecursive(Self);
    291291  Players := TPlayers.Create;
    292292end;
  • trunk/Forms/UMainForm.lfm

    r47 r51  
    11object MainForm: TMainForm
    2   Left = 486
    3   Height = 515
    4   Top = 258
    5   Width = 642
     2  Left = 692
     3  Height = 618
     4  Top = 479
     5  Width = 770
    66  Caption = 'Tunneler'
    7   ClientHeight = 490
    8   ClientWidth = 642
    9   DesignTimePPI = 120
     7  ClientHeight = 584
     8  ClientWidth = 770
     9  DesignTimePPI = 144
    1010  Menu = MainMenu1
    1111  OnClose = FormClose
     
    1616  OnKeyUp = FormKeyUp
    1717  OnShow = FormShow
    18   LCLVersion = '2.0.2.0'
     18  LCLVersion = '2.0.12.0'
    1919  object StatusBar1: TStatusBar
    2020    Left = 0
    21     Height = 28
    22     Top = 462
    23     Width = 642
     21    Height = 27
     22    Top = 557
     23    Width = 770
    2424    Panels = <   
    2525      item
    26         Width = 62
     26        Width = 74
    2727      end   
    2828      item
    29         Width = 62
     29        Width = 74
    3030      end   
    3131      item
    32         Width = 62
     32        Width = 74
    3333      end   
    3434      item
    35         Width = 62
     35        Width = 74
    3636      end   
    3737      item
    38         Width = 62
     38        Width = 74
    3939      end   
    4040      item
    41         Width = 62
     41        Width = 74
    4242      end   
    4343      item
    44         Width = 62
     44        Width = 74
    4545      end>
    4646    ParentFont = False
     
    4949  object Image1: TImage
    5050    Left = 0
    51     Height = 462
     51    Height = 557
    5252    Top = 0
    53     Width = 642
     53    Width = 770
    5454    Align = alClient
    5555    OnMouseLeave = Image1MouseLeave
     
    5959    Interval = 50
    6060    OnTimer = TimerDrawTimer
    61     left = 124
    62     top = 63
     61    Left = 149
     62    Top = 76
    6363  end
    6464  object MainMenu1: TMainMenu
    65     left = 230
    66     top = 20
     65    Left = 276
     66    Top = 24
    6767    object MenuItem1: TMenuItem
    6868      Caption = 'Game'
     
    9393    Interval = 20
    9494    OnTimer = TimerEngineTickTimer
    95     left = 120
    96     top = 130
     95    Left = 144
     96    Top = 156
    9797  end
    9898  object ActionList1: TActionList
    99     left = 360
    100     top = 40
     99    Left = 432
     100    Top = 48
    101101    object AFullScreen: TAction
    102102      Caption = 'Fullscreen mode'
     
    132132    RootName = 'CONFIG'
    133133    ReadOnly = False
    134     left = 124
    135     top = 300
     134    Left = 149
     135    Top = 360
     136  end
     137  object AboutDialog1: TAboutDialog
     138    CoolTranslator = Core.Translator1
     139    ThemeManager = Core.ThemeManager1
     140    ApplicationInfo = Core.ApplicationInfo
     141    Left = 308
     142    Top = 181
    136143  end
    137144end
  • trunk/Forms/UMainForm.pas

    r47 r51  
    88  XMLConf, Classes, SysUtils, FileUtil, Forms, Controls, Graphics,
    99  Dialogs, ExtCtrls, ComCtrls, Menus, ActnList, UEngine, UPlatform, Math,
    10   DateUtils, GraphType, UPersistentForm, UApplicationInfo, UCoolTranslator,
    11   LCLType, URegistry;
     10  DateUtils, GraphType, UPersistentForm, UApplicationInfo, UTranslator,
     11  LCLType, URegistry, UAboutDialog;
    1212
    1313type
     
    1717  TMainForm = class(TForm)
    1818    AAbout: TAction;
     19    AboutDialog1: TAboutDialog;
    1920    AShowRawImageDesc: TAction;
    2021    AShowMap: TAction;
     
    143144  Engine := TEngine.Create;
    144145  Engine.Bitmap := Image1.Picture.Bitmap;
    145   Core.CoolTranslator1.Language := Core.CoolTranslator1.Languages.SearchByCode('cs');
     146  Core.Translator1.Language := Core.Translator1.Languages.SearchByCode('cs');
    146147  LoadConfig;
    147148  Engine.NewGame;
     
    221222procedure TMainForm.AAboutExecute(Sender: TObject);
    222223begin
    223   FormAbout := TFormAbout.Create(nil);
    224   FormAbout.ShowModal;
    225   FreeAndNil(FormAbout);
     224  AboutDialog1.Show;
    226225end;
    227226
  • trunk/Languages/Tunneler.cs.po

    r47 r51  
    1616msgid "Debug"
    1717msgstr "Ladění"
    18 
    19 #: tformabout.buttonclose.caption
    20 msgid "Close"
    21 msgstr "Zavřít"
    22 
    23 #: tformabout.buttonhomepage.caption
    24 msgid "Home page"
    25 msgstr "Domovská stránka"
    26 
    27 #: tformabout.caption
    28 msgctxt "tformabout.caption"
    29 msgid "About"
    30 msgstr "O aplikaci"
    31 
    32 #: tformabout.labelappname.caption
    33 msgctxt "tformabout.labelappname.caption"
    34 msgid "Tunneler"
    35 msgstr "Tunneler"
    36 
    37 #: tformabout.labelcontent.caption
    38 msgid "   "
    39 msgstr "   "
    40 
    41 #: tformabout.labeldescription.caption
    42 msgid "Real-time digging tank battle game. This is recreation of legend MS-DOS game written in Pascal."
    43 msgstr "Kopací tanková bojová ha v reálném čase. Jedná se o znovu vytvoření legendární MS-DOS hry napsané v Pascale."
    4418
    4519#: tformnewgame.buttoncancel.caption
     
    174148msgstr "Mapa"
    175149
    176 #: ucore.splayer
    177 msgctxt "ucore.splayer"
    178 msgid "Player"
    179 msgstr "Hráč"
    180 
    181150#: uengine.splayer
    182151msgctxt "uengine.splayer"
     
    184153msgstr "Hráč"
    185154
    186 #: uformabout.slicense
    187 msgid "License"
    188 msgstr "Licence"
    189 
    190 #: uformabout.sreleasedate
    191 msgid "Release date"
    192 msgstr "Datum uvolnění"
    193 
    194 #: uformabout.sversion
    195 msgid "Version"
    196 msgstr "Verze"
    197 
    198155#: umainform.sround
    199156msgid "%0:s of %1:s"
    200157msgstr "%0:s z %1:s"
     158
  • trunk/Languages/Tunneler.po

    r47 r51  
    44#: tdebugform.caption
    55msgid "Debug"
    6 msgstr ""
    7 
    8 #: tformabout.buttonclose.caption
    9 msgid "Close"
    10 msgstr ""
    11 
    12 #: tformabout.buttonhomepage.caption
    13 msgid "Home page"
    14 msgstr ""
    15 
    16 #: tformabout.caption
    17 msgctxt "tformabout.caption"
    18 msgid "About"
    19 msgstr ""
    20 
    21 #: tformabout.labelappname.caption
    22 msgctxt "tformabout.labelappname.caption"
    23 msgid "Tunneler"
    24 msgstr ""
    25 
    26 #: tformabout.labelcontent.caption
    27 msgid "   "
    28 msgstr ""
    29 
    30 #: tformabout.labeldescription.caption
    31 msgid "Real-time digging tank battle game. This is recreation of legend MS-DOS game written in Pascal."
    326msgstr ""
    337
     
    163137msgstr ""
    164138
    165 #: ucore.splayer
    166 msgctxt "ucore.splayer"
    167 msgid "Player"
    168 msgstr ""
    169 
    170139#: uengine.splayer
    171140msgctxt "uengine.splayer"
    172141msgid "Player"
    173 msgstr ""
    174 
    175 #: uformabout.slicense
    176 msgid "License"
    177 msgstr ""
    178 
    179 #: uformabout.sreleasedate
    180 msgid "Release date"
    181 msgstr ""
    182 
    183 #: uformabout.sversion
    184 msgid "Version"
    185142msgstr ""
    186143
  • trunk/Packages/Common/Common.lpk

    r38 r51  
    3737      </Other>
    3838    </CompilerOptions>
    39     <Description Value="Various libraries"/>
    40     <License Value="GNU/GPL"/>
    41     <Version Minor="7"/>
    42     <Files Count="22">
     39    <Description Value="Common package with various useful units.
     40
     41Source: https://svn.zdechov.net/PascalClassLibrary/Common/"/>
     42    <License Value="Copy left."/>
     43    <Version Minor="8"/>
     44    <Files Count="29">
    4345      <Item1>
    4446        <Filename Value="StopWatch.pas"/>
     
    139141        <UnitName Value="UStringTable"/>
    140142      </Item22>
     143      <Item23>
     144        <Filename Value="UMetaCanvas.pas"/>
     145        <UnitName Value="UMetaCanvas"/>
     146      </Item23>
     147      <Item24>
     148        <Filename Value="UGeometric.pas"/>
     149        <UnitName Value="UGeometric"/>
     150      </Item24>
     151      <Item25>
     152        <Filename Value="UTranslator.pas"/>
     153        <HasRegisterProc Value="True"/>
     154        <UnitName Value="UTranslator"/>
     155      </Item25>
     156      <Item26>
     157        <Filename Value="ULanguages.pas"/>
     158        <UnitName Value="ULanguages"/>
     159      </Item26>
     160      <Item27>
     161        <Filename Value="UFormAbout.pas"/>
     162        <UnitName Value="UFormAbout"/>
     163      </Item27>
     164      <Item28>
     165        <Filename Value="UAboutDialog.pas"/>
     166        <HasRegisterProc Value="True"/>
     167        <UnitName Value="UAboutDialog"/>
     168      </Item28>
     169      <Item29>
     170        <Filename Value="UPixelPointer.pas"/>
     171        <UnitName Value="UPixelPointer"/>
     172      </Item29>
    141173    </Files>
    142174    <i18n>
  • trunk/Packages/Common/Common.pas

    r38 r51  
    1212  UMemory, UResetableThread, UPool, ULastOpenedList, URegistry,
    1313  UJobProgressView, UXMLUtils, UApplicationInfo, USyncCounter, UListViewSort,
    14   UPersistentForm, UFindFile, UScaleDPI, UTheme, UStringTable,
    15   LazarusPackageIntf;
     14  UPersistentForm, UFindFile, UScaleDPI, UTheme, UStringTable, UMetaCanvas,
     15  UGeometric, UTranslator, ULanguages, UFormAbout, UAboutDialog,
     16  UPixelPointer, LazarusPackageIntf;
    1617
    1718implementation
     
    2930  RegisterUnit('UScaleDPI', @UScaleDPI.Register);
    3031  RegisterUnit('UTheme', @UTheme.Register);
     32  RegisterUnit('UTranslator', @UTranslator.Register);
     33  RegisterUnit('UAboutDialog', @UAboutDialog.Register);
    3134end;
    3235
  • trunk/Packages/Common/Languages/UJobProgressView.cs.po

    r38 r51  
    2424msgstr "Dokončené"
    2525
    26 #: ujobprogressview.soperations
    27 #, fuzzy
    28 #| msgid "Operations"
    29 msgid "Operations:"
    30 msgstr "Operace"
    31 
    3226#: ujobprogressview.spleasewait
    3327msgid "Please wait..."
  • trunk/Packages/Common/Languages/UJobProgressView.po

    r38 r51  
    1414msgstr ""
    1515
    16 #: ujobprogressview.soperations
    17 msgid "Operations:"
    18 msgstr ""
    19 
    2016#: ujobprogressview.spleasewait
    2117msgid "Please wait..."
  • trunk/Packages/Common/UApplicationInfo.pas

    r38 r51  
    66
    77uses
    8   SysUtils, Classes, Forms, URegistry, Controls;
     8  SysUtils, Classes, Forms, URegistry, Controls, Graphics, LCLType;
    99
    1010type
     
    1414  TApplicationInfo = class(TComponent)
    1515  private
    16     FDescription: TCaption;
     16    FDescription: TTranslateString;
     17    FIcon: TBitmap;
    1718    FIdentification: Byte;
    1819    FLicense: string;
     
    3334  public
    3435    constructor Create(AOwner: TComponent); override;
     36    destructor Destroy; override;
    3537    property Version: string read GetVersion;
    3638    function GetRegistryContext: TRegistryContext;
     
    4749    property EmailContact: string read FEmailContact write FEmailContact;
    4850    property AppName: string read FAppName write FAppName;
    49     property Description: string read FDescription write FDescription;
     51    property Description: TTranslateString read FDescription write FDescription;
    5052    property ReleaseDate: TDateTime read FReleaseDate write FReleaseDate;
    5153    property RegistryKey: string read FRegistryKey write FRegistryKey;
    5254    property RegistryRoot: TRegistryRoot read FRegistryRoot write FRegistryRoot;
    5355    property License: string read FLicense write FLicense;
     56    property Icon: TBitmap read FIcon write FIcon;
    5457  end;
    5558
     
    7477constructor TApplicationInfo.Create(AOwner: TComponent);
    7578begin
    76   inherited Create(AOwner);
     79  inherited;
    7780  FVersionMajor := 1;
    7881  FIdentification := 1;
     
    8083  FRegistryKey := '\Software\' + FAppName;
    8184  FRegistryRoot := rrKeyCurrentUser;
     85  FIcon := TBitmap.Create;
     86end;
     87
     88destructor TApplicationInfo.Destroy;
     89begin
     90  FreeAndNil(FIcon);
     91  inherited;
    8292end;
    8393
  • trunk/Packages/Common/UCommon.pas

    r38 r51  
    4040{$ENDIF}
    4141
    42 function IntToBin(Data: Int64; Count: Byte): string;
     42function AddLeadingZeroes(const aNumber, Length : integer) : string;
    4343function BinToInt(BinStr: string): Int64;
    44 function TryHexToInt(Data: string; var Value: Integer): Boolean;
    45 function TryBinToInt(Data: string; var Value: Integer): Boolean;
    4644function BinToHexString(Source: AnsiString): string;
    4745//function DelTree(DirName : string): Boolean;
     
    4947function BCDToInt(Value: Byte): Byte;
    5048function CompareByteArray(Data1, Data2: TArrayOfByte): Boolean;
     49procedure CopyStringArray(Dest: TStringArray; Source: array of string);
     50function CombinePaths(Path1, Path2: string): string;
     51function ComputerName: string;
     52procedure DeleteFiles(APath, AFileSpec: string);
     53procedure ExecuteProgram(Executable: string; Parameters: array of string);
     54procedure FileDialogUpdateFilterFileType(FileDialog: TOpenDialog);
     55procedure FreeThenNil(var Obj);
     56function GetDirCount(Dir: string): Integer;
    5157function GetUserName: string;
    52 function LoggedOnUserNameEx(Format: TUserNameFormat): string;
    53 function SplitString(var Text: string; Count: Word): string;
    5458function GetBitCount(Variable: QWord; MaxIndex: Integer): Integer;
    5559function GetBit(Variable: QWord; Index: Byte): Boolean;
     60function GetStringPart(var Text: string; Separator: string): string;
     61function GenerateNewName(OldName: string): string;
     62function GetFileFilterItemExt(Filter: string; Index: Integer): string;
     63function IntToBin(Data: Int64; Count: Byte): string;
     64function LastPos(const SubStr: String; const S: String): Integer;
     65function LoadFileToStr(const FileName: TFileName): AnsiString;
     66function LoggedOnUserNameEx(Format: TUserNameFormat): string;
     67function MergeArray(A, B: array of string): TArrayOfString;
     68function OccurenceOfChar(What: Char; Where: string): Integer;
     69procedure OpenWebPage(URL: string);
     70procedure OpenFileInShell(FileName: string);
     71function PosFromIndex(SubStr: string; Text: string;
     72  StartIndex: Integer): Integer;
     73function PosFromIndexReverse(SubStr: string; Text: string;
     74  StartIndex: Integer): Integer;
     75function RemoveQuotes(Text: string): string;
     76procedure SaveStringToFile(S, FileName: string);
    5677procedure SetBit(var Variable: Int64; Index: Byte; State: Boolean); overload;
    5778procedure SetBit(var Variable: QWord; Index: Byte; State: Boolean); overload;
    5879procedure SetBit(var Variable: Cardinal; Index: Byte; State: Boolean); overload;
    5980procedure SetBit(var Variable: Word; Index: Byte; State: Boolean); overload;
    60 function AddLeadingZeroes(const aNumber, Length : integer) : string;
    61 function LastPos(const SubStr: String; const S: String): Integer;
    62 function GenerateNewName(OldName: string): string;
    63 function GetFileFilterItemExt(Filter: string; Index: Integer): string;
    64 procedure FileDialogUpdateFilterFileType(FileDialog: TOpenDialog);
    65 procedure DeleteFiles(APath, AFileSpec: string);
    66 procedure OpenWebPage(URL: string);
    67 procedure OpenFileInShell(FileName: string);
    68 procedure ExecuteProgram(Executable: string; Parameters: array of string);
    69 procedure FreeThenNil(var Obj);
    70 function RemoveQuotes(Text: string): string;
    71 function ComputerName: string;
    72 function OccurenceOfChar(What: Char; Where: string): Integer;
    73 function GetDirCount(Dir: string): Integer;
    74 function MergeArray(A, B: array of string): TArrayOfString;
    75 function LoadFileToStr(const FileName: TFileName): AnsiString;
    76 procedure SaveStringToFile(S, FileName: string);
    7781procedure SearchFiles(AList: TStrings; Dir: string;
    7882  FilterMethod: TFilterMethod = nil; FileNameMethod: TFileNameMethod = nil);
    79 function GetStringPart(var Text: string; Separator: string): string;
     83function SplitString(var Text: string; Count: Word): string;
    8084function StripTags(const S: string): string;
    81 function PosFromIndex(SubStr: string; Text: string;
    82   StartIndex: Integer): Integer;
    83 function PosFromIndexReverse(SubStr: string; Text: string;
    84   StartIndex: Integer): Integer;
    85 procedure CopyStringArray(Dest: TStringArray; Source: array of string);
     85function TryHexToInt(Data: string; var Value: Integer): Boolean;
     86function TryBinToInt(Data: string; var Value: Integer): Boolean;
     87procedure SortStrings(Strings: TStrings);
    8688
    8789
     
    669671end;
    670672
     673function CombinePaths(Path1, Path2: string): string;
     674begin
     675  Result := Path1;
     676  if Result <> '' then Result := Result + DirectorySeparator + Path2
     677    else Result := Path2;
     678end;
     679
     680procedure SortStrings(Strings: TStrings);
     681var
     682  Tmp: TStringList;
     683begin
     684  Strings.BeginUpdate;
     685  try
     686    if Strings is TStringList then begin
     687      TStringList(Strings).Sort;
     688    end else begin
     689      Tmp := TStringList.Create;
     690      try
     691        Tmp.Assign(Strings);
     692        Tmp.Sort;
     693        Strings.Assign(Tmp);
     694      finally
     695        Tmp.Free;
     696      end;
     697    end;
     698  finally
     699    Strings.EndUpdate;
     700  end;
     701end;
     702
    671703
    672704initialization
  • trunk/Packages/Common/UJobProgressView.lfm

    r38 r51  
    1515  OnShow = FormShow
    1616  Position = poScreenCenter
    17   LCLVersion = '1.8.2.0'
     17  LCLVersion = '2.0.2.0'
    1818  object PanelOperationsTitle: TPanel
    1919    Left = 0
     
    241241    Interval = 100
    242242    OnTimer = TimerUpdateTimer
    243     left = 264
     243    left = 320
    244244    top = 8
    245245  end
  • trunk/Packages/Common/UJobProgressView.pas

    r38 r51  
    175175  STotalEstimatedTime = 'Total estimated time: %s';
    176176  SFinished = 'Finished';
    177   SOperations = 'Operations:';
    178177
    179178procedure Register;
  • trunk/Packages/Common/UListViewSort.pas

    r38 r51  
    11unit UListViewSort;
    22
    3 // Date: 2010-11-03
     3// Date: 2019-05-17
    44
    55{$mode delphi}
     
    88
    99uses
    10   {$IFDEF Windows}Windows, CommCtrl, {$ENDIF}Classes, Graphics, ComCtrls, SysUtils,
     10  {$IFDEF Windows}Windows, CommCtrl, LMessages, {$ENDIF}Classes, Graphics, ComCtrls, SysUtils,
    1111  Controls, DateUtils, Dialogs, fgl, Forms, Grids, StdCtrls, ExtCtrls,
    12   LclIntf, LMessages, LclType, LResources;
     12  LclIntf, LclType, LResources;
    1313
    1414type
     
    8181    FOnChange: TNotifyEvent;
    8282    FStringGrid1: TStringGrid;
     83    procedure DoOnChange;
    8384    procedure GridDoOnKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
    8485    procedure GridDoOnResize(Sender: TObject);
     
    9091    function TextEnteredColumn(Index: Integer): Boolean;
    9192    function GetColValue(Index: Integer): string;
     93    procedure Reset;
    9294    property StringGrid: TStringGrid read FStringGrid1 write FStringGrid1;
    9395  published
     
    152154{ TListViewFilter }
    153155
     156procedure TListViewFilter.DoOnChange;
     157begin
     158  if Assigned(FOnChange) then FOnChange(Self);
     159end;
     160
    154161procedure TListViewFilter.GridDoOnKeyUp(Sender: TObject; var Key: Word;
    155162  Shift: TShiftState);
    156163begin
    157   if Assigned(FOnChange) then
    158     FOnChange(Self);
     164  DoOnChange;
    159165end;
    160166
     
    227233    Result := StringGrid.Cells[Index, 0]
    228234    else Result := '';
     235end;
     236
     237procedure TListViewFilter.Reset;
     238var
     239  I: Integer;
     240begin
     241  with StringGrid do
     242  for I := 0 to ColCount - 1 do
     243    Cells[I, 0] := '';
     244  DoOnChange;
    229245end;
    230246
  • trunk/Packages/Common/UMemory.pas

    r31 r51  
    112112procedure TMemory.WriteMemory(Position: Integer; Memory: TMemory);
    113113begin
    114   Move(Memory.FData, PByte(@FData + Position)^, Memory.Size);
     114  Move(Memory.FData, PByte(PByte(@FData) + Position)^, Memory.Size);
    115115end;
    116116
    117117procedure TMemory.ReadMemory(Position: Integer; Memory: TMemory);
    118118begin
    119   Move(PByte(@FData + Position)^, Memory.FData, Memory.Size);
     119  Move(PByte(PByte(@FData) + Position)^, Memory.FData, Memory.Size);
    120120end;
    121121
  • trunk/Packages/Common/UPersistentForm.pas

    r38 r51  
    33{$mode delphi}
    44
    5 // Date: 2015-04-18
     5// Date: 2020-11-26
    66
    77interface
     
    99uses
    1010  Classes, SysUtils, Forms, URegistry, LCLIntf, Registry, Controls, ComCtrls,
    11   ExtCtrls;
     11  ExtCtrls, LCLType;
    1212
    1313type
     
    2626    FormRestoredSize: TRect;
    2727    FormWindowState: TWindowState;
     28    FormFullScreen: Boolean;
    2829    Form: TForm;
    2930    procedure LoadFromRegistry(RegistryContext: TRegistryContext);
     
    3132    function CheckEntireVisible(Rect: TRect): TRect;
    3233    function CheckPartVisible(Rect: TRect; Part: Integer): TRect;
    33     procedure Load(Form: TForm; DefaultMaximized: Boolean = False);
     34    procedure Load(Form: TForm; DefaultMaximized: Boolean = False;
     35      DefaultFullScreen: Boolean = False);
    3436    procedure Save(Form: TForm);
    3537    constructor Create(AOwner: TComponent); override;
     38    procedure SetFullScreen(State: Boolean);
    3639    property RegistryContext: TRegistryContext read FRegistryContext
    3740      write FRegistryContext;
     
    4346procedure Register;
    4447
     48
    4549implementation
    46 
    4750
    4851procedure Register;
     
    169172      + FormRestoredSize.Top;
    170173    // Other state
    171     FormWindowState := TWindowState(ReadIntegerWithDefault('WindowState', Integer(wsNormal)));
     174    FormWindowState := TWindowState(ReadIntegerWithDefault('WindowState', Integer(FormWindowState)));
     175    FormFullScreen := ReadBoolWithDefault('FullScreen', FormFullScreen);
    172176  finally
    173177    Free;
     
    193197    // Other state
    194198    WriteInteger('WindowState', Integer(FormWindowState));
     199    WriteBool('FullScreen', FormFullScreen);
    195200  finally
    196201    Free;
     
    250255end;
    251256
    252 procedure TPersistentForm.Load(Form: TForm; DefaultMaximized: Boolean = False);
     257procedure TPersistentForm.Load(Form: TForm; DefaultMaximized: Boolean = False;
     258  DefaultFullScreen: Boolean = False);
    253259begin
    254260  Self.Form := Form;
     
    258264  FormRestoredSize := Bounds((Screen.Width - Form.Width) div 2,
    259265    (Screen.Height - Form.Height) div 2, Form.Width, Form.Height);
     266  FormWindowState := Form.WindowState;
     267  FormFullScreen := DefaultFullScreen;
    260268
    261269  LoadFromRegistry(RegistryContext);
     
    277285      Form.BoundsRect := FormNormalSize;
    278286  end;
     287  if FormFullScreen then SetFullScreen(True);
    279288  LoadControl(Form);
    280289end;
     
    284293  Self.Form := Form;
    285294  FormNormalSize := Bounds(Form.Left, Form.Top, Form.Width, Form.Height);
    286   FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth,
    287     Form.RestoredHeight);
     295  if not FormFullScreen then
     296    FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth,
     297      Form.RestoredHeight);
    288298  FormWindowState := Form.WindowState;
    289299  SaveToRegistry(RegistryContext);
     
    300310end;
    301311
     312procedure TPersistentForm.SetFullScreen(State: Boolean);
     313begin
     314  if State then begin
     315    FormFullScreen := True;
     316    FormNormalSize := Form.BoundsRect;
     317    FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth,
     318      Form.RestoredHeight);
     319    FormWindowState := Form.WindowState;
     320    ShowWindow(Form.Handle, SW_SHOWFULLSCREEN);
     321    {$IFDEF WINDOWS}
     322    Form.BorderStyle := bsNone;
     323    {$ENDIF}
     324  end else begin
     325    FormFullScreen := False;
     326    {$IFDEF WINDOWS}
     327    Form.BorderStyle := bsSizeable;
     328    {$ENDIF}
     329    ShowWindow(Form.Handle, SW_SHOWNORMAL);
     330    if FormWindowState = wsNormal then begin
     331      Form.BoundsRect := FormNormalSize;
     332    end else
     333    if FormWindowState = wsMaximized then begin
     334      Form.BoundsRect := FormRestoredSize;
     335      Form.WindowState := wsMaximized;
     336    end;
     337  end;
     338end;
     339
    302340end.
    303341
  • trunk/Packages/Common/UScaleDPI.pas

    r38 r51  
    227227    Temp[I] := TBitmap.Create;
    228228    Temp[I].SetSize(NewWidth, NewHeight);
     229    {$IFDEF Linux}
     230    Temp[I].PixelFormat := pf24bit;
     231    {$ELSE}
    229232    Temp[I].PixelFormat := pf32bit;
     233    {$ENDIF}
    230234    Temp[I].TransparentColor := TempBmp.TransparentColor;
    231235    //Temp[I].TransparentMode := TempBmp.TransparentMode;
  • trunk/Packages/Common/UTheme.pas

    r38 r51  
    55uses
    66  Classes, SysUtils, Graphics, ComCtrls, Controls, ExtCtrls, Menus, StdCtrls,
    7   Spin, Forms, Contnrs, Grids;
     7  Spin, Forms, fgl, Grids;
    88
    99type
     
    1919  { TThemes }
    2020
    21   TThemes = class(TObjectList)
     21  TThemes = class(TFPGObjectList<TTheme>)
    2222    function AddNew(Name: string): TTheme;
    2323    function FindByName(Name: string): TTheme;
     
    7474procedure TThemes.LoadToStrings(Strings: TStrings);
    7575var
    76   Theme: TTheme;
     76  I: Integer;
    7777begin
    78   Strings.Clear;
    79   for Theme in Self do
    80     Strings.AddObject(Theme.Name, Theme);
     78  Strings.BeginUpdate;
     79  try
     80    while Strings.Count < Count do Strings.Add('');
     81    while Strings.Count > Count do Strings.Delete(Strings.Count - 1);
     82    for I := 0 to Count - 1 do begin
     83      Strings[I] := Items[I].Name;
     84      Strings.Objects[I] := Items[I];
     85    end;
     86  finally
     87    Strings.EndUpdate;
     88  end;
    8189end;
    8290
     
    123131destructor TThemeManager.Destroy;
    124132begin
    125   Themes.Free;
    126   inherited Destroy;
     133  FreeAndNil(Themes);
     134  inherited;
    127135end;
    128136
  • trunk/Packages/Common/UThreading.pas

    r38 r51  
    66
    77uses
    8   Classes, SysUtils, Forms, Contnrs, SyncObjs;
     8  Classes, SysUtils, Forms, fgl, SyncObjs;
    99
    1010type
     
    2222    function GetSuspended: Boolean; virtual; abstract;
    2323    function GetTerminated: Boolean; virtual; abstract;
    24     function GetThreadId: Integer; virtual; abstract;
     24    function GetThreadId: TThreadID; virtual; abstract;
    2525    procedure SetFreeOnTerminate(const AValue: Boolean); virtual; abstract;
    2626    procedure SetPriority(const AValue: TThreadPriority); virtual; abstract;
     
    4242    property Terminated: Boolean read GetTerminated write SetTerminated;
    4343    property Finished: Boolean read GetFinished;
    44     property ThreadId: Integer read GetThreadId;
     44    property ThreadId: TThreadID read GetThreadId;
    4545  end;
    4646
     
    6868    function GetSuspended: Boolean; override;
    6969    function GetTerminated: Boolean; override;
    70     function GetThreadId: Integer; override;
     70    function GetThreadId: TThreadID; override;
    7171    procedure SetFreeOnTerminate(const AValue: Boolean); override;
    7272    procedure SetPriority(const AValue: TThreadPriority); override;
     
    102102  { TThreadList }
    103103
    104   TThreadList = class(TObjectList)
    105     function FindById(Id: Integer): TVirtualThread;
     104  TThreadList = class(TFPGObjectList<TVirtualThread>)
     105    function FindById(Id: TThreadID): TVirtualThread;
    106106    constructor Create; virtual;
    107107  end;
     
    164164  if MainThreadID = ThreadID then Method
    165165  else begin
    166     Thread := ThreadList.FindById(ThreadID);
     166    try
     167      ThreadListLock.Acquire;
     168      Thread := ThreadList.FindById(ThreadID);
     169    finally
     170      ThreadListLock.Release;
     171    end;
    167172    if Assigned(Thread) then begin
    168173      Thread.Synchronize(Method);
     
    173178{ TThreadList }
    174179
    175 function TThreadList.FindById(Id: Integer): TVirtualThread;
     180function TThreadList.FindById(Id: TThreadID): TVirtualThread;
    176181var
    177182  I: Integer;
    178183begin
    179184  I := 0;
    180   while (I < ThreadList.Count) and (TVirtualThread(ThreadList[I]).ThreadID <> Id) do
     185  while (I < ThreadList.Count) and (ThreadList[I].ThreadID <> Id) do
    181186    Inc(I);
    182   if I < ThreadList.Count then Result := TVirtualThread(ThreadList[I])
     187  if I < ThreadList.Count then Result := ThreadList[I]
    183188    else Result := nil;
    184189end;
     
    233238end;
    234239
    235 function TListedThread.GetThreadId: Integer;
     240function TListedThread.GetThreadId: TThreadID;
    236241begin
    237242  Result := FThread.ThreadID;
     
    356361ThreadListLock := TCriticalSection.Create;
    357362ThreadList := TThreadList.Create;
    358 ThreadList.OwnsObjects := False;
     363ThreadList.FreeObjects := False;
    359364
    360365finalization
  • trunk/Packages/CoolAudio/UCoolAudioConfig.inc

    r32 r51  
    11{$IFDEF Linux}
    22  {$DEFINE AudioSystemDSP}
    3   {$DEFINE AudioSystemMAD}
     3//  {$DEFINE AudioSystemMAD}
    44{$ENDIF}
    55{$IFDEF i386}
  • trunk/Packages/CoolAudio/UPlaylist.pas

    r32 r51  
    2626    procedure PlayNext;
    2727    procedure PlayPrevious;
    28     constructor Create(AOwner: TComponent);
     28    constructor Create(AOwner: TComponent); override;
    2929    destructor Destroy; override;
    3030  published
  • trunk/Packages/TemplateGenerics/Generic/GenericMatrix.inc

    r34 r51  
    3030    procedure PutItem(Index: TGMatrixIndex; const AValue: TGMatrixItem); virtual;
    3131    procedure SetCount(const AValue: TGMatrixIndex);
     32    procedure CheckRange(X: TGMatrixIndexX; Y: TGMatrixIndexY); inline;
    3233  public
     34    constructor Create; virtual;
    3335    function Add(Item: TGMatrixItem): TGMatrixIndex;
    3436    procedure AddMatrix(Values: array of TGMatrixRow);
     
    140142begin
    141143  if (Capacity.X <> AValue.X) and (Capacity.Y <> AValue.Y) then begin
    142 (*    SetLength(FItems, AValue.Y);
     144    SetLength(FItems, AValue.Y);
    143145    Y := 0;
    144146    while Y < Length(FItems) do begin
     
    146148      Y := Y + 1;
    147149    end;
    148   end;
    149   *)
    150     SetLength(FItems, AValue.Y, AValue.X);
     150
     151  {  SetLength(FItems, AValue.Y, AValue.X);}
    151152  end;
    152153end;
    153154
    154155function TGMatrix.GetItemXY(X: TGMatrixIndexX; Y: TGMatrixIndexY): TGMatrixItem;
     156begin
     157  CheckRange(X, Y);
     158  Result := FItems[Y, X];
     159end;
     160
     161function TGMatrix.GetItem(Index: TGMatrixIndex): TGMatrixItem;
     162begin
     163  CheckRange(Index.X, Index.Y);
     164  Result := FItems[Index.Y, Index.X];
     165end;
     166
     167procedure TGMatrix.PutItemXY(X: TGMatrixIndexX; Y: TGMatrixIndexY; const AValue: TGMatrixItem);
     168begin
     169  CheckRange(X, Y);
     170  FItems[Y, X] := AValue;
     171end;
     172
     173procedure TGMatrix.PutItem(Index: TGMatrixIndex; const AValue: TGMatrixItem);
     174begin
     175  CheckRange(Index.X, Index.Y);
     176  FItems[Index.Y, Index.X] := AValue;
     177end;
     178
     179procedure TGMatrix.SetCount(const AValue: TGMatrixIndex);
     180begin
     181  Capacity := AValue;
     182  FCount := AValue;
     183end;
     184
     185procedure TGMatrix.CheckRange(X: TGMatrixIndexX; Y: TGMatrixIndexY);
    155186begin
    156187  if (X < 0) or (X >= Count.X) or
    157188    (Y < 0) or (Y >= Count.Y) then
    158189    raise EListError.CreateFmt(SMatrixIndexError, [X, Y]);
    159   Result := FItems[Y, X];
    160 end;
    161 
    162 function TGMatrix.GetItem(Index: TGMatrixIndex): TGMatrixItem;
    163 begin
    164   if (Index.X < 0) or (Index.X >= Count.X) or
    165     (Index.Y < 0) or (Index.Y >= Count.Y) then
    166     raise EListError.CreateFmt(SMatrixIndexError, [Index.X, Index.Y]);
    167   Result := FItems[Index.Y, Index.X];
    168 end;
    169 
    170 procedure TGMatrix.PutItemXY(X: TGMatrixIndexX; Y: TGMatrixIndexY; const AValue: TGMatrixItem);
    171 begin
    172   if (X < 0) or (X >= Count.X) or
    173     (Y < 0) or (Y >= Count.Y) then
    174     raise EListError.CreateFmt(SMatrixIndexError, [X, Y]);
    175   FItems[Y, X] := AValue;
    176 end;
    177 
    178 procedure TGMatrix.PutItem(Index: TGMatrixIndex; const AValue: TGMatrixItem);
    179 begin
    180   if (Index.X < 0) or (Index.X >= Count.X) or
    181     (Index.Y < 0) or (Index.Y >= Count.Y) then
    182     raise EListError.CreateFmt(SMatrixIndexError, [Index.X, Index.Y]);
    183   FItems[Index.Y, Index.X] := AValue;
    184 end;
    185 
    186 procedure TGMatrix.SetCount(const AValue: TGMatrixIndex);
    187 begin
    188   Capacity := AValue;
    189   FCount := AValue;
    190190end;
    191191
     
    555555end;
    556556
     557constructor TGMatrix.Create;
     558begin
     559  SetLength(FItems, 0, 0);
     560  FCount := CreateIndex(0, 0);
     561end;
     562
    557563procedure TGMatrix.Clear;
    558564begin
  • trunk/Read me.txt

    r50 r51  
    1 Developed using Lazarus 2.0.10 (http://www.lazarus-ide.org/)
     1Developed using Lazarus 2.0.12 (http://www.lazarus-ide.org/)
  • trunk/UCore.lfm

    r44 r51  
    11object Core: TCore
    22  OldCreateOrder = False
    3   Height = 519
    4   HorizontalOffset = 735
    5   VerticalOffset = 456
    6   Width = 696
    7   PPI = 96
     3  Height = 779
     4  HorizontalOffset = 1103
     5  VerticalOffset = 603
     6  Width = 1044
     7  PPI = 144
    88  object ThemeManager1: TThemeManager
    9     left = 172
    10     top = 177
     9    Left = 258
     10    Top = 266
    1111  end
    1212  object ApplicationInfo: TApplicationInfo
     
    2121    EmailContact = 'robie@centrum.cz'
    2222    AppName = 'Tunneler'
    23     ReleaseDate = 43573
     23    ReleaseDate = 44550
    2424    RegistryKey = '\Software\Chronosoft\Tunneler'
    2525    RegistryRoot = rrKeyCurrentUser
    2626    License = 'CC0'
    27     left = 176
    28     top = 288
     27    Icon.Data = {
     28      36400000424D3640000000000000360000002800000040000000400000000100
     29      2000000000000040000064000000640000000000000000000000000000000000
     30      0000000000000000000000000000000000000000000000000000000000000000
     31      0000000000000000000000000000000000000000000000000000000000000000
     32      0000000000000000000000000000000000000000000000000000000000000000
     33      0000000000000000000000000000000000000000000000000000000000000000
     34      0000000000000000000000000000000000000000000000000000000000000000
     35      0000000000000000000000000000000000000000000000000000000000000000
     36      0000000000000000000000000000000000000000000000000000000000000000
     37      0000000000000000000000000000000000000000000000000000000000000000
     38      0000000000000000000000000000000000000000000000000000000000000000
     39      0000000000000000000000000000000000000000000000000000000000000000
     40      0000000000000000000000000000000000000000000000000000000000000000
     41      0000000000000000000000000000000000000000000000000000000000000000
     42      0000000000000000000000000000000000000000000000000000000000000000
     43      0000000000000000000000000000000000000000000000000000000000000000
     44      0000000000000000000000000000000000000000000000000000000000000000
     45      0000000000000000000000000000000000000000000000000000000000000000
     46      0000000000000000000000000000000000000000000000000000000000000000
     47      0000000000000000000000000000000000000000000000000000000000000000
     48      0000000000000000000000000000000000000000000000000000000000000000
     49      0000000000000000000000000000000000000000000000000000000000000000
     50      0000000000000000000000000000000000000000000000000000000000000000
     51      0000000000000000000000000000000000000000000000000000000000000000
     52      0000000000000000000000000000000000000000000000000000000000000000
     53      0000000000000000000000000000000000000000000000000000000000000000
     54      0000000000000000000000000000000000000000000000000000000000000000
     55      0000000000000000000000000000000000000000000000000000000000000000
     56      0000000000000000000000000000000000000000000000000000000000000000
     57      0000000000000000000000000000000000000000000000000000000000000000
     58      0000000000000000000000000000000000000000000000000000000000000000
     59      0000000000000000000000000000000000000000000000000000000000000000
     60      0000000000000000000000000000000000000000000000000000000000000000
     61      0000000000000000000000000000000000000000000000000000000000000000
     62      0000000000000000000000000000000000000000000000000000000000000000
     63      0000000000000000000000000000000000000000000000000000000000000000
     64      0000000000000000000000000000000000000000000000000000000000000000
     65      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     66      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     67      0000000000000000000000000000000000000000000000000000000000000000
     68      0000000000000000000000000000000000000000000000000000000000000000
     69      0000000000000000000000000000000000000000000000000000000000000000
     70      0000000000000000000000000000000000000000000000000000000000000000
     71      0000000000000000000000000000000000000000000000000000000000000000
     72      0000000000000000000000000000000000000000000000000000000000000000
     73      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     74      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     75      0000000000000000000000000000000000000000000000000000000000000000
     76      0000000000000000000000000000000000000000000000000000000000000000
     77      0000000000000000000000000000000000000000000000000000000000000000
     78      0000000000000000000000000000000000000000000000000000000000000000
     79      0000000000000000000000000000000000000000000000000000000000000000
     80      0000000000000000000000000000000000000000000000000000000000000000
     81      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     82      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     83      0000000000000000000000000000000000000000000000000000000000000000
     84      0000000000000000000000000000000000000000000000000000000000000000
     85      0000000000000000000000000000000000000000000000000000000000000000
     86      0000000000000000000000000000000000000000000000000000000000000000
     87      0000000000000000000000000000000000000000000000000000000000000000
     88      0000000000000000000000000000000000000000000000000000000000000000
     89      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     90      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     91      0000000000000000000000000000000000000000000000000000000000000000
     92      0000000000000000000000000000000000000000000000000000000000000000
     93      0000000000000000000000000000000000000000000000000000000000000000
     94      0000000000000000000000000000000000000000000000000000000000000000
     95      0000000000000000000000000000000000000000000000000000000000000000
     96      0000000000000000000000000000000000000000000000000000000000000000
     97      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     98      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     99      0000000000000000000000000000000000000000000000000000000000000000
     100      0000000000000000000000000000000000000000000000000000000000000000
     101      0000000000000000000000000000000000000000000000000000000000000000
     102      0000000000000000000000000000000000000000000000000000000000000000
     103      0000000000000000000000000000000000000000000000000000000000000000
     104      0000000000000000000000000000000000000000000000000000000000000000
     105      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     106      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     107      0000000000000000000000000000000000000000000000000000000000000000
     108      0000000000000000000000000000000000000000000000000000000000000000
     109      0000000000000000000000000000000000000000000000000000000000000000
     110      0000000000000000000000000000000000000000000000000000000000000000
     111      0000000000000000000000000000000000000000000000000000000000000000
     112      0000000000000000000000000000000000000000000000000000000000000000
     113      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     114      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     115      0000000000000000000000000000000000000000000000000000000000000000
     116      0000000000000000000000000000000000000000000000000000000000000000
     117      0000000000000000000000000000000000000000000000000000000000000000
     118      0000000000000000000000000000000000000000000000000000000000000000
     119      0000000000000000000000000000000000000000000000000000000000000000
     120      0000000000000000000000000000000000000000000000000000000000000000
     121      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     122      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     123      0000000000000000000000000000000000000000000000000000000000000000
     124      0000000000000000000000000000000000000000000000000000000000000000
     125      0000000000000000000000000000000000000000000000000000000000000000
     126      0000000000000000000000000000000000000000000000000000000000000000
     127      0000000000000000000000000000000000000000000000000000000000000000
     128      0000000000000000000000000000000000000000000000000000000000000000
     129      0000000000000000000000A000FF00A000FF00A000FF00A000FF00A000FF00A0
     130      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     131      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     132      0000000000000000000000000000000000000000000000000000000000000000
     133      0000000000000000000000000000000000000000000000000000000000000000
     134      0000000000000000000000000000000000000000000000000000000000000000
     135      0000000000000000000000000000000000000000000000000000000000000000
     136      0000000000000000000000000000000000000000000000000000000000000000
     137      0000000000000000000000A000FF00A000FF00A000FF00A000FF00A000FF00A0
     138      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     139      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     140      0000000000000000000000000000000000000000000000000000000000000000
     141      0000000000000000000000000000000000000000000000000000000000000000
     142      0000000000000000000000000000000000000000000000000000000000000000
     143      0000000000000000000000000000000000000000000000000000000000000000
     144      0000000000000000000000000000000000000000000000000000000000000000
     145      0000000000000000000000A000FF00A000FF00A000FF00A000FF00A000FF00A0
     146      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     147      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     148      0000000000000000000000000000000000000000000000000000000000000000
     149      0000000000000000000000000000000000000000000000000000000000000000
     150      0000000000000000000000000000000000000000000000000000000000000000
     151      0000000000000000000000000000000000000000000000000000000000000000
     152      0000000000000000000000000000000000000000000000000000000000000000
     153      0000000000000000000000A000FF00A000FF00A000FF00A000FF00A000FF00A0
     154      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     155      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     156      0000000000000000000000000000000000000000000000000000000000000000
     157      0000000000000000000000000000000000000000000000000000000000000000
     158      0000000000000000000000000000000000000000000000000000000000000000
     159      0000000000000000000000000000000000000000000000000000000000000000
     160      0000000000000000000000000000000000000000000000000000000000000000
     161      0000000000000000000000A000FF00A000FF00A000FF00A000FF00A000FF00A0
     162      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     163      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     164      0000000000000000000000000000000000000000000000000000000000000000
     165      0000000000000000000000000000000000000000000000000000000000000000
     166      0000000000000000000000000000000000000000000000000000000000000000
     167      0000000000000000000000000000000000000000000000000000000000000000
     168      0000000000000000000000000000000000000000000000000000000000000000
     169      0000000000000000000000A000FF00A000FF00A000FF00A000FF00A000FF00A0
     170      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     171      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     172      0000000000000000000000000000000000000000000000000000000000000000
     173      0000000000000000000000000000000000000000000000000000000000000000
     174      0000000000000000000000000000000000000000000000000000000000000000
     175      0000000000000000000000000000000000000000000000000000000000000000
     176      0000000000000000000000000000000000000000000000000000000000000000
     177      0000000000000000000000A000FF00A000FF00A000FF00A000FF00A000FF00A0
     178      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     179      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     180      0000000000000000000000000000000000000000000000000000000000000000
     181      0000000000000000000000000000000000000000000000000000000000000000
     182      0000000000000000000000000000000000000000000000000000000000000000
     183      0000000000000000000000000000000000000000000000000000000000000000
     184      0000000000000000000000000000000000000000000000000000000000000000
     185      0000000000000000000000A000FF00A000FF00A000FF00A000FF00A000FF00A0
     186      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     187      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     188      0000000000000000000000000000000000000000000000000000000000000000
     189      0000000000000000000000000000000000000000000000000000000000000000
     190      0000000000000000000000000000000000000000000000000000000000000000
     191      0000000000000000000000000000000000000000000000000000000000000000
     192      0000000000000000000000A000FF00A000FF00A000FF00A000FF00A000FF00A0
     193      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     194      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     195      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     196      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     197      0000000000000000000000000000000000000000000000000000000000000000
     198      0000000000000000000000000000000000000000000000000000000000000000
     199      0000000000000000000000000000000000000000000000000000000000000000
     200      0000000000000000000000A000FF00A000FF00A000FF00A000FF00A000FF00A0
     201      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     202      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     203      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     204      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     205      0000000000000000000000000000000000000000000000000000000000000000
     206      0000000000000000000000000000000000000000000000000000000000000000
     207      0000000000000000000000000000000000000000000000000000000000000000
     208      0000000000000000000000A000FF00A000FF00A000FF00A000FF00A000FF00A0
     209      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     210      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     211      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     212      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     213      0000000000000000000000000000000000000000000000000000000000000000
     214      0000000000000000000000000000000000000000000000000000000000000000
     215      0000000000000000000000000000000000000000000000000000000000000000
     216      0000000000000000000000A000FF00A000FF00A000FF00A000FF00A000FF00A0
     217      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     218      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     219      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     220      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     221      0000000000000000000000000000000000000000000000000000000000000000
     222      0000000000000000000000000000000000000000000000000000000000000000
     223      0000000000000000000000000000000000000000000000000000000000000000
     224      0000000000000000000000A000FF00A000FF00A000FF00A000FF00A000FF00A0
     225      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     226      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     227      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     228      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     229      0000000000000000000000000000000000000000000000000000000000000000
     230      0000000000000000000000000000000000000000000000000000000000000000
     231      0000000000000000000000000000000000000000000000000000000000000000
     232      0000000000000000000000A000FF00A000FF00A000FF00A000FF00A000FF00A0
     233      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     234      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     235      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     236      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     237      0000000000000000000000000000000000000000000000000000000000000000
     238      0000000000000000000000000000000000000000000000000000000000000000
     239      0000000000000000000000000000000000000000000000000000000000000000
     240      0000000000000000000000A000FF00A000FF00A000FF00A000FF00A000FF00A0
     241      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     242      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     243      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     244      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     245      0000000000000000000000000000000000000000000000000000000000000000
     246      0000000000000000000000000000000000000000000000000000000000000000
     247      0000000000000000000000000000000000000000000000000000000000000000
     248      0000000000000000000000A000FF00A000FF00A000FF00A000FF00A000FF00A0
     249      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     250      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     251      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     252      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     253      0000000000000000000000000000000000000000000000000000000000000000
     254      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     255      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     256      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     257      00FF00A000FF00A000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     258      FFFF00FFFFFF00FFFFFF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     259      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     260      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     261      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     262      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     263      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     264      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     265      00FF00A000FF00A000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     266      FFFF00FFFFFF00FFFFFF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     267      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     268      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     269      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     270      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     271      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     272      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     273      00FF00A000FF00A000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     274      FFFF00FFFFFF00FFFFFF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     275      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     276      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     277      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     278      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     279      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     280      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     281      00FF00A000FF00A000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     282      FFFF00FFFFFF00FFFFFF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     283      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     284      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     285      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     286      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     287      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     288      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     289      00FF00A000FF00A000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     290      FFFF00FFFFFF00FFFFFF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     291      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     292      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     293      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     294      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     295      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     296      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     297      00FF00A000FF00A000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     298      FFFF00FFFFFF00FFFFFF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     299      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     300      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     301      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     302      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     303      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     304      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     305      00FF00A000FF00A000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     306      FFFF00FFFFFF00FFFFFF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     307      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     308      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     309      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     310      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     311      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     312      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     313      00FF00A000FF00A000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     314      FFFF00FFFFFF00FFFFFF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     315      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     316      00FF00A000FF00A000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     317      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     318      0000000000000000000000000000000000000000000000000000000000000000
     319      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     320      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     321      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     322      00FF00A000FF00A000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     323      FFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000000000
     324      0000000000000000000000000000000000000000000000000000000000000000
     325      0000000000000000000000000000000000000000000000000000000000000000
     326      0000000000000000000000000000000000000000000000000000000000000000
     327      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     328      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     329      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     330      00FF00A000FF00A000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     331      FFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000000000
     332      0000000000000000000000000000000000000000000000000000000000000000
     333      0000000000000000000000000000000000000000000000000000000000000000
     334      0000000000000000000000000000000000000000000000000000000000000000
     335      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     336      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     337      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     338      00FF00A000FF00A000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     339      FFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000000000
     340      0000000000000000000000000000000000000000000000000000000000000000
     341      0000000000000000000000000000000000000000000000000000000000000000
     342      0000000000000000000000000000000000000000000000000000000000000000
     343      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     344      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     345      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     346      00FF00A000FF00A000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     347      FFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000000000
     348      0000000000000000000000000000000000000000000000000000000000000000
     349      0000000000000000000000000000000000000000000000000000000000000000
     350      0000000000000000000000000000000000000000000000000000000000000000
     351      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     352      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     353      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     354      00FF00A000FF00A000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     355      FFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000000000
     356      0000000000000000000000000000000000000000000000000000000000000000
     357      0000000000000000000000000000000000000000000000000000000000000000
     358      0000000000000000000000000000000000000000000000000000000000000000
     359      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     360      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     361      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     362      00FF00A000FF00A000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     363      FFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000000000
     364      0000000000000000000000000000000000000000000000000000000000000000
     365      0000000000000000000000000000000000000000000000000000000000000000
     366      0000000000000000000000000000000000000000000000000000000000000000
     367      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     368      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     369      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     370      00FF00A000FF00A000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     371      FFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000000000
     372      0000000000000000000000000000000000000000000000000000000000000000
     373      0000000000000000000000000000000000000000000000000000000000000000
     374      0000000000000000000000000000000000000000000000000000000000000000
     375      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     376      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     377      00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     378      00FF00A000FF00A000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     379      FFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000000000
     380      0000000000000000000000000000000000000000000000000000000000000000
     381      0000000000000000000000000000000000000000000000000000000000000000
     382      0000000000000000000000000000000000000000000000000000000000000000
     383      0000000000000000000000000000000000000000000000000000000000000000
     384      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     385      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     386      00FF00A000FF00A000FF00000000000000000000000000000000000000000000
     387      0000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     388      FFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000000000
     389      0000000000000000000000000000000000000000000000000000000000000000
     390      0000000000000000000000000000000000000000000000000000000000000000
     391      0000000000000000000000000000000000000000000000000000000000000000
     392      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     393      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     394      00FF00A000FF00A000FF00000000000000000000000000000000000000000000
     395      0000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     396      FFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000000000
     397      0000000000000000000000000000000000000000000000000000000000000000
     398      0000000000000000000000000000000000000000000000000000000000000000
     399      0000000000000000000000000000000000000000000000000000000000000000
     400      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     401      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     402      00FF00A000FF00A000FF00000000000000000000000000000000000000000000
     403      0000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     404      FFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000000000
     405      0000000000000000000000000000000000000000000000000000000000000000
     406      0000000000000000000000000000000000000000000000000000000000000000
     407      0000000000000000000000000000000000000000000000000000000000000000
     408      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     409      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     410      00FF00A000FF00A000FF00000000000000000000000000000000000000000000
     411      0000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     412      FFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000000000
     413      0000000000000000000000000000000000000000000000000000000000000000
     414      0000000000000000000000000000000000000000000000000000000000000000
     415      0000000000000000000000000000000000000000000000000000000000000000
     416      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     417      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     418      00FF00A000FF00A000FF00000000000000000000000000000000000000000000
     419      0000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     420      FFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000000000
     421      0000000000000000000000000000000000000000000000000000000000000000
     422      0000000000000000000000000000000000000000000000000000000000000000
     423      0000000000000000000000000000000000000000000000000000000000000000
     424      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     425      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     426      00FF00A000FF00A000FF00000000000000000000000000000000000000000000
     427      0000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     428      FFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000000000
     429      0000000000000000000000000000000000000000000000000000000000000000
     430      0000000000000000000000000000000000000000000000000000000000000000
     431      0000000000000000000000000000000000000000000000000000000000000000
     432      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     433      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     434      00FF00A000FF00A000FF00000000000000000000000000000000000000000000
     435      0000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     436      FFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000000000
     437      0000000000000000000000000000000000000000000000000000000000000000
     438      0000000000000000000000000000000000000000000000000000000000000000
     439      0000000000000000000000000000000000000000000000000000000000000000
     440      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     441      00FF00FF00FF00FF00FF00A000FF00A000FF00A000FF00A000FF00A000FF00A0
     442      00FF00A000FF00A000FF00000000000000000000000000000000000000000000
     443      0000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF
     444      FFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000000000
     445      0000000000000000000000000000000000000000000000000000000000000000
     446      0000000000000000000000000000000000000000000000000000000000000000
     447      0000000000000000000000000000000000000000000000000000000000000000
     448      0000000000000000000000000000000000000000000000000000000000000000
     449      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     450      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     451      0000000000000000000000000000000000000000000000000000000000000000
     452      0000000000000000000000000000000000000000000000000000000000000000
     453      0000000000000000000000000000000000000000000000000000000000000000
     454      0000000000000000000000000000000000000000000000000000000000000000
     455      0000000000000000000000000000000000000000000000000000000000000000
     456      0000000000000000000000000000000000000000000000000000000000000000
     457      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     458      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     459      0000000000000000000000000000000000000000000000000000000000000000
     460      0000000000000000000000000000000000000000000000000000000000000000
     461      0000000000000000000000000000000000000000000000000000000000000000
     462      0000000000000000000000000000000000000000000000000000000000000000
     463      0000000000000000000000000000000000000000000000000000000000000000
     464      0000000000000000000000000000000000000000000000000000000000000000
     465      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     466      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     467      0000000000000000000000000000000000000000000000000000000000000000
     468      0000000000000000000000000000000000000000000000000000000000000000
     469      0000000000000000000000000000000000000000000000000000000000000000
     470      0000000000000000000000000000000000000000000000000000000000000000
     471      0000000000000000000000000000000000000000000000000000000000000000
     472      0000000000000000000000000000000000000000000000000000000000000000
     473      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     474      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     475      0000000000000000000000000000000000000000000000000000000000000000
     476      0000000000000000000000000000000000000000000000000000000000000000
     477      0000000000000000000000000000000000000000000000000000000000000000
     478      0000000000000000000000000000000000000000000000000000000000000000
     479      0000000000000000000000000000000000000000000000000000000000000000
     480      0000000000000000000000000000000000000000000000000000000000000000
     481      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     482      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     483      0000000000000000000000000000000000000000000000000000000000000000
     484      0000000000000000000000000000000000000000000000000000000000000000
     485      0000000000000000000000000000000000000000000000000000000000000000
     486      0000000000000000000000000000000000000000000000000000000000000000
     487      0000000000000000000000000000000000000000000000000000000000000000
     488      0000000000000000000000000000000000000000000000000000000000000000
     489      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     490      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     491      0000000000000000000000000000000000000000000000000000000000000000
     492      0000000000000000000000000000000000000000000000000000000000000000
     493      0000000000000000000000000000000000000000000000000000000000000000
     494      0000000000000000000000000000000000000000000000000000000000000000
     495      0000000000000000000000000000000000000000000000000000000000000000
     496      0000000000000000000000000000000000000000000000000000000000000000
     497      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     498      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     499      0000000000000000000000000000000000000000000000000000000000000000
     500      0000000000000000000000000000000000000000000000000000000000000000
     501      0000000000000000000000000000000000000000000000000000000000000000
     502      0000000000000000000000000000000000000000000000000000000000000000
     503      0000000000000000000000000000000000000000000000000000000000000000
     504      0000000000000000000000000000000000000000000000000000000000000000
     505      0000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF
     506      00FF00FF00FF00FF00FF00000000000000000000000000000000000000000000
     507      0000000000000000000000000000000000000000000000000000000000000000
     508      0000000000000000000000000000000000000000000000000000000000000000
     509      0000000000000000000000000000000000000000000000000000000000000000
     510      0000000000000000000000000000000000000000000000000000000000000000
     511      0000000000000000000000000000000000000000000000000000000000000000
     512      0000000000000000000000000000000000000000000000000000000000000000
     513      0000000000000000000000000000000000000000000000000000000000000000
     514      0000000000000000000000000000000000000000000000000000000000000000
     515      0000000000000000000000000000000000000000000000000000000000000000
     516      0000000000000000000000000000000000000000000000000000000000000000
     517      0000000000000000000000000000000000000000000000000000000000000000
     518      0000000000000000000000000000000000000000000000000000000000000000
     519      0000000000000000000000000000000000000000000000000000000000000000
     520      0000000000000000000000000000000000000000000000000000000000000000
     521      0000000000000000000000000000000000000000000000000000000000000000
     522      0000000000000000000000000000000000000000000000000000000000000000
     523      0000000000000000000000000000000000000000000000000000000000000000
     524      0000000000000000000000000000000000000000000000000000000000000000
     525      0000000000000000000000000000000000000000000000000000000000000000
     526      0000000000000000000000000000000000000000000000000000000000000000
     527      0000000000000000000000000000000000000000000000000000000000000000
     528      0000000000000000000000000000000000000000000000000000000000000000
     529      0000000000000000000000000000000000000000000000000000000000000000
     530      0000000000000000000000000000000000000000000000000000000000000000
     531      0000000000000000000000000000000000000000000000000000000000000000
     532      0000000000000000000000000000000000000000000000000000000000000000
     533      0000000000000000000000000000000000000000000000000000000000000000
     534      0000000000000000000000000000000000000000000000000000000000000000
     535      0000000000000000000000000000000000000000000000000000000000000000
     536      0000000000000000000000000000000000000000000000000000000000000000
     537      0000000000000000000000000000000000000000000000000000000000000000
     538      0000000000000000000000000000000000000000000000000000000000000000
     539      0000000000000000000000000000000000000000000000000000000000000000
     540      0000000000000000000000000000000000000000000000000000000000000000
     541      0000000000000000000000000000000000000000000000000000
     542    }
     543    Left = 264
     544    Top = 432
    29545  end
    30   object CoolTranslator1: TCoolTranslator
     546  object Translator1: TTranslator
    31547    POFilesFolder = 'Languages'
    32     left = 440
    33     top = 177
     548    Left = 660
     549    Top = 266
    34550  end
    35551end
  • trunk/UCore.pas

    r45 r51  
    66
    77uses
    8   Classes, SysUtils, UTheme, UApplicationInfo, UCoolTranslator;
     8  Classes, SysUtils, UTheme, UApplicationInfo, UTranslator;
    99
    1010type
     
    1414  TCore = class(TDataModule)
    1515    ApplicationInfo: TApplicationInfo;
    16     CoolTranslator1: TCoolTranslator;
     16    Translator1: TTranslator;
    1717    ThemeManager1: TThemeManager;
    1818  private
  • trunk/UEngine.pas

    r45 r51  
    66
    77uses
    8   Dialogs, Classes, SysUtils, Graphics, SpecializedMatrix, SpecializedList,
     8  Dialogs, Classes, SysUtils, Graphics, SpecializedMatrix,
    99  IntfGraphics, FPImage, LCLType, SpecializedBitmap, GraphType, Math, URectangle,
    1010  Syncobjs, UThreading, Forms, DateUtils, UAudioSystem, XMLConf, DOM, fgl;
     
    5656    StopByDirt: Boolean;
    5757    constructor Create;
     58  end;
     59
     60  TBullets = class(TFPGObjectList<TBullet>)
    5861  end;
    5962
     
    118121    Keys: TPlayerKeys;
    119122    Tanks: TTanks;
    120     Bullets: TListObject; // TListObject<TBullet>
     123    Bullets: TBullets;
    121124    LastShootTime: TDateTime;
    122125    LastDigTime: TDateTime;
     
    237240    PlayerPool: TPlayers;
    238241    Players: TPlayers;
    239     DigMasks: TListObject; // TListObject<TMatrixByte>
     242    DigMasks: TFPGObjectList<TMatrixByte>;
    240243    Lock: TCriticalSection;
    241244    CurrentRound: Integer;
     
    279282  SPlayer = 'Player';
    280283
    281 
    282 
    283284function SwapBRComponent(Value: Cardinal): Cardinal; inline;
    284285begin
     
    307308  for I := 0 to Count - 1 do begin
    308309    Items[I] := TTank.Create;
    309     TTank(Items[I]).Assign(TTank(Source.Items[I]));
     310    Items[I].Assign(Source.Items[I]);
    310311  end;
    311312end;
     
    326327  while Count > Players.Count do Delete(Count - 1);
    327328  for I := 0 to Count - 1 do
    328     TPlayer(Items[I]).Assign(TPlayer(Players[I]));
     329    Items[I].Assign(Players[I]);
    329330end;
    330331
     
    335336  Config.SetValue(DOMString(Path + '/Count'), Count);
    336337  for I := 0 to Count - 1 do
    337     TPlayer(Items[I]).SaveConfig(Config, Path + '/Player' + IntToStr(I));
     338    Items[I].SaveConfig(Config, Path + '/Player' + IntToStr(I));
    338339end;
    339340
     
    347348  while Count < NewCount do Add(TPlayer.Create);
    348349  for I := 0 to Count - 1 do begin
    349     Items[I] := TPlayer.Create;
    350     TPlayer(Items[I]).Engine := Engine;
    351     TPlayer(Items[I]).Id := I;
    352     TPlayer(Items[I]).LoadConfig(Config, Path + '/Player' + IntToStr(I));
     350    Items[I].Engine := Engine;
     351    Items[I].Id := I;
     352    Items[I].LoadConfig(Config, Path + '/Player' + IntToStr(I));
    353353  end;
    354354end;
     
    410410  FreeAndNil(Mask);
    411411  FreeAndNil(Image);
    412   inherited Destroy;
     412  inherited;
    413413end;
    414414
     
    574574  FreeAndNil(Surface);
    575575  FreeAndNil(Matters);
    576   inherited Destroy;
     576  inherited;
    577577end;
    578578
     
    586586  P: Integer;
    587587begin
     588  Bitmap.BeginUpdate;
    588589  try
    589     Bitmap.BeginUpdate;
    590590    RawImage := Bitmap.RawImage;
    591591    PixelRowPtr := PInteger(RawImage.Data);
     
    594594      PixelPtr := PixelRowPtr;
    595595      for X := 0 to Bitmap.Width - 1 do begin
    596         P := TMatter(Matters[Surface.ItemsXY[Trunc(X / Bitmap.Width * Surface.Count.X),
    597             Trunc(Y / Bitmap.Height * Surface.Count.Y)]]).Color;
     596        P := Matters[Surface.ItemsXY[Trunc(X / Bitmap.Width * Surface.Count.X),
     597            Trunc(Y / Bitmap.Height * Surface.Count.Y)]].Color;
    598598        PixelPtr^ := SwapBRComponent(P);
    599599        Inc(PByte(PixelPtr), BytePerPixel);
     
    753753  // Bullet movement
    754754  for I := Bullets.Count - 1 downto 0 do
    755   with TBullet(Bullets[I]), Engine.World.Surface do begin
     755  with Bullets[I], Engine.World.Surface do begin
    756756    Pos := Point(Trunc(Position.X), Trunc(Position.Y));
    757757    if (ItemsXY[LastPos.X, LastPos.Y] = Byte(miBullet1)) or
     
    787787        end else begin
    788788          for P := 0 to Engine.Players.Count - 1 do
    789           with TPlayer(Engine.Players[P]) do
     789          with Engine.Players[P] do
    790790          if (Self.Id <> P) and
    791             (TMatter(Engine.World.Matters[ItemsXY[Pos.X, Pos.Y]]).Kind = mkTankBody) and
    792             (TMatter(Engine.World.Matters[ItemsXY[Pos.X, Pos.Y]]).Player = P) then
     791            (Engine.World.Matters[ItemsXY[Pos.X, Pos.Y]].Kind = mkTankBody) and
     792            (Engine.World.Matters[ItemsXY[Pos.X, Pos.Y]].Player = P) then
    793793            Shield := Shield - 1 / ShieldSteps;
    794794          if StopByDirt then Explosion(LastPos, BulletExplosionRange);
     
    820820  XX, YY: Integer;
    821821  I: Integer;
     822  B: TColor;
    822823begin
    823824  with Engine.FBitmapLower do begin
    824 //    Brush.Color := SurfaceMatterColors[smRock];
    825 //    FillRect(ScreenFrame);
     825    //Brush.Color := SurfaceMatterColors[smRock];
     826    //FillRect(ScreenFrame);
     827    for Y := ScreenFrame.Top to ScreenFrame.Bottom - 1 do
     828      for X := ScreenFrame.Left to ScreenFrame.Right - 1 do begin
     829        ItemsXY[X, Y] := 0;
     830      end;
     831
    826832    Fill(CreateIndex(ScreenFrame.Left, ScreenFrame.Top),
    827       CreateIndex(ScreenFrame.Right, ScreenFrame.Bottom),
    828       TMatter(Engine.World.Matters[Integer(miRock)]).Color);
     833      CreateIndex(ScreenFrame.Width, ScreenFrame.Height),
     834      Engine.World.Matters[Integer(miRock)].Color);
     835
    829836
    830837    with Engine.World do
     
    833840        XX := X - ScreenFrame.Left - ((ScreenFrame.Right - ScreenFrame.Left) div 2) + Position.X;
    834841        YY := Y - ScreenFrame.Top - ((ScreenFrame.Bottom - ScreenFrame.Top) div 2) + Position.Y;
    835         if (YY >= 0) and (YY < Surface.Count.Y) and (XX >= 0) and (XX < Surface.Count.X) then
    836           ItemsXY[X, Y] := TMatter(Engine.World.Matters[Surface.ItemsXY[XX, YY]]).Color;
     842        if (YY >= 0) and (YY < Surface.Count.Y) and
     843        (XX >= 0) and (XX < Surface.Count.X) then begin
     844          B := Engine.World.Matters[Surface.ItemsXY[XX, YY]].Color;
     845          ItemsXY[X, Y] := B;
     846        end;
    837847      end;
    838848
     
    841851      if Energy < I / (ScreenFrame.Width - 2) then
    842852        ItemsXY[ScreenFrame.Left + I, ScreenFrame.Bottom - 2] := clBlack
    843         else ItemsXY[ScreenFrame.Left + I, ScreenFrame.Bottom - 2] := clYellow;
     853        else ItemsXY[ScreenFrame.Left + I, ScreenFrame.Bottom - 2] := 0; //clYellow;
    844854
    845855    // Shield bar
     
    851861    for I := ScreenFrame.Left to ScreenFrame.Right - 1 do
    852862      ItemsXY[I, 0] := $010101 * I;
     863
     864      for Y := ScreenFrame.Top to ScreenFrame.Bottom - 1 do
     865      for X := ScreenFrame.Left to ScreenFrame.Right - 1 do begin
     866        ItemsXY[X, Y] := 0;
     867      end;
    853868  end;
    854869end;
     
    10221037
    10231038  NewTank := TTank.Create;
    1024   NewTank.Image.Assign(TTank(Tanks[0]).Image);
     1039  NewTank.Image.Assign(Tanks[0].Image);
    10251040  NewTank.Image.Reverse;
    10261041  NewTank.Image.ReverseHorizontal;
     
    10281043
    10291044  NewTank := TTank.Create;
    1030   NewTank.Image.Assign(TTank(Tanks[1]).Image);
     1045  NewTank.Image.Assign(Tanks[1].Image);
    10311046  NewTank.Image.ReverseVertical;
    10321047  Tanks.Add(NewTank);
    10331048
    10341049  NewTank := TTank.Create;
    1035   NewTank.Image.Assign(TTank(Tanks[0]).Image);
     1050  NewTank.Image.Assign(Tanks[0].Image);
    10361051  NewTank.Image.ReverseVertical;
    10371052  Tanks.Add(NewTank);
    10381053
    10391054  NewTank := TTank.Create;
    1040   NewTank.Image.Assign(TTank(Tanks[1]).Image);
     1055  NewTank.Image.Assign(Tanks[1].Image);
    10411056  NewTank.Image.ReverseVertical;
    10421057  NewTank.Image.ReverseHorizontal;
     
    10441059
    10451060  NewTank := TTank.Create;
    1046   NewTank.Image.Assign(TTank(Tanks[0]).Image);
     1061  NewTank.Image.Assign(Tanks[0].Image);
    10471062  NewTank.Image.Reverse;
    10481063  Tanks.Add(NewTank);
    10491064
    10501065  NewTank := TTank.Create;
    1051   NewTank.Image.Assign(TTank(Tanks[1]).Image);
     1066  NewTank.Image.Assign(Tanks[1].Image);
    10521067  NewTank.Image.ReverseHorizontal;
    10531068  Tanks.Add(NewTank);
    10541069
    10551070  for I := 0 to Tanks.Count - 1 do
    1056   with TTank(Tanks[I]) do begin
     1071  with Tanks[I] do begin
    10571072    Mask.Assign(Image);
    10581073    for Y := 0 to Mask.Count.Y - 1 do
     
    10651080begin
    10661081  Tanks := TTanks.Create;
    1067   Bullets := TListObject.Create;
     1082  Bullets := TBullets.Create;
    10681083  House := TRectangle.Create;
    10691084  ScreenFrame := TRectangle.Create;
     
    10761091  FreeAndNil(Bullets);
    10771092  FreeAndNil(Tanks);
    1078   inherited Destroy;
     1093  inherited;
    10791094end;
    10801095
     
    11681183  Result := False;
    11691184  for I := 0 to Players.Count - 1 do
    1170     if TPlayer(Players[I]).House.IsInside(Pos) then begin
     1185    if Players[I].House.IsInside(Pos) then begin
    11711186      Result := True;
    11721187    end;
     
    13281343
    13291344  NewMask := TMatrixByte.Create;
    1330   NewMask.Assign(TMatrixByte(DigMasks[0]));
     1345  NewMask.Assign(DigMasks[0]);
    13311346  NewMask.Reverse;
    13321347  NewMask.ReverseHorizontal;
     
    13341349
    13351350  NewMask := TMatrixByte.Create;
    1336   NewMask.Assign(TMatrixByte(DigMasks[1]));
     1351  NewMask.Assign(DigMasks[1]);
    13371352  NewMask.ReverseVertical;
    13381353  DigMasks.Add(NewMask);
    13391354
    13401355  NewMask := TMatrixByte.Create;
    1341   NewMask.Assign(TMatrixByte(DigMasks[0]));
     1356  NewMask.Assign(DigMasks[0]);
    13421357  NewMask.ReverseVertical;
    13431358  DigMasks.Add(NewMask);
    13441359
    13451360  NewMask := TMatrixByte.Create;
    1346   NewMask.Assign(TMatrixByte(DigMasks[1]));
     1361  NewMask.Assign(DigMasks[1]);
    13471362  NewMask.ReverseVertical;
    13481363  NewMask.ReverseHorizontal;
     
    13501365
    13511366  NewMask := TMatrixByte.Create;
    1352   NewMask.Assign(TMatrixByte(DigMasks[0]));
     1367  NewMask.Assign(DigMasks[0]);
    13531368  NewMask.Reverse;
    13541369  DigMasks.Add(NewMask);
    13551370
    13561371  NewMask := TMatrixByte.Create;
    1357   NewMask.Assign(TMatrixByte(DigMasks[1]));
     1372  NewMask.Assign(DigMasks[1]);
    13581373  NewMask.ReverseHorizontal;
    13591374  DigMasks.Add(NewMask);
     
    14401455  end;
    14411456  for I := 0 to PlayerPool.Count - 1 do
    1442   with TPlayer(PlayerPool[I]) do begin
     1457  with PlayerPool[I] do begin
    14431458    Engine := Self;
    14441459    Id := I;
    14451460    InitTanks;
    14461461    Name := SPlayer + ' ' + IntToStr(I + 1);
    1447     if I < 8 then Enabled := True;
     1462    if I < 2 then Enabled := True;
    14481463  end;
    14491464end;
     
    14561471  Players.Clear;
    14571472  for I := 0 to PlayerPool.Count - 1 do
    1458   with TPlayer(PlayerPool[I]) do
     1473  with PlayerPool[I] do
    14591474  if Enabled then begin
    14601475    NewPlayer := TPlayer.Create;
    1461     NewPlayer.Assign(TPlayer(PlayerPool[I]));
     1476    NewPlayer.Assign(PlayerPool[I]);
    14621477    Players.Add(NewPlayer);
    14631478    Score := 0;
     
    14761491  AliveCount := 0;
    14771492  for I := 0 to Players.Count - 1 do
    1478   with TPlayer(Players[I]) do
     1493  with Players[I] do
    14791494    if not Exploded then Inc(AliveCount);
    14801495  if AliveCount <= 1 then begin
    14811496    for I := 0 to Players.Count - 1 do
    1482     with TPlayer(Players[I]) do
     1497    with Players[I] do
    14831498      if not Exploded then Inc(Score);
    14841499    if CurrentRound < MaxRound then
     
    15071522      PlayerFrameHeight * VertFrameCount);
    15081523    for I := 0 to Players.Count - 1 do begin
    1509       TPlayer(Players[I]).ScreenFrame.AsTRect := Rect(
     1524      Players[I].ScreenFrame.AsTRect := Rect(
    15101525        (I mod HorizFrameCount) * (FBitmapLower.Count.X div HorizFrameCount) + 1,
    15111526        (I div HorizFrameCount) * (FBitmapLower.Count.Y div VertFrameCount) + 1,
     
    15381553  AudioExplode.Open;
    15391554  InitPlayerPool;
    1540   DigMasks := TListObject.Create;
     1555  DigMasks := TFPGObjectList<TMatrixByte>.Create;
    15411556  InitDigMasks;
    15421557  Redraw;
     
    15571572  FreeAndNil(AudioShot);
    15581573  FreeAndNil(AudioExplode);
    1559   inherited Destroy;
     1574  inherited;
    15601575end;
    15611576
     
    15641579  I: Integer;
    15651580begin
     1581  Lock.Acquire;
    15661582  try
    1567     Lock.Acquire;
    15681583    for I := 0 to Players.Count - 1 do begin
    1569       TPlayer(Players[I]).Control;
    1570       TPlayer(Players[I]).Tick;
     1584      Players[I].Control;
     1585      Players[I].Tick;
    15711586    end;
    15721587  finally
     
    15831598    DrawStart := NowPrecise;
    15841599    FRedrawPending := False;
     1600    Lock.Acquire;
    15851601    try
    1586       Lock.Acquire;
    15871602      //if ClearBackground then FBitmapLower.FillAll(clNavy);
    15881603      for I := 0 to Players.Count - 1 do
    15891604      if Players[I].Enabled then begin
    1590         TPlayer(Players[I]).Paint;
     1605        Players[I].Paint;
    15911606      end;
    15921607    finally
     
    16171632
    16181633  for I := 0 to Players.Count - 1 do
    1619   with TPlayer(Players[I]) do begin
    1620     Init;
    1621   end;
     1634    Players[I].Init;
    16221635  ClearBackground := True;
    16231636  Redraw;
  • trunk/tunneler.lpi

    r47 r51  
    7878      </Modes>
    7979    </RunParams>
    80     <RequiredPackages Count="6">
     80    <RequiredPackages Count="5">
    8181      <Item1>
    8282        <PackageName Value="FCL"/>
     
    9191      </Item3>
    9292      <Item4>
    93         <PackageName Value="CoolTranslator"/>
    94         <DefaultFilename Value="Packages/CoolTranslator/CoolTranslator.lpk" Prefer="True"/>
     93        <PackageName Value="TemplateGenerics"/>
     94        <DefaultFilename Value="Packages/TemplateGenerics/TemplateGenerics.lpk" Prefer="True"/>
    9595      </Item4>
    9696      <Item5>
    97         <PackageName Value="TemplateGenerics"/>
    98         <DefaultFilename Value="Packages/TemplateGenerics/TemplateGenerics.lpk" Prefer="True"/>
     97        <PackageName Value="LCL"/>
    9998      </Item5>
    100       <Item6>
    101         <PackageName Value="LCL"/>
    102       </Item6>
    10399    </RequiredPackages>
    104     <Units Count="11">
     100    <Units Count="10">
    105101      <Unit0>
    106102        <Filename Value="tunneler.lpr"/>
     
    155151      </Unit8>
    156152      <Unit9>
    157         <Filename Value="Forms/UFormAbout.pas"/>
    158         <IsPartOfProject Value="True"/>
    159         <ComponentName Value="FormAbout"/>
    160         <HasResources Value="True"/>
    161         <ResourceBaseClass Value="Form"/>
     153        <Filename Value="UCore.pas"/>
     154        <IsPartOfProject Value="True"/>
     155        <ComponentName Value="Core"/>
     156        <HasResources Value="True"/>
     157        <ResourceBaseClass Value="DataModule"/>
    162158      </Unit9>
    163       <Unit10>
    164         <Filename Value="UCore.pas"/>
    165         <IsPartOfProject Value="True"/>
    166         <ComponentName Value="Core"/>
    167         <HasResources Value="True"/>
    168         <ResourceBaseClass Value="DataModule"/>
    169       </Unit10>
    170159    </Units>
    171160  </ProjectOptions>
  • trunk/tunneler.lpr

    r47 r51  
    44
    55uses
    6   {$DEFINE UseCThreads}
    7   {$IFDEF UNIX}{$IFDEF UseCThreads}
     6  {$IFDEF UNIX}
    87  cthreads, clocale,
    9   {$ENDIF}{$ENDIF}
     8  {$ENDIF}
    109  Interfaces, // this includes the LCL widgetset
    11   Forms, TemplateGenerics, CoolTranslator, UPlatform, FileUtil, SysUtils,
     10  Forms, TemplateGenerics, UPlatform, FileUtil, SysUtils,
    1211  Common,
    1312  UFormNewGame, UMainForm, UMapForm, UGameResultForm, UCore
     
    1615{$R *.res}
    1716
    18 {$IFDEF DEBUG}
     17{$if declared(UseHeapTrace)}
    1918const
    2019  HeapTraceLog = 'heaptrclog.trc';
     
    2221
    2322begin
    24   {$IFDEF DEBUG}
     23  {$if declared(UseHeapTrace)}
    2524  // Heap trace
    2625  DeleteFile(ExtractFilePath(ParamStr(0)) + HeapTraceLog);
Note: See TracChangeset for help on using the changeset viewer.