aboutsummaryrefslogtreecommitdiffstats
path: root/Game/Code/Classes/UParty.pas
diff options
context:
space:
mode:
authorbrunzelchen <brunzelchen@b956fd51-792f-4845-bead-9b4dfca2ff2c>2010-02-20 08:54:42 +0000
committerbrunzelchen <brunzelchen@b956fd51-792f-4845-bead-9b4dfca2ff2c>2010-02-20 08:54:42 +0000
commit65121694ad08de93a117e282b397ab32e7c5f9fe (patch)
tree9a5f007493d9f757a4a05f21278dc3accecd08f3 /Game/Code/Classes/UParty.pas
parent554b2db6053b7a67947adc93c28aa41f68a393f1 (diff)
downloadusdx-65121694ad08de93a117e282b397ab32e7c5f9fe.tar.gz
usdx-65121694ad08de93a117e282b397ab32e7c5f9fe.tar.xz
usdx-65121694ad08de93a117e282b397ab32e7c5f9fe.zip
rewrite of GetRandomPlugin
git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0.1 Challenge MOD@2111 b956fd51-792f-4845-bead-9b4dfca2ff2c
Diffstat (limited to 'Game/Code/Classes/UParty.pas')
-rw-r--r--Game/Code/Classes/UParty.pas64
1 files changed, 16 insertions, 48 deletions
diff --git a/Game/Code/Classes/UParty.pas b/Game/Code/Classes/UParty.pas
index 2887f68c..b57106a5 100644
--- a/Game/Code/Classes/UParty.pas
+++ b/Game/Code/Classes/UParty.pas
@@ -78,74 +78,42 @@ Type
Nr: integer;
end;
- function getTimesPlayed(order: TOrder): integer;
- var
- I: integer;
- begin
- for I := 0 to Length(Plugins) - 1 do
- begin
- if (order.ID = Plugins[I].ID) and (order.medley = Plugins[I].medley) then
- begin
- Result:=Plugins[I].TimesPlayed;
- break;
- end;
- end;
- end;
-
var
- I, J, K, num: Integer;
+ I, J, K: Integer;
plugin_order: array of TOrder;
temp: TOrder;
- min: integer;
+ min, len: integer;
begin
+ //search for min played
min := high(min);
- SetLength(plugin_order, Length(Plugins));
for I := 0 to Length(Plugins) - 1 do
begin
- plugin_order[I].ID := Plugins[I].ID;
- plugin_order[I].medley := Plugins[I].Medley;
- plugin_order[I].surprise := Plugins[I].MedleySurprise;
- plugin_order[I].Nr := I;
if Plugins[I].TimesPlayed < min then
min := Plugins[I].TimesPlayed;
end;
- //sort ASC by TimesPlayed
- for J := 0 to Length(Plugins) - 2 do
+ //fill plugin list
+ SetLength(plugin_order, 0);
+ for I := 0 to Length(Plugins) - 1 do
begin
- for K := J+1 to Length(Plugins) - 1 do
+ if (Plugins[I].TimesPlayed = min) then
begin
- if getTimesPlayed(plugin_order[J]) > getTimesPlayed(plugin_order[K]) then
- begin
- temp := plugin_order[J];
- plugin_order[J] := plugin_order[K];
- plugin_order[K] := temp;
- end;
+ len := Length(plugin_order);
+ SetLength(plugin_order, len+1);
+ plugin_order[len].ID := Plugins[I].ID;
+ plugin_order[len].medley := Plugins[I].Medley;
+ plugin_order[len].surprise := Plugins[I].MedleySurprise;
+ plugin_order[len].Nr := I;
end;
end;
- //set filter
- num := 0;
- for I := 0 to Length(Plugins) - 1 do
- begin
- if Plugins[I].TimesPlayed <= min then
- Inc(num);
- end;
+ K := random(Length(plugin_order));
+ Inc(Plugins[plugin_order[K].Nr].TimesPlayed);
- K := random(num);
- for I := 0 to Length(Plugins) - 1 do
- begin
- if (plugin_order[K].ID = Plugins[I].ID) and
- (plugin_order[K].medley = Plugins[I].medley) then
- begin
- Inc(Plugins[I].TimesPlayed);
- break;
- end;
- end;
medley := plugin_order[K].medley;
- nr := plugin_order[K].Nr;
surprise := plugin_order[K].surprise;
+ nr := plugin_order[K].Nr;
Result := plugin_order[K].ID;
end;