Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
670 bw 1
unit LRLMainMenu;
2
 
3
 
4
interface
5
 
6
 
7
uses
8
  LRLRoutines, LRLSprites;
9
 
10
 
11
procedure LRLSelectItem(var Item: Word);
12
 
13
 
14
implementation
15
 
16
 
17
var
18
  MainScreen: Pointer;
19
  Selection:  array[1..4] of Pointer;
20
  SelectionDark: array[1..4] of Pointer;
21
  SelectionSize: array[1..4] of Word;
22
  SelectionDarkSize: array[1..4] of Word;
23
 
24
 
25
procedure LoadData;
26
var
27
  size, j: Word;
28
  i: Integer;
29
begin
30
  GetMem(MainScreen, 64004);
31
  Seek(ImageFile, LRLImagesFilePosition + 7940);
32
  BlockRead(ImageFile, MainScreen^, 64004, j);
33
  for i := 1 to 4 do
34
  begin
35
    BlockRead(ImageFile, SelectionSize[i], 2, j);
36
    GetMem(Selection[i], SelectionSize[i]);
37
    BlockRead(ImageFile, Selection[i]^, SelectionSize[i], j);
38
    BlockRead(ImageFile, SelectionDarkSize[i], 2, j);
39
    GetMem(SelectionDark[i], SelectionDarkSize[i]);
40
    BlockRead(ImageFile, SelectionDark[i]^, SelectionDarkSize[i], j);
41
  end;
42
end;
43
 
44
 
45
procedure DisposeData;
46
var
47
  i: Integer;
48
begin
49
  FreeMem(MainScreen, 64004);
50
  for i := 1 to 4 do
51
  begin
52
    FreeMem(Selection[i], SelectionSize[i]);
53
    FreeMem(SelectionDark[i], SelectionDarkSize[i]);
54
  end;
55
end;
56
 
57
 
58
procedure LRLSelectItem(var Item: Word);
59
var
60
  Keypress: Word;
61
  RedrawAll: Boolean;
62
  NeedToFade: Boolean;
63
  p: Pointer;
64
  i: Integer;
65
begin
66
  GetMem(p, 768);
67
  DataFill(p^, 768, 0, 0);
68
  Palette256Set(p^);
69
  FreeMem(p, 768);
70
  LoadData;
71
  NeedToFade := True;
72
  ImagePut(LRLScreen^, MainScreen^, 0, 0, 0, 0, 319, 199);
73
  RedrawAll := True;
74
  KeyboardFlush;
75
 
76
  repeat
77
    if RedrawAll then
78
    begin
79
      for i := 1 to 4 do
80
      if i = Item then
81
        ImagePutTransparent(LRLScreen^, Selection[i]^, 63, 66 + (i - 1) * 30, 0, 0, 319, 199) else
82
        ImagePutTransparent(LRLScreen^, SelectionDark[i]^, 63, 66 + (i - 1) * 30, 0, 0, 319, 199);
83
 
84
      ScreenApply(LRLScreen^);
85
 
86
      if NeedToFade then
87
      begin
88
        FadeTo(LRLMenuPalette);
89
        NeedToFade := False;
90
      end;
91
 
92
      RedrawAll := False;
93
    end;
94
 
95
    Keypress := ReadKey;
96
 
97
    if (Keypress = $B1) and (Item < 4) then
98
    begin
99
      Inc(Item);
100
      RedrawAll := True;
101
    end;
102
    if (Keypress = $B2) and (Item > 1) then
103
    begin
104
      Dec(Item);
105
      RedrawAll := True;
106
    end;
107
  until Keypress = $0D;
108
 
109
  FadeClear;
110
  ImageClear(LRLScreen^);
111
  ScreenApply(LRLScreen^);
112
  DisposeData;
113
end;
114
 
115
 
116
end.