aboutsummaryrefslogtreecommitdiffstats
path: root/src/Menu/UMenuButtonCollection.pas
blob: c700c812e95674674dc29fc5334370f61f890c86 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
unit UMenuButtonCollection;

interface

{$I switches.inc}

uses UMenuButton;

type
  //----------------
  //TButtonCollection
  //No Extra Attributes or Functions ATM
  //----------------
  AButton = Array of TButton;
  PAButton = ^AButton;
  TButtonCollection = class(TButton)
    //num of the First Button, that can be Selected
    FirstChild: Byte;
    CountChilds: Byte;
    
    ScreenButton: PAButton;

    procedure SetSelect(Value : Boolean); override;
    procedure Draw; override;
  end;

implementation

procedure TButtonCollection.SetSelect(Value : Boolean);
var I: Integer;
begin
  inherited;

  //Set Visible for Every Button that is a Child of this ButtonCollection
  if (Not Fade) then
    For I := 0 to High(ScreenButton^) do
      if (ScreenButton^[I].Parent = Parent) then
        ScreenButton^[I].Visible := Value;
end;

procedure TButtonCollection.Draw;
var I, J: Integer;
begin
  inherited;
  //If fading is activated, Fade Child Buttons
  if (Fade) then
  begin
    For I := 0 to High(ScreenButton^) do
      if (ScreenButton^[I].Parent = Parent) then
      begin
        if (FadeProgress < 0.5) then
        begin
          ScreenButton^[I].Visible := SelectBool;

          For J := 0 to High(ScreenButton^[I].Text) do
            ScreenButton^[I].Text[J].Visible := SelectBool;
        end
        else
        begin
          ScreenButton^[I].Texture.Alpha := (FadeProgress-0.666)*3;
          
          For J := 0 to High(ScreenButton^[I].Text) do
            ScreenButton^[I].Text[J].Alpha := (FadeProgress-0.666)*3;
        end;
      end;
  end;
end;



end.