Changeset 6


Ignore:
Timestamp:
Mar 6, 2011, 7:31:53 PM (14 years ago)
Author:
george
Message:
  • Added: Fullscreen mode.
Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/UCore.pas

    r4 r6  
    282282  end;
    283283
    284 
    285284  if Engine.KeyState[Ord(Keys.Shoot)] then
    286285    if Bullets.Count < MaxBulletCount then begin
    287286      NewBullet := TBullet.Create;
    288287      NewBullet.Player := Self;
    289       NewBullet.Position := Position;
     288      NewBullet.Position := Point(Position.X + DirectionToDelta[Direction].X * 4,
     289        Position.Y + DirectionToDelta[Direction].Y * 4);
    290290      NewBullet.Direction := Direction;
    291291      Bullets.Add(NewBullet);
     
    299299    Position.Y := Position.Y + DirectionToDelta[Direction].Y;
    300300
     301    if Engine.World.Surface.ItemsXY[Position.Y, Position.X] <> Byte(smNothing) then begin
     302      if (Engine.World.Surface.ItemsXY[Position.Y, Position.X] = Byte(smDirt1)) or
     303        (Engine.World.Surface.ItemsXY[Position.Y, Position.X] = Byte(smDirt2)) then
     304          Engine.World.Surface.ItemsXY[Position.Y, Position.X] := Byte(smNothing);
     305      Bullets.Delete(I);
     306    end else
    301307    with Engine.World.Surface do
    302308    if (Position.X >= Count.X) or (Position.X < 0) or
     
    304310      Bullets.Delete(I) else
    305311      Engine.World.Surface.ItemsXY[Position.Y, Position.X] := Byte(smBullet);
     312    Engine.Redraw;
    306313  end;
    307314end;
     
    313320begin
    314321  with Engine.FBitmapLower.Canvas do begin
    315     Rectangle(ScreenFrame);
    316322    Brush.Color := SurfaceMatterColors[smRock];
    317323    FillRect(ScreenFrame);
    318 
    319324
    320325    with Engine.World do
     
    326331          Pixels[X, Y] := SurfaceMatterColors[TSurfaceMatter(Surface.ItemsXY[YY, XX])];
    327332      end;
     333    Pen.Color := clBlack;
     334    Frame(ScreenFrame);
    328335
    329336    (*CopyRect(ScreenFrame, Engine.World.Surface.Canvas,
     
    333340      Position.X + (ScreenFrame.Right - ScreenFrame.Left) div 2,
    334341      Position.Y + (ScreenFrame.Bottom - ScreenFrame.Top) div 2));*)
    335     TextOut(ScreenFrame.Left, ScreenFrame.Top, Name);
     342    //TextOut(ScreenFrame.Left, ScreenFrame.Top, Name);
    336343    //ShowMessage(IntToStr(ScreenFrame.Right - ScreenFrame.Left) + ' ' +
    337344    //IntToStr(ScreenFrame.Bottom - ScreenFrame.Top));
     
    361368var
    362369  X, Y: Integer;
     370  XX, YY: Integer;
    363371begin
    364372  Result := smNothing;
    365373  with Engine.World, TTank(Tanks[NewDirection]) do
    366374  for Y := 0 to Image.Count.Y - 1 do
    367   for X := 0 to Image.Count.X - 1 do
     375  for X := 0 to Image.Count.X - 1 do begin
     376    XX := X + NewPosition.X - Image.Count.X div 2;
     377    YY := Y + NewPosition.Y - Image.Count.Y div 2;
    368378    if (Image.ItemsXY[Y, X] > 0) and
    369     (Surface.ItemsXY[Y + NewPosition.Y, X + NewPosition.X] <> Byte(smNothing)) then
     379    (Surface.ItemsXY[YY, XX] <> Byte(smNothing)) then
    370380    begin
    371381      Result := smDirt1;
    372       if (Surface.ItemsXY[Y + NewPosition.Y, X + NewPosition.X] <> Byte(smDirt1)) and
    373       (Surface.ItemsXY[Y + NewPosition.Y, X + NewPosition.X] <> Byte(smDirt2)) then
     382      if (Surface.ItemsXY[YY, XX] <> Byte(smDirt1)) and
     383      (Surface.ItemsXY[YY, XX] <> Byte(smDirt2)) then
    374384      begin
    375         Result := TSurfaceMatter(Surface.ItemsXY[Y + NewPosition.Y, X + NewPosition.X]);
     385        Result := TSurfaceMatter(Surface.ItemsXY[YY, XX]);
    376386        Exit;
    377387      end;
    378388    end;
     389  end;
    379390end;
    380391
     
    387398begin
    388399  with Engine.World do begin
    389     Surface.Merge(Surface.CreateIndex(Position.X, Position.Y), TTank(Tanks[Direction]).Image, ShowTankProc);
     400    Surface.Merge(Surface.CreateIndex(Position.X - TTank(Tanks[Direction]).Image.Count.X div 2,
     401      Position.Y - TTank(Tanks[Direction]).Image.Count.Y div 2), TTank(Tanks[Direction]).Image, ShowTankProc);
    390402  end;
    391403end;
     
    399411begin
    400412  with Engine.World do begin
    401     Surface.Merge(Surface.CreateIndex(Position.X, Position.Y), TTank(Tanks[Direction]).Image, HideTankProc);
     413    Surface.Merge(Surface.CreateIndex(Position.X - TTank(Tanks[Direction]).Image.Count.X div 2,
     414      Position.Y - TTank(Tanks[Direction]).Image.Count.Y div 2), TTank(Tanks[Direction]).Image, HideTankProc);
    402415  end;
    403416end;
  • trunk/UMainForm.lfm

    r4 r6  
    4747      Caption = 'Game'
    4848      object MenuItem3: TMenuItem
    49         Caption = 'New...'
    50         OnClick = MenuItem3Click
    51       end
    52       object MenuItemShowMap: TMenuItem
    53         Caption = 'Show map'
    54         OnClick = MenuItemShowMapClick
     49        Action = ANewGame
    5550      end
    5651      object MenuItem2: TMenuItem
    57         Caption = 'Exit'
    58         OnClick = MenuItem2Click
     52        Action = AExit
     53      end
     54    end
     55    object MenuItem4: TMenuItem
     56      Caption = 'View'
     57      object MenuItem5: TMenuItem
     58        Action = AShowMap
     59      end
     60      object MenuItem6: TMenuItem
     61        Action = AFullScreen
    5962      end
    6063    end
     
    6669    top = 104
    6770  end
     71  object ActionList1: TActionList
     72    left = 272
     73    top = 24
     74    object AFullScreen: TAction
     75      Caption = 'Fullscreen mode'
     76      OnExecute = AFullScreenExecute
     77      ShortCut = 122
     78    end
     79    object AExit: TAction
     80      Caption = 'Exit'
     81      OnExecute = AExitExecute
     82    end
     83    object ANewGame: TAction
     84      Caption = 'New game'
     85      OnExecute = ANewGameExecute
     86      ShortCut = 16462
     87    end
     88    object AShowMap: TAction
     89      Caption = 'Show map'
     90      OnExecute = AShowMapExecute
     91      ShortCut = 123
     92    end
     93  end
    6894end
  • trunk/UMainForm.pas

    r4 r6  
    77uses
    88  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
    9   ComCtrls, Menus, UCore;
     9  ComCtrls, Menus, ActnList, UCore;
    1010
    1111type
     
    1414
    1515  TMainForm = class(TForm)
     16    AShowMap: TAction;
     17    ANewGame: TAction;
     18    AExit: TAction;
     19    AFullScreen: TAction;
     20    ActionList1: TActionList;
    1621    Image1: TImage;
    1722    MainMenu1: TMainMenu;
     
    1924    MenuItem2: TMenuItem;
    2025    MenuItem3: TMenuItem;
    21     MenuItemShowMap: TMenuItem;
     26    MenuItem4: TMenuItem;
     27    MenuItem5: TMenuItem;
     28    MenuItem6: TMenuItem;
    2229    StatusBar1: TStatusBar;
    2330    TimerDraw: TTimer;
    2431    TimerEngineTick: TTimer;
     32    procedure AExitExecute(Sender: TObject);
     33    procedure AFullScreenExecute(Sender: TObject);
     34    procedure ANewGameExecute(Sender: TObject);
     35    procedure AShowMapExecute(Sender: TObject);
    2536    procedure FormCreate(Sender: TObject);
    2637    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
     
    2839    procedure FormShow(Sender: TObject);
    2940    procedure Image1Resize(Sender: TObject);
    30     procedure MenuItem2Click(Sender: TObject);
    31     procedure MenuItem3Click(Sender: TObject);
    32     procedure MenuItemShowMapClick(Sender: TObject);
    3341    procedure TimerDrawTimer(Sender: TObject);
    3442    procedure TimerEngineTickTimer(Sender: TObject);
    3543  private
     44    OriginalBounds: TRect;
     45    OriginalWindowState: TWindowState;
     46    ScreenBounds: TRect;
    3647  public
    3748    { public declarations }
     
    106117end;
    107118
     119procedure TMainForm.AFullScreenExecute(Sender: TObject);
     120begin
     121  if BorderStyle <> bsNone then begin
     122    // To full screen
     123    OriginalWindowState := WindowState;
     124    OriginalBounds := BoundsRect;
     125
     126    BorderStyle := bsNone;
     127    ScreenBounds := Screen.MonitorFromWindow(Handle).BoundsRect;
     128    with ScreenBounds do
     129      SetBounds(Left, Top, Right - Left, Bottom - Top) ;
     130  end else begin
     131    // From full screen
     132    {$IFDEF MSWINDOWS}
     133    BorderStyle := bsSizeable;
     134    {$ENDIF}
     135    if OriginalWindowState = wsMaximized then
     136      WindowState := wsMaximized
     137    else
     138      with OriginalBounds do
     139        SetBounds(Left, Top, Right - Left, Bottom - Top) ;
     140    {$IFDEF LINUX}
     141    BorderStyle := bsSizeable;
     142    {$ENDIF}
     143  end;
     144end;
     145
     146procedure TMainForm.ANewGameExecute(Sender: TObject);
     147begin
     148  Engine.NewGame;
     149end;
     150
     151procedure TMainForm.AShowMapExecute(Sender: TObject);
     152begin
     153  MapForm.Show;
     154end;
     155
     156procedure TMainForm.AExitExecute(Sender: TObject);
     157begin
     158  Close;
     159end;
     160
    108161procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word;
    109162  Shift: TShiftState);
     
    129182end;
    130183
    131 procedure TMainForm.MenuItem2Click(Sender: TObject);
    132 begin
    133   Close;
    134 end;
    135 
    136 procedure TMainForm.MenuItem3Click(Sender: TObject);
    137 begin
    138   Engine.NewGame;
    139 end;
    140 
    141 procedure TMainForm.MenuItemShowMapClick(Sender: TObject);
    142 begin
    143   MapForm.Show;
    144 end;
    145 
    146184end.
    147185
  • trunk/tunneler.lpi

    r4 r6  
    4242      </Item3>
    4343    </RequiredPackages>
    44     <Units Count="31">
     44    <Units Count="32">
    4545      <Unit0>
    4646        <Filename Value="tunneler.lpr"/>
     
    5050        <TopLine Value="1"/>
    5151        <CursorPos X="14" Y="8"/>
    52         <UsageCount Value="49"/>
     52        <UsageCount Value="51"/>
    5353      </Unit0>
    5454      <Unit1>
     
    5858        <ResourceBaseClass Value="Form"/>
    5959        <UnitName Value="UMainForm"/>
    60         <EditorIndex Value="1"/>
    61         <WindowIndex Value="0"/>
    62         <TopLine Value="12"/>
    63         <CursorPos X="20" Y="27"/>
    64         <UsageCount Value="49"/>
     60        <EditorIndex Value="3"/>
     61        <WindowIndex Value="0"/>
     62        <TopLine Value="24"/>
     63        <CursorPos X="32" Y="32"/>
     64        <UsageCount Value="51"/>
    6565        <Loaded Value="True"/>
    6666        <LoadedDesigner Value="True"/>
     
    7373        <EditorIndex Value="0"/>
    7474        <WindowIndex Value="0"/>
    75         <TopLine Value="161"/>
    76         <CursorPos X="38" Y="177"/>
    77         <UsageCount Value="49"/>
     75        <TopLine Value="316"/>
     76        <CursorPos X="7" Y="342"/>
     77        <UsageCount Value="51"/>
    7878        <Loaded Value="True"/>
    7979      </Unit2>
     
    104104      <Unit6>
    105105        <Filename Value="/usr/share/fpcsrc/2.4.0/rtl/objpas/classes/classesh.inc"/>
    106         <WindowIndex Value="0"/>
    107         <TopLine Value="252"/>
    108         <CursorPos X="20" Y="271"/>
    109         <UsageCount Value="9"/>
     106        <EditorIndex Value="1"/>
     107        <WindowIndex Value="0"/>
     108        <TopLine Value="1769"/>
     109        <CursorPos X="10" Y="1786"/>
     110        <UsageCount Value="10"/>
     111        <Loaded Value="True"/>
    110112      </Unit6>
    111113      <Unit7>
     
    113115        <UnitName Value="Graphics"/>
    114116        <WindowIndex Value="0"/>
    115         <TopLine Value="1281"/>
    116         <CursorPos X="15" Y="1298"/>
     117        <TopLine Value="1089"/>
     118        <CursorPos X="15" Y="1136"/>
    117119        <UsageCount Value="12"/>
    118120      </Unit7>
     
    141143      <Unit11>
    142144        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericMatrix.inc"/>
    143         <EditorIndex Value="3"/>
     145        <EditorIndex Value="4"/>
    144146        <WindowIndex Value="0"/>
    145147        <TopLine Value="149"/>
    146         <CursorPos X="59" Y="172"/>
     148        <CursorPos X="1" Y="171"/>
    147149        <UsageCount Value="20"/>
    148150        <Loaded Value="True"/>
     
    151153        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Specialized/SpecializedMatrix.pas"/>
    152154        <UnitName Value="SpecializedMatrix"/>
    153         <EditorIndex Value="4"/>
     155        <EditorIndex Value="5"/>
    154156        <WindowIndex Value="0"/>
    155157        <TopLine Value="69"/>
    156158        <CursorPos X="40" Y="98"/>
    157         <UsageCount Value="17"/>
     159        <UsageCount Value="18"/>
    158160        <Loaded Value="True"/>
    159161      </Unit12>
     
    175177      <Unit15>
    176178        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericList.inc"/>
    177         <EditorIndex Value="5"/>
     179        <EditorIndex Value="6"/>
    178180        <WindowIndex Value="0"/>
    179181        <TopLine Value="107"/>
    180182        <CursorPos X="1" Y="126"/>
    181         <UsageCount Value="18"/>
     183        <UsageCount Value="19"/>
    182184        <Loaded Value="True"/>
    183185      </Unit15>
     
    187189        <TopLine Value="783"/>
    188190        <CursorPos X="3" Y="785"/>
    189         <UsageCount Value="9"/>
     191        <UsageCount Value="8"/>
    190192      </Unit16>
    191193      <Unit17>
     
    194196        <TopLine Value="830"/>
    195197        <CursorPos X="11" Y="847"/>
    196         <UsageCount Value="9"/>
     198        <UsageCount Value="8"/>
    197199      </Unit17>
    198200      <Unit18>
     
    202204        <TopLine Value="665"/>
    203205        <CursorPos X="27" Y="682"/>
    204         <UsageCount Value="11"/>
     206        <UsageCount Value="10"/>
    205207      </Unit18>
    206208      <Unit19>
     
    209211        <TopLine Value="112"/>
    210212        <CursorPos X="10" Y="114"/>
    211         <UsageCount Value="11"/>
     213        <UsageCount Value="10"/>
    212214      </Unit19>
    213215      <Unit20>
     
    267269        <ResourceBaseClass Value="Form"/>
    268270        <UnitName Value="UMapForm"/>
    269         <EditorIndex Value="2"/>
    270271        <WindowIndex Value="0"/>
    271272        <TopLine Value="15"/>
    272273        <CursorPos X="24" Y="39"/>
    273         <UsageCount Value="28"/>
    274         <Loaded Value="True"/>
     274        <UsageCount Value="30"/>
    275275      </Unit27>
    276276      <Unit28>
     
    295295        <UsageCount Value="9"/>
    296296      </Unit30>
     297      <Unit31>
     298        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericListObject.inc"/>
     299        <EditorIndex Value="2"/>
     300        <WindowIndex Value="0"/>
     301        <TopLine Value="60"/>
     302        <CursorPos X="1" Y="77"/>
     303        <UsageCount Value="10"/>
     304        <Loaded Value="True"/>
     305      </Unit31>
    297306    </Units>
    298307    <JumpHistory Count="30" HistoryIndex="28">
    299308      <Position1>
    300309        <Filename Value="UCore.pas"/>
    301         <Caret Line="245" Column="56" TopLine="214"/>
     310        <Caret Line="308" Column="1" TopLine="282"/>
    302311      </Position1>
    303312      <Position2>
    304313        <Filename Value="UCore.pas"/>
    305         <Caret Line="202" Column="14" TopLine="192"/>
     314        <Caret Line="310" Column="1" TopLine="282"/>
    306315      </Position2>
    307316      <Position3>
    308         <Filename Value="UMainForm.pas"/>
    309         <Caret Line="65" Column="3" TopLine="47"/>
     317        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericMatrix.inc"/>
     318        <Caret Line="171" Column="1" TopLine="149"/>
    310319      </Position3>
    311320      <Position4>
    312321        <Filename Value="UCore.pas"/>
    313         <Caret Line="234" Column="7" TopLine="207"/>
     322        <Caret Line="303" Column="21" TopLine="282"/>
    314323      </Position4>
    315324      <Position5>
    316         <Filename Value="UMainForm.pas"/>
    317         <Caret Line="65" Column="3" TopLine="47"/>
     325        <Filename Value="UCore.pas"/>
     326        <Caret Line="296" Column="7" TopLine="282"/>
    318327      </Position5>
    319328      <Position6>
    320         <Filename Value="UMainForm.pas"/>
    321         <Caret Line="72" Column="3" TopLine="49"/>
     329        <Filename Value="UCore.pas"/>
     330        <Caret Line="289" Column="1" TopLine="282"/>
    322331      </Position6>
    323332      <Position7>
    324         <Filename Value="UMainForm.pas"/>
    325         <Caret Line="67" Column="15" TopLine="65"/>
     333        <Filename Value="UCore.pas"/>
     334        <Caret Line="290" Column="1" TopLine="282"/>
    326335      </Position7>
    327336      <Position8>
    328         <Filename Value="UMainForm.pas"/>
    329         <Caret Line="56" Column="9" TopLine="52"/>
     337        <Filename Value="UCore.pas"/>
     338        <Caret Line="293" Column="1" TopLine="282"/>
    330339      </Position8>
    331340      <Position9>
    332341        <Filename Value="UCore.pas"/>
    333         <Caret Line="124" Column="15" TopLine="107"/>
     342        <Caret Line="294" Column="1" TopLine="282"/>
    334343      </Position9>
    335344      <Position10>
    336345        <Filename Value="UCore.pas"/>
    337         <Caret Line="109" Column="20" TopLine="85"/>
     346        <Caret Line="295" Column="1" TopLine="282"/>
    338347      </Position10>
    339348      <Position11>
    340349        <Filename Value="UCore.pas"/>
    341         <Caret Line="553" Column="29" TopLine="541"/>
     350        <Caret Line="297" Column="1" TopLine="282"/>
    342351      </Position11>
    343352      <Position12>
    344353        <Filename Value="UCore.pas"/>
    345         <Caret Line="562" Column="1" TopLine="550"/>
     354        <Caret Line="298" Column="1" TopLine="282"/>
    346355      </Position12>
    347356      <Position13>
    348357        <Filename Value="UCore.pas"/>
    349         <Caret Line="557" Column="20" TopLine="537"/>
     358        <Caret Line="300" Column="1" TopLine="282"/>
    350359      </Position13>
    351360      <Position14>
    352361        <Filename Value="UCore.pas"/>
    353         <Caret Line="554" Column="1" TopLine="537"/>
     362        <Caret Line="304" Column="1" TopLine="282"/>
    354363      </Position14>
    355364      <Position15>
    356365        <Filename Value="UCore.pas"/>
    357         <Caret Line="555" Column="1" TopLine="537"/>
     366        <Caret Line="305" Column="1" TopLine="282"/>
    358367      </Position15>
    359368      <Position16>
    360369        <Filename Value="UCore.pas"/>
    361         <Caret Line="556" Column="1" TopLine="537"/>
     370        <Caret Line="306" Column="1" TopLine="282"/>
    362371      </Position16>
    363372      <Position17>
    364373        <Filename Value="UCore.pas"/>
    365         <Caret Line="557" Column="1" TopLine="537"/>
     374        <Caret Line="308" Column="1" TopLine="282"/>
    366375      </Position17>
    367376      <Position18>
    368377        <Filename Value="UCore.pas"/>
    369         <Caret Line="494" Column="1" TopLine="488"/>
     378        <Caret Line="310" Column="1" TopLine="282"/>
    370379      </Position18>
    371380      <Position19>
    372381        <Filename Value="UCore.pas"/>
    373         <Caret Line="235" Column="1" TopLine="215"/>
     382        <Caret Line="295" Column="1" TopLine="282"/>
    374383      </Position19>
    375384      <Position20>
    376385        <Filename Value="UCore.pas"/>
    377         <Caret Line="495" Column="1" TopLine="478"/>
     386        <Caret Line="297" Column="1" TopLine="282"/>
    378387      </Position20>
    379388      <Position21>
    380389        <Filename Value="UCore.pas"/>
    381         <Caret Line="583" Column="1" TopLine="562"/>
     390        <Caret Line="298" Column="1" TopLine="282"/>
    382391      </Position21>
    383392      <Position22>
    384393        <Filename Value="UCore.pas"/>
    385         <Caret Line="558" Column="29" TopLine="541"/>
     394        <Caret Line="300" Column="1" TopLine="282"/>
    386395      </Position22>
    387396      <Position23>
    388397        <Filename Value="UCore.pas"/>
    389         <Caret Line="547" Column="27" TopLine="541"/>
     398        <Caret Line="304" Column="1" TopLine="282"/>
    390399      </Position23>
    391400      <Position24>
    392401        <Filename Value="UCore.pas"/>
    393         <Caret Line="171" Column="62" TopLine="157"/>
     402        <Caret Line="305" Column="1" TopLine="282"/>
    394403      </Position24>
    395404      <Position25>
    396         <Filename Value="UMapForm.pas"/>
    397         <Caret Line="39" Column="24" TopLine="15"/>
     405        <Filename Value="UCore.pas"/>
     406        <Caret Line="306" Column="1" TopLine="282"/>
    398407      </Position25>
    399408      <Position26>
    400409        <Filename Value="UCore.pas"/>
    401         <Caret Line="210" Column="5" TopLine="197"/>
     410        <Caret Line="274" Column="25" TopLine="252"/>
    402411      </Position26>
    403412      <Position27>
    404413        <Filename Value="UCore.pas"/>
    405         <Caret Line="202" Column="16" TopLine="193"/>
     414        <Caret Line="273" Column="10" TopLine="252"/>
    406415      </Position27>
    407416      <Position28>
    408417        <Filename Value="UCore.pas"/>
    409         <Caret Line="177" Column="29" TopLine="157"/>
     418        <Caret Line="310" Column="36" TopLine="279"/>
    410419      </Position28>
    411420      <Position29>
    412421        <Filename Value="UCore.pas"/>
    413         <Caret Line="188" Column="70" TopLine="161"/>
     422        <Caret Line="288" Column="33" TopLine="273"/>
    414423      </Position29>
    415424      <Position30>
    416         <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericMatrix.inc"/>
    417         <Caret Line="172" Column="59" TopLine="149"/>
     425        <Filename Value="/usr/share/fpcsrc/2.4.0/rtl/objpas/classes/classesh.inc"/>
     426        <Caret Line="1786" Column="10" TopLine="1769"/>
    418427      </Position30>
    419428    </JumpHistory>
Note: See TracChangeset for help on using the changeset viewer.