Changeset 26


Ignore:
Timestamp:
Sep 29, 2011, 8:54:28 PM (13 years ago)
Author:
george
Message:
  • Fixed: Wrong shooting through walls.
  • Added: Clearing dirt before tank during digging.
Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/UApplicationInfo.pas

    r24 r26  
    5252  Name := 'Tunneler';
    5353  Identification := 1;
    54   ReleaseDate := '2011-09-28';
     54  ReleaseDate := '2011-09-29';
    5555  MajorVersion := 0;
    5656  MinorVersion := 2;
  • trunk/UCore.pas

    r25 r26  
    1313  MaxBulletCount = 10;
    1414  EnergySteps = 4000;
     15  EnergyDecreaseDig = 0.001;
    1516  ShieldSteps = 40;
    1617  ExplosionBulletCount = 100;
     
    2021  BulletExplosionRange = 3;
    2122  ShootDelay = 0.2; // seconds
     23  DigDelay = 0.2; // seconds
     24  ShootDigDelay = 0.005; // seconds
    2225  ShootEnergyDecrease = 0.01;
     26  PlayerFrameWidth = 80;
     27  PlayerFrameHeight = 80;
     28  PlayerHouseSize = 30;
     29  PlayerHouseDoorSize = 8;
    2330
    2431type
     
    5966  end;
    6067
    61   TMatterIndex = (miSpace, miDirt1, miDirt2, miRock, miBullet1, miBullet2,
     68  TMatterIndex = (miSpace, miDirt1, miDirt2, miRock, miBullet1, miBullet2, miBorder,
    6269    miPlayer1Cannon, miPlayer1Home, miPlayer1TankBody, miPlayer1TankBody2,
    6370    miPlayer2Cannon, miPlayer2Home, miPlayer2TankBody, miPlayer2TankBody2,
     
    7077
    7178  TMatterKind = (mkSpace, mkDirt, mkRock, mkBullet, mkTankBody,
    72     mkHome);
     79    mkHome, mkBorder);
    7380
    7481  { TPlayer }
     
    8491    function ShowTankProc(Item1, Item2: Byte): Byte;
    8592    function HideTankProc(Item1, Item2: Byte): Byte;
     93    function DigProc(Item1, Item2: Byte): Byte;
    8694  public
    8795    Id: Integer;
     
    96104    Bullets: TListObject; // TListObject<TBullet>
    97105    LastShootTime: TDateTime;
     106    LastDigTime: TDateTime;
    98107    Energy: Real;
    99108    LastEnergy: Real;
     
    176185    IntfImage: TLazIntfImage;
    177186    ClearBackground: Boolean;
     187    procedure InitDigMasks;
    178188    procedure SetActive(const AValue: Boolean);
    179189    procedure SetBitmap(const AValue: TBitmap);
     
    187197    PlayerPool: TListObject; // TListObject<TPlayer>
    188198    Players: TListObject; // TListObject<TPlayer>
     199    DigMasks: TListObject; // TListObject<TMatrixByte>
    189200    Lock: TCriticalSection;
    190201    constructor Create;
     
    207218    (X: 0; Y: 1), (X: -1; Y: 1), (X: -1; Y: 0), (X: -1; Y: -1));
    208219
    209 function SwapBRComponent(Value: Integer): Integer; inline;
     220function SwapBRComponent(Value: Cardinal): Cardinal; inline;
    210221
    211222
     
    216227
    217228
    218 function SwapBRComponent(Value: Integer): Integer;
     229function SwapBRComponent(Value: Cardinal): Cardinal; inline;
    219230begin
    220231//  Result := (Value and $00ff00) or ((Value shr 16) and $ff) or ((Value and $ff) shl 16);
     
    326337    Kind := mkBullet;
    327338    Color := clRed;
     339    Player := -1;
     340  end;
     341  // Border
     342  with TMatter(Matter.AddNew(TMatter.Create)) do begin
     343    Kind := mkBorder;
     344    Color := clNavy;
    328345    Player := -1;
    329346  end;
     
    667684    HideTank;
    668685    Matter := CheckColision;
    669     if (Matter = miDirt1) then Dig := not Dig;
    670     if (Matter = miSpace) or ((Matter = miDirt1) and (not Dig)) then begin
     686    if (Matter = miDirt1) and (
     687    (Engine.KeyBoard.KeyState[Ord(Keys.Shoot)] and
     688    ((Now - LastDigTime) > ShootDigDelay * OneSecond)) or
     689    (not Engine.KeyBoard.KeyState[Ord(Keys.Shoot)] and
     690    ((Now - LastDigTime) > DigDelay * OneSecond))) then begin
     691      Dig := not Dig;
     692      with Engine, World do
     693      Surface.Merge(Surface.CreateIndex(
     694        Position.X - TMatrixByte(DigMasks[Direction]).Count.X div 2,
     695        Position.Y - TMatrixByte(DigMasks[Direction]).Count.Y div 2),
     696        TMatrixByte(DigMasks[Direction]), DigProc);
     697      Energy := Energy - EnergyDecreaseDig;
     698      if Energy < 0 then Energy := 0;
     699      Engine.Redraw;
     700      LastDigTime := Now;
     701      Direction := NewDirection;
     702    end;
     703    if (Matter = miSpace) then begin
    671704      Position := NewPosition;
    672705      Direction := NewDirection;
     
    681714      NewBullet := TBullet.Create;
    682715      NewBullet.Player := Self;
    683       NewBullet.Position.X := Position.X + DirectionToDelta[Direction].X * 4;
    684       NewBullet.Position.Y := Position.Y + DirectionToDelta[Direction].Y * 4;
     716      NewBullet.Position.X := Position.X + DirectionToDelta[Direction].X * 3;
     717      NewBullet.Position.Y := Position.Y + DirectionToDelta[Direction].Y * 3;
    685718      NewBullet.Direction.X := DirectionToDelta[Direction].X;
    686719      NewBullet.Direction.Y := DirectionToDelta[Direction].Y;
     
    807840//    FillRect(ScreenFrame);
    808841    Fill(CreateIndex(ScreenFrame.Left, ScreenFrame.Top),
    809       CreateIndex(ScreenFrame.Right - 1, ScreenFrame.Bottom - 1),
     842      CreateIndex(ScreenFrame.Right, ScreenFrame.Bottom),
    810843      TMatter(Engine.World.Matter[Integer(miRock)]).Color);
    811844
     
    834867
    835868procedure TPlayer.PlaceHouse;
    836 const
    837   HouseSize = 30;
    838   DoorSize = 8;
    839869var
    840870  X, Y: Integer;
    841871  Matter: Byte;
    842872begin
    843   House.AsTRect := Rect(Position.X - HouseSize div 2, Position.Y - HouseSize div 2,
    844     Position.X + HouseSize div 2, Position.Y + HouseSize div 2);
    845   for Y := 0 to HouseSize - 1 do
    846     for X := 0 to HouseSize - 1 do begin
    847       if ((Y = 0) or (Y = (HouseSize - 1)) or (X = 0) or (X = (HouseSize - 1))) and
    848       not (((Y = 0) or (Y = (HouseSize - 1))) and (X > ((HouseSize - DoorSize) div 2)) and
    849       (X < ((HouseSize - 1 + DoorSize) div 2)))
     873  House.AsTRect := Rect(Position.X - PlayerHouseSize div 2, Position.Y - PlayerHouseSize div 2,
     874    Position.X + PlayerHouseSize div 2, Position.Y + PlayerHouseSize div 2);
     875  for Y := 0 to PlayerHouseSize - 1 do
     876    for X := 0 to PlayerHouseSize - 1 do begin
     877      if ((Y = 0) or (Y = (PlayerHouseSize - 1)) or (X = 0) or (X = (PlayerHouseSize - 1))) and
     878      not (((Y = 0) or (Y = (PlayerHouseSize - 1))) and (X > ((PlayerHouseSize - PlayerHouseDoorSize) div 2)) and
     879      (X < ((PlayerHouseSize - 1 + PlayerHouseDoorSize) div 2)))
    850880      then Matter := Byte(miPlayer1Home) + Id * 4
    851881        else Matter := Byte(miSpace);
     
    907937begin
    908938  if Item2 > 0 then Result := 0 else Result := Item1;
     939end;
     940
     941function TPlayer.DigProc(Item1, Item2: Byte): Byte;
     942begin
     943  if ((Item1 = Integer(miDirt1)) or (Item1 = Integer(miDirt2))) and (Item2 = 1) then
     944    Result := Integer(miSpace) else Result := Item1;
    909945end;
    910946
     
    11261162  TargetHeight: Integer;
    11271163  TargetWidth: Integer;
     1164  BgColor: Cardinal;
    11281165begin
    11291166  if Assigned(FBitmap) then
     
    11341171    BytePerRow := RawImage.Description.BytesPerLine;
    11351172    if ClearBackground then begin
    1136       FillChar(RawImage.Data^, Bitmap.Height * BytePerRow, 0);
     1173      BgColor := TMatter(World.Matter[Integer(miBorder)]).Color;
     1174      BgColor := SwapBRComponent(BgColor);
     1175      FillDWord(RawImage.Data^, Bitmap.Height * BytePerRow div 4, BgColor);
    11371176      ClearBackground := False;
    11381177    end;
     
    11951234end;
    11961235
     1236procedure TEngine.InitDigMasks;
     1237var
     1238  NewMask: TMatrixByte;
     1239  I: Integer;
     1240  X, Y: Integer;
     1241begin
     1242  DigMasks.Clear;
     1243
     1244  // 001111100
     1245  // 0111A1110
     1246  // 00z1A1z00
     1247  // 00zxAxz00
     1248  // 00zxAxz00
     1249  // 00zxxxz00
     1250  // 00z000z00
     1251  // 000000000
     1252  // 000000000
     1253
     1254  NewMask := TMatrixByte.Create;
     1255  with NewMask do begin
     1256    Count := CreateIndex(9, 9);
     1257    for I := 0 to 4 do ItemsXY[2 + I, 0] := 1;
     1258    for I := 0 to 2 do begin
     1259      ItemsXY[1 + I, 1] := 1;
     1260      ItemsXY[5 + I, 1] := 1;
     1261    end;
     1262    ItemsXY[3, 2] := 1;
     1263    ItemsXY[5, 2] := 1;
     1264  end;
     1265  DigMasks.Add(NewMask);
     1266
     1267  // 000011110
     1268  // 0000z1111
     1269  // 000zx1A11
     1270  // 00zxxA111
     1271  // 0zxxAxxz1
     1272  // 000xxxz00
     1273  // 0000xz000
     1274  // 0000z0000
     1275  // 000000000
     1276
     1277  NewMask := TMatrixByte.Create;
     1278  with NewMask do begin
     1279    Count := CreateIndex(9, 9);
     1280    for I := 0 to 3 do begin
     1281      ItemsXY[4 + I, 0] := 1;
     1282      ItemsXY[5 + I, 1] := 1;
     1283    end;
     1284    ItemsXY[5, 2] := 1;
     1285    ItemsXY[7, 2] := 1;
     1286    ItemsXY[8, 2] := 1;
     1287    for I := 0 to 2 do
     1288      ItemsXY[6 + I, 3] := 1;
     1289    ItemsXY[8, 4] := 1;
     1290  end;
     1291  DigMasks.Add(NewMask);
     1292
     1293  NewMask := TMatrixByte.Create;
     1294  NewMask.Assign(TMatrixByte(DigMasks[0]));
     1295  NewMask.Reverse;
     1296  NewMask.ReverseHorizontal;
     1297  DigMasks.Add(NewMask);
     1298
     1299  NewMask := TMatrixByte.Create;
     1300  NewMask.Assign(TMatrixByte(DigMasks[1]));
     1301  NewMask.ReverseVertical;
     1302  DigMasks.Add(NewMask);
     1303
     1304  NewMask := TMatrixByte.Create;
     1305  NewMask.Assign(TMatrixByte(DigMasks[0]));
     1306  NewMask.ReverseVertical;
     1307  DigMasks.Add(NewMask);
     1308
     1309  NewMask := TMatrixByte.Create;
     1310  NewMask.Assign(TMatrixByte(DigMasks[1]));
     1311  NewMask.ReverseVertical;
     1312  NewMask.ReverseHorizontal;
     1313  DigMasks.Add(NewMask);
     1314
     1315  NewMask := TMatrixByte.Create;
     1316  NewMask.Assign(TMatrixByte(DigMasks[0]));
     1317  NewMask.Reverse;
     1318  DigMasks.Add(NewMask);
     1319
     1320  NewMask := TMatrixByte.Create;
     1321  NewMask.Assign(TMatrixByte(DigMasks[1]));
     1322  NewMask.ReverseHorizontal;
     1323  DigMasks.Add(NewMask);
     1324end;
     1325
    11971326procedure TEngine.InitPlayerPool;
    11981327var
     
    12831412      HorizFrameCount := 1;
    12841413    end;
    1285     FBitmapLower.Count := FBitmapLower.CreateIndex(80 * HorizFrameCount, 60 * VertFrameCount);
     1414    FBitmapLower.Count := FBitmapLower.CreateIndex(PlayerFrameWidth * HorizFrameCount,
     1415      PlayerFrameHeight * VertFrameCount);
    12861416    for I := 0 to Players.Count - 1 do begin
    12871417      TPlayer(Players[I]).ScreenFrame.AsTRect := Rect(
    1288         (I mod HorizFrameCount) * (FBitmapLower.Count.X div HorizFrameCount),
    1289         (I div HorizFrameCount) * (FBitmapLower.Count.Y div VertFrameCount),
     1418        (I mod HorizFrameCount) * (FBitmapLower.Count.X div HorizFrameCount) + 1,
     1419        (I div HorizFrameCount) * (FBitmapLower.Count.Y div VertFrameCount) + 1,
    12901420        ((I mod HorizFrameCount) + 1) * (FBitmapLower.Width div HorizFrameCount),
    12911421        ((I div HorizFrameCount) + 1) * (FBitmapLower.Height div VertFrameCount));
     
    13091439  World.Engine := Self;
    13101440  InitPlayerPool;
     1441  DigMasks := TListObject.Create;
     1442  InitDigMasks;
    13111443  Redraw;
    13121444end;
     
    13151447begin
    13161448  Active := False;
     1449  DigMasks.Free;
    13171450  FBitmapLower.Free;
    13181451  FBitmapLock.Free;
     
    13501483    try
    13511484      Lock.Acquire;
    1352       //FBitmapLower.FillAll(0);
     1485      if ClearBackground then FBitmapLower.FillAll(clNavy);
    13531486      for I := 0 to Players.Count - 1 do begin
    13541487        TPlayer(Players[I]).Paint;
  • trunk/tunneler.lpi

    r25 r26  
    4242      </Item3>
    4343    </RequiredPackages>
    44     <Units Count="71">
     44    <Units Count="73">
    4545      <Unit0>
    4646        <Filename Value="tunneler.lpr"/>
     
    5050        <TopLine Value="1"/>
    5151        <CursorPos X="61" Y="10"/>
    52         <UsageCount Value="117"/>
     52        <UsageCount Value="123"/>
    5353      </Unit0>
    5454      <Unit1>
     
    6060        <TopLine Value="203"/>
    6161        <CursorPos X="68" Y="209"/>
    62         <UsageCount Value="91"/>
     62        <UsageCount Value="90"/>
    6363      </Unit1>
    6464      <Unit2>
     
    6969        <EditorIndex Value="0"/>
    7070        <WindowIndex Value="0"/>
    71         <TopLine Value="756"/>
    72         <CursorPos X="22" Y="773"/>
    73         <UsageCount Value="117"/>
     71        <TopLine Value="1399"/>
     72        <CursorPos X="3" Y="1405"/>
     73        <UsageCount Value="123"/>
    7474        <Loaded Value="True"/>
    7575      </Unit2>
     
    8080        <TopLine Value="35"/>
    8181        <CursorPos X="20" Y="51"/>
    82         <UsageCount Value="5"/>
     82        <UsageCount Value="4"/>
    8383      </Unit3>
    8484      <Unit4>
     
    8888        <TopLine Value="52"/>
    8989        <CursorPos X="18" Y="57"/>
    90         <UsageCount Value="4"/>
     90        <UsageCount Value="3"/>
    9191      </Unit4>
    9292      <Unit5>
     
    9696        <TopLine Value="1"/>
    9797        <CursorPos X="61" Y="11"/>
    98         <UsageCount Value="19"/>
     98        <UsageCount Value="18"/>
    9999      </Unit5>
    100100      <Unit6>
     
    103103        <TopLine Value="19"/>
    104104        <CursorPos X="4" Y="36"/>
    105         <UsageCount Value="11"/>
     105        <UsageCount Value="10"/>
    106106      </Unit6>
    107107      <Unit7>
     
    111111        <TopLine Value="2417"/>
    112112        <CursorPos X="3" Y="2459"/>
    113         <UsageCount Value="7"/>
     113        <UsageCount Value="6"/>
    114114      </Unit7>
    115115      <Unit8>
     
    118118        <TopLine Value="453"/>
    119119        <CursorPos X="1" Y="470"/>
    120         <UsageCount Value="11"/>
     120        <UsageCount Value="10"/>
    121121      </Unit8>
    122122      <Unit9>
     
    125125        <TopLine Value="34"/>
    126126        <CursorPos X="1" Y="54"/>
    127         <UsageCount Value="3"/>
     127        <UsageCount Value="2"/>
    128128      </Unit9>
    129129      <Unit10>
     
    133133        <TopLine Value="1314"/>
    134134        <CursorPos X="42" Y="1327"/>
    135         <UsageCount Value="7"/>
     135        <UsageCount Value="6"/>
    136136      </Unit10>
    137137      <Unit11>
    138138        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericMatrix.inc"/>
     139        <EditorIndex Value="1"/>
    139140        <WindowIndex Value="0"/>
    140141        <TopLine Value="152"/>
    141         <CursorPos X="1" Y="174"/>
    142         <UsageCount Value="49"/>
     142        <CursorPos X="28" Y="159"/>
     143        <UsageCount Value="50"/>
     144        <Loaded Value="True"/>
    143145      </Unit11>
    144146      <Unit12>
     
    148150        <TopLine Value="16"/>
    149151        <CursorPos X="22" Y="33"/>
    150         <UsageCount Value="17"/>
     152        <UsageCount Value="16"/>
    151153      </Unit12>
    152154      <Unit13>
     
    155157        <TopLine Value="16"/>
    156158        <CursorPos X="19" Y="32"/>
    157         <UsageCount Value="5"/>
     159        <UsageCount Value="4"/>
    158160      </Unit13>
    159161      <Unit14>
     
    163165        <TopLine Value="54"/>
    164166        <CursorPos X="3" Y="70"/>
    165         <UsageCount Value="8"/>
     167        <UsageCount Value="7"/>
    166168      </Unit14>
    167169      <Unit15>
     
    170172        <TopLine Value="115"/>
    171173        <CursorPos X="1" Y="132"/>
    172         <UsageCount Value="27"/>
     174        <UsageCount Value="26"/>
    173175      </Unit15>
    174176      <Unit16>
     
    177179        <TopLine Value="783"/>
    178180        <CursorPos X="3" Y="785"/>
    179         <UsageCount Value="2"/>
     181        <UsageCount Value="1"/>
    180182      </Unit16>
    181183      <Unit17>
     
    184186        <TopLine Value="498"/>
    185187        <CursorPos X="11" Y="515"/>
    186         <UsageCount Value="6"/>
     188        <UsageCount Value="5"/>
    187189      </Unit17>
    188190      <Unit18>
     
    192194        <TopLine Value="665"/>
    193195        <CursorPos X="27" Y="682"/>
    194         <UsageCount Value="4"/>
     196        <UsageCount Value="3"/>
    195197      </Unit18>
    196198      <Unit19>
     
    199201        <TopLine Value="112"/>
    200202        <CursorPos X="10" Y="114"/>
    201         <UsageCount Value="4"/>
     203        <UsageCount Value="3"/>
    202204      </Unit19>
    203205      <Unit20>
     
    207209        <TopLine Value="1035"/>
    208210        <CursorPos X="15" Y="1052"/>
    209         <UsageCount Value="3"/>
     211        <UsageCount Value="2"/>
    210212      </Unit20>
    211213      <Unit21>
     
    214216        <TopLine Value="3003"/>
    215217        <CursorPos X="3" Y="3010"/>
    216         <UsageCount Value="3"/>
     218        <UsageCount Value="2"/>
    217219      </Unit21>
    218220      <Unit22>
     
    221223        <TopLine Value="392"/>
    222224        <CursorPos X="1" Y="411"/>
    223         <UsageCount Value="3"/>
     225        <UsageCount Value="2"/>
    224226      </Unit22>
    225227      <Unit23>
     
    228230        <TopLine Value="85"/>
    229231        <CursorPos X="10" Y="102"/>
    230         <UsageCount Value="5"/>
     232        <UsageCount Value="4"/>
    231233      </Unit23>
    232234      <Unit24>
     
    235237        <TopLine Value="157"/>
    236238        <CursorPos X="3" Y="159"/>
    237         <UsageCount Value="5"/>
     239        <UsageCount Value="4"/>
    238240      </Unit24>
    239241      <Unit25>
     
    242244        <TopLine Value="4360"/>
    243245        <CursorPos X="19" Y="4365"/>
    244         <UsageCount Value="11"/>
     246        <UsageCount Value="10"/>
    245247      </Unit25>
    246248      <Unit26>
     
    249251        <TopLine Value="4226"/>
    250252        <CursorPos X="1" Y="4254"/>
    251         <UsageCount Value="3"/>
     253        <UsageCount Value="2"/>
    252254      </Unit26>
    253255      <Unit27>
     
    259261        <TopLine Value="15"/>
    260262        <CursorPos X="39" Y="45"/>
    261         <UsageCount Value="70"/>
     263        <UsageCount Value="69"/>
    262264      </Unit27>
    263265      <Unit28>
     
    266268        <TopLine Value="858"/>
    267269        <CursorPos X="1" Y="875"/>
    268         <UsageCount Value="4"/>
     270        <UsageCount Value="3"/>
    269271      </Unit28>
    270272      <Unit29>
     
    273275        <TopLine Value="2102"/>
    274276        <CursorPos X="1" Y="2119"/>
    275         <UsageCount Value="4"/>
     277        <UsageCount Value="3"/>
    276278      </Unit29>
    277279      <Unit30>
     
    280282        <TopLine Value="58"/>
    281283        <CursorPos X="14" Y="75"/>
    282         <UsageCount Value="13"/>
     284        <UsageCount Value="12"/>
    283285      </Unit30>
    284286      <Unit31>
     
    287289        <TopLine Value="1"/>
    288290        <CursorPos X="34" Y="12"/>
    289         <UsageCount Value="9"/>
     291        <UsageCount Value="8"/>
    290292      </Unit31>
    291293      <Unit32>
     
    295297        <TopLine Value="3131"/>
    296298        <CursorPos X="42" Y="3148"/>
    297         <UsageCount Value="14"/>
     299        <UsageCount Value="13"/>
    298300      </Unit32>
    299301      <Unit33>
     
    303305        <TopLine Value="104"/>
    304306        <CursorPos X="3" Y="91"/>
    305         <UsageCount Value="5"/>
     307        <UsageCount Value="4"/>
    306308      </Unit33>
    307309      <Unit34>
     
    310312        <TopLine Value="325"/>
    311313        <CursorPos X="3" Y="327"/>
    312         <UsageCount Value="5"/>
     314        <UsageCount Value="4"/>
    313315      </Unit34>
    314316      <Unit35>
     
    318320        <TopLine Value="173"/>
    319321        <CursorPos X="5" Y="190"/>
    320         <UsageCount Value="6"/>
     322        <UsageCount Value="5"/>
    321323      </Unit35>
    322324      <Unit36>
     
    325327        <TopLine Value="1"/>
    326328        <CursorPos X="20" Y="26"/>
    327         <UsageCount Value="36"/>
     329        <UsageCount Value="35"/>
    328330      </Unit36>
    329331      <Unit37>
     
    333335        <TopLine Value="47"/>
    334336        <CursorPos X="22" Y="21"/>
    335         <UsageCount Value="25"/>
     337        <UsageCount Value="24"/>
    336338      </Unit37>
    337339      <Unit38>
     
    341343        <TopLine Value="91"/>
    342344        <CursorPos X="19" Y="107"/>
    343         <UsageCount Value="7"/>
     345        <UsageCount Value="6"/>
    344346      </Unit38>
    345347      <Unit39>
     
    348350        <TopLine Value="1"/>
    349351        <CursorPos X="1" Y="1"/>
    350         <UsageCount Value="6"/>
     352        <UsageCount Value="5"/>
    351353      </Unit39>
    352354      <Unit40>
     
    355357        <TopLine Value="158"/>
    356358        <CursorPos X="23" Y="175"/>
    357         <UsageCount Value="5"/>
     359        <UsageCount Value="4"/>
    358360      </Unit40>
    359361      <Unit41>
     
    363365        <TopLine Value="1"/>
    364366        <CursorPos X="9" Y="69"/>
    365         <UsageCount Value="5"/>
     367        <UsageCount Value="4"/>
    366368      </Unit41>
    367369      <Unit42>
     
    371373        <TopLine Value="1"/>
    372374        <CursorPos X="1" Y="1"/>
    373         <UsageCount Value="5"/>
     375        <UsageCount Value="4"/>
    374376      </Unit42>
    375377      <Unit43>
     
    379381        <TopLine Value="1"/>
    380382        <CursorPos X="14" Y="20"/>
    381         <UsageCount Value="5"/>
     383        <UsageCount Value="4"/>
    382384      </Unit43>
    383385      <Unit44>
     
    385387        <IsPartOfProject Value="True"/>
    386388        <UnitName Value="UPlatform"/>
    387         <UsageCount Value="76"/>
     389        <UsageCount Value="82"/>
    388390      </Unit44>
    389391      <Unit45>
     
    393395        <TopLine Value="929"/>
    394396        <CursorPos X="5" Y="932"/>
    395         <UsageCount Value="10"/>
     397        <UsageCount Value="9"/>
    396398      </Unit45>
    397399      <Unit46>
     
    401403        <TopLine Value="1"/>
    402404        <CursorPos X="50" Y="5"/>
    403         <UsageCount Value="9"/>
     405        <UsageCount Value="8"/>
    404406      </Unit46>
    405407      <Unit47>
     
    409411        <TopLine Value="1"/>
    410412        <CursorPos X="36" Y="15"/>
    411         <UsageCount Value="5"/>
     413        <UsageCount Value="4"/>
    412414      </Unit47>
    413415      <Unit48>
     
    416418        <TopLine Value="330"/>
    417419        <CursorPos X="35" Y="338"/>
    418         <UsageCount Value="14"/>
     420        <UsageCount Value="13"/>
    419421      </Unit48>
    420422      <Unit49>
     
    424426        <TopLine Value="58"/>
    425427        <CursorPos X="5" Y="75"/>
    426         <UsageCount Value="6"/>
     428        <UsageCount Value="5"/>
    427429      </Unit49>
    428430      <Unit50>
     
    433435        <TopLine Value="120"/>
    434436        <CursorPos X="44" Y="150"/>
    435         <UsageCount Value="61"/>
     437        <UsageCount Value="67"/>
    436438      </Unit50>
    437439      <Unit51>
     
    440442        <TopLine Value="147"/>
    441443        <CursorPos X="10" Y="84"/>
    442         <UsageCount Value="9"/>
     444        <UsageCount Value="8"/>
    443445      </Unit51>
    444446      <Unit52>
     
    448450        <TopLine Value="520"/>
    449451        <CursorPos X="35" Y="531"/>
    450         <UsageCount Value="8"/>
     452        <UsageCount Value="7"/>
    451453      </Unit52>
    452454      <Unit53>
     
    457459        <TopLine Value="69"/>
    458460        <CursorPos X="3" Y="90"/>
    459         <UsageCount Value="54"/>
     461        <UsageCount Value="60"/>
    460462      </Unit53>
    461463      <Unit54>
     
    466468        <TopLine Value="29"/>
    467469        <CursorPos X="20" Y="56"/>
    468         <UsageCount Value="54"/>
     470        <UsageCount Value="60"/>
    469471      </Unit54>
    470472      <Unit55>
     
    472474        <IsPartOfProject Value="True"/>
    473475        <UnitName Value="URegistry"/>
    474         <UsageCount Value="53"/>
     476        <UsageCount Value="59"/>
    475477      </Unit55>
    476478      <Unit56>
     
    479481        <TopLine Value="71"/>
    480482        <CursorPos X="10" Y="84"/>
    481         <UsageCount Value="7"/>
     483        <UsageCount Value="6"/>
    482484      </Unit56>
    483485      <Unit57>
     
    486488        <TopLine Value="167"/>
    487489        <CursorPos X="3" Y="169"/>
    488         <UsageCount Value="7"/>
     490        <UsageCount Value="6"/>
    489491      </Unit57>
    490492      <Unit58>
     
    493495        <TopLine Value="466"/>
    494496        <CursorPos X="17" Y="470"/>
    495         <UsageCount Value="7"/>
     497        <UsageCount Value="6"/>
    496498      </Unit58>
    497499      <Unit59>
     
    502504        <TopLine Value="34"/>
    503505        <CursorPos X="35" Y="51"/>
    504         <UsageCount Value="45"/>
     506        <UsageCount Value="51"/>
    505507      </Unit59>
    506508      <Unit60>
     
    510512        <TopLine Value="55"/>
    511513        <CursorPos X="3" Y="72"/>
    512         <UsageCount Value="21"/>
     514        <UsageCount Value="20"/>
    513515      </Unit60>
    514516      <Unit61>
     
    518520        <ResourceBaseClass Value="Form"/>
    519521        <UnitName Value="UNewGameForm"/>
    520         <EditorIndex Value="1"/>
     522        <EditorIndex Value="5"/>
    521523        <WindowIndex Value="0"/>
    522524        <TopLine Value="44"/>
    523525        <CursorPos X="23" Y="65"/>
    524         <UsageCount Value="45"/>
     526        <UsageCount Value="51"/>
    525527        <Loaded Value="True"/>
    526528        <LoadedDesigner Value="True"/>
     
    533535        <ResourceBaseClass Value="Form"/>
    534536        <UnitName Value="UMainForm"/>
    535         <WindowIndex Value="0"/>
    536         <TopLine Value="184"/>
    537         <CursorPos X="76" Y="195"/>
    538         <UsageCount Value="45"/>
     537        <EditorIndex Value="4"/>
     538        <WindowIndex Value="0"/>
     539        <TopLine Value="35"/>
     540        <CursorPos X="15" Y="49"/>
     541        <UsageCount Value="51"/>
    539542        <Loaded Value="True"/>
    540         <LoadedDesigner Value="True"/>
    541543      </Unit62>
    542544      <Unit63>
     
    550552        <TopLine Value="14"/>
    551553        <CursorPos X="19" Y="32"/>
    552         <UsageCount Value="45"/>
     554        <UsageCount Value="51"/>
    553555      </Unit63>
    554556      <Unit64>
     
    558560        <TopLine Value="3"/>
    559561        <CursorPos X="14" Y="20"/>
    560         <UsageCount Value="21"/>
     562        <UsageCount Value="20"/>
    561563      </Unit64>
    562564      <Unit65>
     
    566568        <TopLine Value="31"/>
    567569        <CursorPos X="39" Y="33"/>
    568         <UsageCount Value="21"/>
     570        <UsageCount Value="20"/>
    569571      </Unit65>
    570572      <Unit66>
     
    574576        <TopLine Value="1206"/>
    575577        <CursorPos X="3" Y="1223"/>
    576         <UsageCount Value="8"/>
     578        <UsageCount Value="7"/>
    577579      </Unit66>
    578580      <Unit67>
     
    581583        <TopLine Value="1508"/>
    582584        <CursorPos X="17" Y="1512"/>
    583         <UsageCount Value="11"/>
     585        <UsageCount Value="10"/>
    584586      </Unit67>
    585587      <Unit68>
     
    588590        <TopLine Value="1"/>
    589591        <CursorPos X="33" Y="15"/>
    590         <UsageCount Value="11"/>
     592        <UsageCount Value="10"/>
    591593      </Unit68>
    592594      <Unit69>
     
    595597        <TopLine Value="50"/>
    596598        <CursorPos X="5" Y="67"/>
    597         <UsageCount Value="11"/>
     599        <UsageCount Value="10"/>
    598600      </Unit69>
    599601      <Unit70>
     
    602604        <TopLine Value="164"/>
    603605        <CursorPos X="27" Y="167"/>
    604         <UsageCount Value="11"/>
     606        <UsageCount Value="10"/>
    605607      </Unit70>
     608      <Unit71>
     609        <Filename Value="/usr/lib64/lazarus/lcl/graphics.pp"/>
     610        <UnitName Value="Graphics"/>
     611        <EditorIndex Value="2"/>
     612        <WindowIndex Value="0"/>
     613        <TopLine Value="230"/>
     614        <CursorPos X="18" Y="244"/>
     615        <UsageCount Value="13"/>
     616        <Loaded Value="True"/>
     617      </Unit71>
     618      <Unit72>
     619        <Filename Value="/usr/lib64/lazarus/lcl/graphtype.pp"/>
     620        <UnitName Value="GraphType"/>
     621        <EditorIndex Value="3"/>
     622        <WindowIndex Value="0"/>
     623        <TopLine Value="25"/>
     624        <CursorPos X="3" Y="39"/>
     625        <UsageCount Value="13"/>
     626        <Loaded Value="True"/>
     627      </Unit72>
    606628    </Units>
    607     <JumpHistory Count="30" HistoryIndex="28">
     629    <JumpHistory Count="30" HistoryIndex="29">
    608630      <Position1>
    609631        <Filename Value="UCore.pas"/>
    610         <Caret Line="1268" Column="1" TopLine="1240"/>
     632        <Caret Line="1142" Column="79" TopLine="1128"/>
    611633      </Position1>
    612634      <Position2>
    613635        <Filename Value="UCore.pas"/>
    614         <Caret Line="803" Column="1" TopLine="786"/>
     636        <Caret Line="218" Column="39" TopLine="204"/>
    615637      </Position2>
    616638      <Position3>
    617639        <Filename Value="UCore.pas"/>
    618         <Caret Line="805" Column="1" TopLine="786"/>
     640        <Caret Line="209" Column="52" TopLine="209"/>
    619641      </Position3>
    620642      <Position4>
    621643        <Filename Value="UCore.pas"/>
    622         <Caret Line="806" Column="1" TopLine="786"/>
     644        <Caret Line="1134" Column="21" TopLine="1128"/>
    623645      </Position4>
    624646      <Position5>
    625647        <Filename Value="UCore.pas"/>
    626         <Caret Line="807" Column="1" TopLine="786"/>
     648        <Caret Line="1143" Column="36" TopLine="57"/>
    627649      </Position5>
    628650      <Position6>
    629651        <Filename Value="UCore.pas"/>
    630         <Caret Line="808" Column="1" TopLine="786"/>
     652        <Caret Line="1363" Column="31" TopLine="1352"/>
    631653      </Position6>
    632654      <Position7>
    633655        <Filename Value="UCore.pas"/>
    634         <Caret Line="809" Column="1" TopLine="786"/>
     656        <Caret Line="1411" Column="14" TopLine="1399"/>
    635657      </Position7>
    636658      <Position8>
    637659        <Filename Value="UCore.pas"/>
    638         <Caret Line="810" Column="1" TopLine="786"/>
     660        <Caret Line="1260" Column="5" TopLine="1238"/>
    639661      </Position8>
    640662      <Position9>
    641663        <Filename Value="UCore.pas"/>
    642         <Caret Line="811" Column="1" TopLine="786"/>
     664        <Caret Line="190" Column="13" TopLine="164"/>
    643665      </Position9>
    644666      <Position10>
    645667        <Filename Value="UCore.pas"/>
    646         <Caret Line="789" Column="1" TopLine="783"/>
     668        <Caret Line="1274" Column="24" TopLine="1267"/>
    647669      </Position10>
    648670      <Position11>
    649671        <Filename Value="UCore.pas"/>
    650         <Caret Line="790" Column="1" TopLine="783"/>
     672        <Caret Line="1298" Column="42" TopLine="1270"/>
    651673      </Position11>
    652674      <Position12>
    653675        <Filename Value="UCore.pas"/>
    654         <Caret Line="792" Column="1" TopLine="783"/>
     676        <Caret Line="1273" Column="11" TopLine="1259"/>
    655677      </Position12>
    656678      <Position13>
    657679        <Filename Value="UCore.pas"/>
    658         <Caret Line="791" Column="1" TopLine="783"/>
     680        <Caret Line="676" Column="18" TopLine="658"/>
    659681      </Position13>
    660682      <Position14>
    661683        <Filename Value="UCore.pas"/>
    662         <Caret Line="794" Column="1" TopLine="783"/>
     684        <Caret Line="675" Column="12" TopLine="658"/>
    663685      </Position14>
    664686      <Position15>
    665687        <Filename Value="UCore.pas"/>
    666         <Caret Line="812" Column="1" TopLine="784"/>
     688        <Caret Line="682" Column="41" TopLine="669"/>
    667689      </Position15>
    668690      <Position16>
    669691        <Filename Value="UCore.pas"/>
    670         <Caret Line="1267" Column="1" TopLine="1240"/>
     692        <Caret Line="681" Column="28" TopLine="667"/>
    671693      </Position16>
    672694      <Position17>
    673695        <Filename Value="UCore.pas"/>
    674         <Caret Line="1268" Column="1" TopLine="1240"/>
     696        <Caret Line="675" Column="11" TopLine="667"/>
    675697      </Position17>
    676698      <Position18>
    677699        <Filename Value="UCore.pas"/>
    678         <Caret Line="1269" Column="1" TopLine="1240"/>
     700        <Caret Line="682" Column="21" TopLine="681"/>
    679701      </Position18>
    680702      <Position19>
    681703        <Filename Value="UCore.pas"/>
    682         <Caret Line="1262" Column="1" TopLine="1240"/>
     704        <Caret Line="1268" Column="23" TopLine="1244"/>
    683705      </Position19>
    684706      <Position20>
    685707        <Filename Value="UCore.pas"/>
    686         <Caret Line="1264" Column="1" TopLine="1240"/>
     708        <Caret Line="682" Column="21" TopLine="668"/>
    687709      </Position20>
    688710      <Position21>
    689711        <Filename Value="UCore.pas"/>
    690         <Caret Line="1261" Column="42" TopLine="1241"/>
     712        <Caret Line="678" Column="11" TopLine="674"/>
    691713      </Position21>
    692714      <Position22>
    693715        <Filename Value="UCore.pas"/>
    694         <Caret Line="698" Column="30" TopLine="682"/>
     716        <Caret Line="926" Column="42" TopLine="921"/>
    695717      </Position22>
    696718      <Position23>
    697719        <Filename Value="UCore.pas"/>
    698         <Caret Line="1172" Column="49" TopLine="1159"/>
     720        <Caret Line="88" Column="17" TopLine="73"/>
    699721      </Position23>
    700722      <Position24>
    701723        <Filename Value="UCore.pas"/>
    702         <Caret Line="1326" Column="29" TopLine="1318"/>
     724        <Caret Line="939" Column="53" TopLine="936"/>
    703725      </Position24>
    704726      <Position25>
    705727        <Filename Value="UCore.pas"/>
    706         <Caret Line="69" Column="43" TopLine="51"/>
     728        <Caret Line="687" Column="46" TopLine="674"/>
    707729      </Position25>
    708730      <Position26>
    709731        <Filename Value="UCore.pas"/>
    710         <Caret Line="676" Column="14" TopLine="660"/>
     732        <Caret Line="88" Column="17" TopLine="81"/>
    711733      </Position26>
    712734      <Position27>
    713735        <Filename Value="UCore.pas"/>
    714         <Caret Line="679" Column="52" TopLine="664"/>
     736        <Caret Line="683" Column="102" TopLine="670"/>
    715737      </Position27>
    716738      <Position28>
    717739        <Filename Value="UCore.pas"/>
    718         <Caret Line="21" Column="31" TopLine="1"/>
     740        <Caret Line="684" Column="37" TopLine="670"/>
    719741      </Position28>
    720742      <Position29>
    721743        <Filename Value="UCore.pas"/>
    722         <Caret Line="679" Column="35" TopLine="663"/>
     744        <Caret Line="868" Column="10" TopLine="866"/>
    723745      </Position29>
    724746      <Position30>
    725747        <Filename Value="UCore.pas"/>
    726         <Caret Line="21" Column="19" TopLine="86"/>
     748        <Caret Line="869" Column="9" TopLine="854"/>
    727749      </Position30>
    728750    </JumpHistory>
Note: See TracChangeset for help on using the changeset viewer.