aboutsummaryrefslogtreecommitdiffstats
path: root/Game/Code/Menu/UMenu.pas
diff options
context:
space:
mode:
authorwhiteshark0 <whiteshark0@b956fd51-792f-4845-bead-9b4dfca2ff2c>2007-04-20 15:29:48 +0000
committerwhiteshark0 <whiteshark0@b956fd51-792f-4845-bead-9b4dfca2ff2c>2007-04-20 15:29:48 +0000
commit34988301a511ca8552a954c231fafde007cb94a1 (patch)
treec3c4f520a33301ca081999e4d80016704e1226fc /Game/Code/Menu/UMenu.pas
parent6a7518ffc93647ec4da4ed151186b858a271626b (diff)
downloadusdx-34988301a511ca8552a954c231fafde007cb94a1.tar.gz
usdx-34988301a511ca8552a954c231fafde007cb94a1.tar.xz
usdx-34988301a511ca8552a954c231fafde007cb94a1.zip
Some Memory tweaking (13 MB Less Ram using at 800 Songs)
Some Loading Time tweaking (From 8 Secs to 6 Secs on my Computer) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@123 b956fd51-792f-4845-bead-9b4dfca2ff2c
Diffstat (limited to 'Game/Code/Menu/UMenu.pas')
-rw-r--r--Game/Code/Menu/UMenu.pas35
1 files changed, 33 insertions, 2 deletions
diff --git a/Game/Code/Menu/UMenu.pas b/Game/Code/Menu/UMenu.pas
index 7908d980..1c4418c1 100644
--- a/Game/Code/Menu/UMenu.pas
+++ b/Game/Code/Menu/UMenu.pas
@@ -11,6 +11,8 @@ type
PMenu = ^TMenu;
TMenu = class
protected
+ ButtonPos: Integer;
+
Interactions: array of TInteract;
SelInteraction: integer;
Button: array of TButton;
@@ -59,6 +61,7 @@ type
function AddText(X, Y, W: real; Style: integer; Size, ColR, ColG, ColB: real; Align: integer; Tekst: string): integer; overload;
// button
+ Procedure SetButtonLength(Length: Cardinal); //Function that Set Length of Button Array in one Step instead of register new Memory for every Button
function AddButton(ThemeButton: TThemeButton): integer; overload;
function AddButton(X, Y, W, H: real; Name: String): integer; overload;
function AddButton(X, Y, W, H: real; Name, Format, Typ: String; Reflection: Boolean): integer; overload;
@@ -150,6 +153,9 @@ begin
SetLength(Button, 0);
BackImg.TexNum := -1;
+
+ //Set ButtonPos to Autoset Length
+ ButtonPos := -1;
end;
constructor TMenu.Create(Back: String);
@@ -165,6 +171,9 @@ begin
BackH := 1;
end else
BackImg.TexNum := -1;
+
+ //Set ButtonPos to Autoset Length
+ ButtonPos := -1;
end;
constructor TMenu.Create(Back: string; W, H: integer);
@@ -356,6 +365,19 @@ begin
Result := TextNum;
end;
+//Function that Set Length of Button Array in one Step instead of register new Memory for every Button
+Procedure TMenu.SetButtonLength(Length: Cardinal);
+begin
+ if (ButtonPos = -1) AND (Length > 0) then
+ begin
+ //Set Length of Button
+ SetLength(Button, Length);
+
+ //Set ButtonPos to start with 0
+ ButtonPos := 0;
+ end;
+end;
+
// Method to add a button in our TMenu. It returns the assigned ButtonNumber
function TMenu.AddButton(ThemeButton: TThemeButton): integer;
@@ -399,8 +421,17 @@ end;
function TMenu.AddButton(X, Y, W, H, ColR, ColG, ColB, Int, DColR, DColG, DColB, DInt: real; Name, Format, Typ: String; Reflection: Boolean; ReflectionSpacing: Real): integer;
begin
// adds button
- Result := Length(Button);
- SetLength(Button, Result + 1);
+ //SetLength is used to reduce Memory usement
+ if (ButtonPos <> -1) then
+ begin
+ Result := ButtonPos;
+ Inc(ButtonPos)
+ end
+ else //Old Method -> Reserve new Memory for every Button
+ begin
+ Result := Length(Button);
+ SetLength(Button, Result + 1);
+ end;
// Button[Result] := TButton.Create(Texture.GetTexture(Name, Typ));
// check here for cache