blob: b0ee2b78946feb0e2ac076487b2b756a3ce183f6 (
plain) (
tree)
|
|
unit UMenuSelect;
interface
{$I switches.inc}
uses TextGL, UTexture, OpenGL12, UMenuText;
type
PSelect = ^TSelect;
TSelect = class
private
SelectBool: boolean;
public
// objects
Text: TText; // Main Text
TextOpt: array of TText; // Options Text
Texture: TTexture; // Select Texture
TextureSBG: TTexture; // Background Selections Texture
TextureS: array of TTexture; // Selections Texture
SelectOptInt: integer;
PData: ^integer;
// for selection and deselection
// main static
ColR: real;
ColG: real;
ColB: real;
Int: real;
DColR: real;
DColG: real;
DColB: real;
DInt: real;
// main text
TColR: real;
TColG: real;
TColB: real;
TInt: real;
TDColR: real;
TDColG: real;
TDColB: real;
TDInt: real;
// selection background static
SBGColR: real;
SBGColG: real;
SBGColB: real;
SBGInt: real;
SBGDColR: real;
SBGDColG: real;
SBGDColB: real;
SBGDInt: real;
// selection statics
SColR: real;
SColG: real;
SColB: real;
SInt: real;
SDColR: real;
SDColG: real;
SDColB: real;
SDInt: real;
// selection text
STColR: real;
STColG: real;
STColB: real;
STInt: real;
STDColR: real;
STDColG: real;
STDColB: real;
STDInt: real;
// position and size
property X: real read Texture.x write Texture.x;
property Y: real read Texture.y write Texture.y;
property W: real read Texture.w write Texture.w;
property H: real read Texture.h write Texture.h;
// property X2: real read Texture2.x write Texture2.x;
// property Y2: real read Texture2.y write Texture2.y;
// property W2: real read Texture2.w write Texture2.w;
// property H2: real read Texture2.h write Texture2.h;
// procedures
procedure SetSelect(Value: boolean);
property Selected: Boolean read SelectBool write SetSelect;
procedure SetSelectOpt(Value: integer);
property SelectedOption: integer read SelectOptInt write SetSelectOpt;
procedure Draw(ButtonAlpha: real);
constructor Create;
end;
implementation
uses UDrawTexture;
// ------------ Select
constructor TSelect.Create;
begin
inherited Create;
Text := TText.Create;
end;
procedure TSelect.SetSelect(Value: boolean);
{var
SO: integer;}
begin // default 1, 0.4
SelectBool := Value;
if Value then begin
Texture.ColR := ColR;
Texture.ColG := ColG;
Texture.ColB := ColB;
Texture.Int := Int;
Text.ColR := TColR;
Text.ColG := TColG;
Text.ColB := TColB;
Text.Int := TInt;
TextureSBG.ColR := SBGColR;
TextureSBG.ColG := SBGColG;
TextureSBG.ColB := SBGColB;
TextureSBG.Int := SBGInt;
{ for SO := 0 to High(TextOpt) do begin
if SelectOptInt = SO then begin
TextOpt[SO].ColR := STColR;
TextOpt[SO].ColG := STColG;
TextOpt[SO].ColB := STColB;
TextOpt[SO].Int := STInt;
end else begin
TextOpt[SO].ColR := STDColR;
TextOpt[SO].ColG := STDColG;
TextOpt[SO].ColB := STDColB;
TextOpt[SO].Int := STDInt;
end;
end;}
end else begin
Texture.ColR := DColR;
Texture.ColG := DColG;
Texture.ColB := DColB;
Texture.Int := DInt;
Text.ColR := TDColR;
Text.ColG := TDColG;
Text.ColB := TDColB;
Text.Int := TDInt;
TextureSBG.ColR := SBGDColR;
TextureSBG.ColG := SBGDColG;
TextureSBG.ColB := SBGDColB;
TextureSBG.Int := SBGDInt;
{ for SO := 0 to High(TextOpt) do begin
TextOpt[SO].ColR := STDColR;
TextOpt[SO].ColG := STDColG;
TextOpt[SO].ColB := STDColB;
TextOpt[SO].Int := STDInt;
end;}
end;
end;
procedure TSelect.SetSelectOpt(Value: integer);
var
SO: integer;
begin
SelectOptInt := Value;
PData^ := Value;
// SetSelect(true); // reset all colors
for SO := 0 to High(TextOpt) do begin
if SelectOptInt = SO then begin
TextOpt[SO].ColR := STColR;
TextOpt[SO].ColG := STColG;
TextOpt[SO].ColB := STColB;
TextOpt[SO].Int := STInt;
end else begin
TextOpt[SO].ColR := STDColR;
TextOpt[SO].ColG := STDColG;
TextOpt[SO].ColB := STDColB;
TextOpt[SO].Int := STDInt;
end;
end;
end;
procedure TSelect.Draw(ButtonAlpha: real);
var
SO: integer;
begin
DrawTexture(Texture);
DrawTexture(TextureSBG);
Text.Draw;
for SO := 0 to High(TextOpt) do begin
TextOpt[SO].Draw;
end;
end;
end.
|