Subversion Repositories Kolibri OS

Rev

Rev 762 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. unit LRLIntroduction;
  2.  
  3.  
  4. interface
  5.  
  6.  
  7. uses
  8.   SysUtils,
  9.   LRLRoutines, LRLSprites;
  10.  
  11.  
  12. procedure LRLIntro;
  13.  
  14.  
  15. implementation
  16.  
  17.  
  18. const
  19.   IntroText: array[1..14] of String = (
  20.     'Lode Runner LIVE. FREEWARE Version 1.5',
  21.     'KolibriOS port by bw (Vladimir V. Byrgazov)',
  22.     'Copyright (c) 1995 Aleksey V. Vaneev',
  23.     'Copyright (c) 2008 bw',
  24.     '',
  25.     'Send comments to Aleksey V. Vaneev',
  26.     '2:5003/15@FidoNet',
  27.     'ikomi@glas.apc.org',
  28.     '',
  29.     'Send comments to bw',
  30.     'bw@handsdriver.net',
  31.     '',
  32.     '',
  33.     '');
  34.  
  35.   SPACE40 = '                                        ';
  36.  
  37.  
  38. var
  39.   TimeToRefresh: Boolean;
  40.  
  41.  
  42. procedure LRLIntro;
  43. var
  44.   i, j, l: Integer;
  45.   Count: Word;
  46.   k: Word;
  47.   MainScreen: Pointer;
  48. begin
  49.   GetMem(MainScreen, 64004);
  50.  
  51.   Seek(ImageFile, LRLImagesFilePosition + 7940);
  52.   BlockRead(ImageFile, MainScreen^, 64004, k);
  53.   Palette256Set(LRLMenuPalette^);
  54.   ImageFill(LRLFontBuffer^, 320, 55, 0);
  55.   ImageClear(LRLScreen^);
  56.  
  57.   for i := -50 to 4 do
  58.   begin
  59.     ImagePut(LRLScreen^, LRLFontBuffer^, 0, 0, 0, 0, 319, 199);
  60.     ImagePut(LRLScreen^, LRLLogo^, 3, i, 0, 0, 319, 199);
  61.     ScreenApply(LRLScreen^);
  62.     if Keypressed then
  63.     begin
  64.       ReadKey;
  65.       FreeMem(MainScreen, 64004);
  66.       Exit;
  67.     end;
  68.     Sleep(10);
  69.   end;
  70.  
  71.   ImageFill(LRLFontBuffer^, 320, 55, 0);
  72.   for i := 0 to 10 do
  73.   begin
  74.     for k := 0 to 20 do
  75.     for j := 0 to 16 do
  76.       ImagePutTransparent(LRLScreen^, MainScreen^, 0, 0,
  77.         j * 20 - 10 - i, k * 20 - 10 - i,
  78.         j * 20 - 10 + i, k * 20 - 10 + i);
  79.  
  80.     Sleep(50);
  81.  
  82.     ImagePut(LRLScreen^, LRLFontBuffer^, 0, 182, 0, 0, 319, 199);
  83.     ScreenApply(LRLScreen^);
  84.     if Keypressed then
  85.     begin
  86.       ReadKey;
  87.       FreeMem(MainScreen, 64004);
  88.       Exit;
  89.     end;
  90.   end;
  91.  
  92.   Count := 1;
  93.   k := 1;
  94.   repeat
  95.     if TimeToRefresh then
  96.     begin
  97.       Inc(Count);
  98.       TimeToRefresh := False;
  99.     end;
  100.  
  101.     if Count >= 2 then
  102.     begin
  103.       ImageStringGet(SPACE40 + IntroText[k] + SPACE40, LRLFont^, LRLFontBuffer^, 110);
  104.       for l := 200 downto 184 do
  105.       begin
  106.         ImagePut(LRLScreen^, LRLFontBuffer^, 160 - ImageSizeX(LRLFontBuffer^) div 2, l, 0, 0, 319, 199);
  107.         ScreenApply(LRLScreen^);
  108.         Sleep(20);
  109.       end;
  110.       Inc(k);
  111.       if k > Length(IntroText) then k := 1;
  112.       Count := 0;
  113.     end;
  114.  
  115.     for I := 1 to 8 do
  116.     if Keypressed then
  117.       Break else
  118.       Sleep(250);
  119.  
  120.     TimeToRefresh := True;
  121.   until KeyPressed;
  122.  
  123.   ReadKey;
  124.   FadeClear;
  125.   FreeMem(MainScreen, 64004);
  126. end;
  127.  
  128.  
  129. end.
  130.