Subversion Repositories Kolibri OS

Rev

Rev 762 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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