From 9e20b144baa4591e9f384742cb90e40e79b315e6 Mon Sep 17 00:00:00 2001 From: brunzelchen Date: Fri, 4 Jun 2010 20:46:56 +0000 Subject: - switched SDL.dll back to v1.2.12, the 1.2.14 has too much bugs - added duet support. duet song format based on hawkears duet mod for the 1.1 alpha git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0.1 Challenge MOD@2440 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UMusic.pas | 47 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) (limited to 'Game/Code/Classes/UMusic.pas') diff --git a/Game/Code/Classes/UMusic.pas b/Game/Code/Classes/UMusic.pas index 1e608c68..7fae3017 100644 --- a/Game/Code/Classes/UMusic.pas +++ b/Game/Code/Classes/UMusic.pas @@ -8,6 +8,7 @@ procedure InitializeSound; type TPos = record + CP: integer; line: integer; note: integer; end; @@ -200,7 +201,7 @@ type FracBeatC: real; // fractional part of MidBeatC - OldCzesc: integer; // poprzednio wyswietlana czesc + OldCzesc: array [0..1] of integer; // poprzednio wyswietlana czesc // akt jest w czesci.akt Teraz: real; // aktualny czas w utworze @@ -261,8 +262,10 @@ var found: boolean; min: integer; diff: integer; + begin found := false; + for I := 0 to length(Czesci[0].Czesc) - 1 do begin for J := 0 to length(Czesci[0].Czesc[I].Nuta) - 1 do @@ -270,6 +273,7 @@ begin if (beat>=Czesci[0].Czesc[I].Nuta[J].Start) and (beat<=Czesci[0].Czesc[I].Nuta[J].Start + Czesci[0].Czesc[I].Nuta[J].Dlugosc) then begin + Result.CP := 0; Result.line := I; Result.note := J; found:=true; @@ -278,6 +282,28 @@ begin end; end; + if found then //found exactly + exit; + + if AktSong.isDuet then + begin + for I := 0 to length(Czesci[1].Czesc) - 1 do + begin + for J := 0 to length(Czesci[1].Czesc[I].Nuta) - 1 do + begin + if (beat>=Czesci[1].Czesc[I].Nuta[J].Start) and + (beat<=Czesci[1].Czesc[I].Nuta[J].Start + Czesci[1].Czesc[I].Nuta[J].Dlugosc) then + begin + Result.CP := 1; + Result.line := I; + Result.note := J; + found:=true; + break; + end; + end; + end; + end; + if found then //found exactly exit; @@ -290,12 +316,31 @@ begin diff := abs(Czesci[0].Czesc[I].Nuta[J].Start - beat); if diff