aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbrunzelchen <brunzelchen@b956fd51-792f-4845-bead-9b4dfca2ff2c>2010-07-04 17:06:14 +0000
committerbrunzelchen <brunzelchen@b956fd51-792f-4845-bead-9b4dfca2ff2c>2010-07-04 17:06:14 +0000
commitac12e8ff541b2d30f0b5dd070f83fc43d9b2116d (patch)
tree7964d52f95b38c3efd915286cba797817518f366
parent075cb824a31c5e6e1cc6ee6f0087ac5598ba003a (diff)
downloadusdx-ac12e8ff541b2d30f0b5dd070f83fc43d9b2116d.tar.gz
usdx-ac12e8ff541b2d30f0b5dd070f83fc43d9b2116d.tar.xz
usdx-ac12e8ff541b2d30f0b5dd070f83fc43d9b2116d.zip
- possible/remainings score bar in singscreen: red at start, decreasing with lost score, filling green from left with score
- added session log. log all played songs with player names and score - fixed calculation of possible scores - change tabs on/off: now with CTRL+T (songscreen) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0.1 Challenge MOD@2573 b956fd51-792f-4845-bead-9b4dfca2ff2c
Diffstat (limited to '')
-rw-r--r--Game/Code/Classes/UDraw.pas134
-rw-r--r--Game/Code/Classes/UFiles.pas5
-rw-r--r--Game/Code/Classes/UIni.pas17
-rw-r--r--Game/Code/Classes/ULog.pas67
-rw-r--r--Game/Code/Classes/UMain.pas28
-rw-r--r--Game/Code/Screens/UScreenSing.pas61
-rw-r--r--Game/Code/Screens/UScreenSingModi.pas15
-rw-r--r--Game/Code/Screens/UScreenSong.pas6
-rw-r--r--Game/Code/UltraStar.bdsproj3
-rw-r--r--Game/Code/UltraStar.dpr2
10 files changed, 253 insertions, 85 deletions
diff --git a/Game/Code/Classes/UDraw.pas b/Game/Code/Classes/UDraw.pas
index 8fe6a85e..74b8e6b7 100644
--- a/Game/Code/Classes/UDraw.pas
+++ b/Game/Code/Classes/UDraw.pas
@@ -41,7 +41,7 @@ procedure SingDrawStar(X, Y, A: real);
procedure SingGoldenStar(X, Y, A: real);
}
// The Singbar
-procedure SingDrawSingbar(X, Y, W, H: real; Percent: integer; ScoreMax: integer);
+procedure SingDrawSingbar(X, Y, W, H: real; Percent, ScoreMax, ScoreCurrent: integer);
//Phrasen Bonus - Line Bonus
procedure SingDrawLineBonus( const X, Y: Single; Color: TRGB; Alpha: Single; Text: string; Age: Integer);
@@ -773,23 +773,23 @@ begin
if PlayersPlay = 1 then
begin
//SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[0].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP1SingBar.x, Theme.Sing.StaticP1SingBar.y, Theme.Sing.StaticP1SingBar.w, Theme.Sing.StaticP1SingBar.h , Player[0].ScorePercent, Player[0].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP1SingBar.x, Theme.Sing.StaticP1SingBar.y, Theme.Sing.StaticP1SingBar.w, Theme.Sing.StaticP1SingBar.h , Player[0].ScorePercent, Player[0].ScoreMax, Player[0].ScoreTotalI);
end;
if PlayersPlay = 2 then
begin
//SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[0].ScorePercent);
//SingDrawSingbar(620 + 10*ScreenX, 95, 100, 8, Player[1].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP1TwoPSingBar.x, Theme.Sing.StaticP1TwoPSingBar.y, Theme.Sing.StaticP1TwoPSingBar.w, Theme.Sing.StaticP1TwoPSingBar.h , Player[0].ScorePercent, Player[0].ScoreMax);
- SingDrawSingbar(Theme.Sing.StaticP2RSingBar.x, Theme.Sing.StaticP2RSingBar.y, Theme.Sing.StaticP2RSingBar.w, Theme.Sing.StaticP2RSingBar.h , Player[1].ScorePercent, Player[1].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP1TwoPSingBar.x, Theme.Sing.StaticP1TwoPSingBar.y, Theme.Sing.StaticP1TwoPSingBar.w, Theme.Sing.StaticP1TwoPSingBar.h , Player[0].ScorePercent, Player[0].ScoreMax, Player[0].ScoreTotalI);
+ SingDrawSingbar(Theme.Sing.StaticP2RSingBar.x, Theme.Sing.StaticP2RSingBar.y, Theme.Sing.StaticP2RSingBar.w, Theme.Sing.StaticP2RSingBar.h , Player[1].ScorePercent, Player[1].ScoreMax, Player[1].ScoreTotalI);
end;
if PlayersPlay = 3 then
begin
//SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[0].ScorePercent);
//SingDrawSingbar(370 + 10*ScreenX, 95, 100, 8, Player[1].ScorePercent);
//SingDrawSingbar(670 + 10*ScreenX, 95, 100, 8, Player[2].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP1ThreePSingBar.x, Theme.Sing.StaticP1ThreePSingBar.y, Theme.Sing.StaticP1ThreePSingBar.w, Theme.Sing.StaticP1ThreePSingBar.h , Player[0].ScorePercent, Player[0].ScoreMax);
- SingDrawSingbar(Theme.Sing.StaticP2MSingBar.x, Theme.Sing.StaticP2MSingBar.y, Theme.Sing.StaticP2MSingBar.w, Theme.Sing.StaticP2MSingBar.h , Player[1].ScorePercent, Player[1].ScoreMax);
- SingDrawSingbar(Theme.Sing.StaticP3SingBar.x, Theme.Sing.StaticP3SingBar.y, Theme.Sing.StaticP3SingBar.w, Theme.Sing.StaticP3SingBar.h , Player[2].ScorePercent, Player[2].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP1ThreePSingBar.x, Theme.Sing.StaticP1ThreePSingBar.y, Theme.Sing.StaticP1ThreePSingBar.w, Theme.Sing.StaticP1ThreePSingBar.h , Player[0].ScorePercent, Player[0].ScoreMax, Player[0].ScoreTotalI);
+ SingDrawSingbar(Theme.Sing.StaticP2MSingBar.x, Theme.Sing.StaticP2MSingBar.y, Theme.Sing.StaticP2MSingBar.w, Theme.Sing.StaticP2MSingBar.h , Player[1].ScorePercent, Player[1].ScoreMax, Player[1].ScoreTotalI);
+ SingDrawSingbar(Theme.Sing.StaticP3SingBar.x, Theme.Sing.StaticP3SingBar.y, Theme.Sing.StaticP3SingBar.w, Theme.Sing.StaticP3SingBar.h , Player[2].ScorePercent, Player[2].ScoreMax, Player[2].ScoreTotalI);
end;
if PlayersPlay = 4 then
begin
@@ -797,15 +797,15 @@ begin
begin
//SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[0].ScorePercent);
//SingDrawSingbar(620 + 10*ScreenX, 95, 100, 8, Player[1].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP1TwoPSingBar.x, Theme.Sing.StaticP1TwoPSingBar.y, Theme.Sing.StaticP1TwoPSingBar.w, Theme.Sing.StaticP1TwoPSingBar.h , Player[0].ScorePercent, Player[0].ScoreMax);
- SingDrawSingbar(Theme.Sing.StaticP2RSingBar.x, Theme.Sing.StaticP2RSingBar.y, Theme.Sing.StaticP2RSingBar.w, Theme.Sing.StaticP2RSingBar.h , Player[1].ScorePercent, Player[1].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP1TwoPSingBar.x, Theme.Sing.StaticP1TwoPSingBar.y, Theme.Sing.StaticP1TwoPSingBar.w, Theme.Sing.StaticP1TwoPSingBar.h , Player[0].ScorePercent, Player[0].ScoreMax, Player[0].ScoreTotalI);
+ SingDrawSingbar(Theme.Sing.StaticP2RSingBar.x, Theme.Sing.StaticP2RSingBar.y, Theme.Sing.StaticP2RSingBar.w, Theme.Sing.StaticP2RSingBar.h , Player[1].ScorePercent, Player[1].ScoreMax, Player[1].ScoreTotalI);
end;
if ScreenAct = 2 then
begin
//SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[2].ScorePercent);
//SingDrawSingbar(620 + 10*ScreenX, 95, 100, 8, Player[3].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP1TwoPSingBar.x, Theme.Sing.StaticP1TwoPSingBar.y, Theme.Sing.StaticP1TwoPSingBar.w, Theme.Sing.StaticP1TwoPSingBar.h , Player[2].ScorePercent, Player[2].ScoreMax);
- SingDrawSingbar(Theme.Sing.StaticP2RSingBar.x, Theme.Sing.StaticP2RSingBar.y, Theme.Sing.StaticP2RSingBar.w, Theme.Sing.StaticP2RSingBar.h , Player[3].ScorePercent, Player[3].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP1TwoPSingBar.x, Theme.Sing.StaticP1TwoPSingBar.y, Theme.Sing.StaticP1TwoPSingBar.w, Theme.Sing.StaticP1TwoPSingBar.h , Player[2].ScorePercent, Player[2].ScoreMax, Player[2].ScoreTotalI);
+ SingDrawSingbar(Theme.Sing.StaticP2RSingBar.x, Theme.Sing.StaticP2RSingBar.y, Theme.Sing.StaticP2RSingBar.w, Theme.Sing.StaticP2RSingBar.h , Player[3].ScorePercent, Player[3].ScoreMax, Player[3].ScoreTotalI);
end;
end;
if PlayersPlay = 6 then
@@ -815,18 +815,18 @@ begin
//SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[0].ScorePercent);
//SingDrawSingbar(370 + 10*ScreenX, 95, 100, 8, Player[1].ScorePercent);
//SingDrawSingbar(670 + 10*ScreenX, 95, 100, 8, Player[2].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP1ThreePSingBar.x, Theme.Sing.StaticP1ThreePSingBar.y, Theme.Sing.StaticP1ThreePSingBar.w, Theme.Sing.StaticP1ThreePSingBar.h , Player[0].ScorePercent, Player[0].ScoreMax);
- SingDrawSingbar(Theme.Sing.StaticP2MSingBar.x, Theme.Sing.StaticP2MSingBar.y, Theme.Sing.StaticP2MSingBar.w, Theme.Sing.StaticP2MSingBar.h , Player[1].ScorePercent, Player[1].ScoreMax);
- SingDrawSingbar(Theme.Sing.StaticP3SingBar.x, Theme.Sing.StaticP3SingBar.y, Theme.Sing.StaticP3SingBar.w, Theme.Sing.StaticP3SingBar.h , Player[2].ScorePercent, Player[2].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP1ThreePSingBar.x, Theme.Sing.StaticP1ThreePSingBar.y, Theme.Sing.StaticP1ThreePSingBar.w, Theme.Sing.StaticP1ThreePSingBar.h , Player[0].ScorePercent, Player[0].ScoreMax, Player[0].ScoreTotalI);
+ SingDrawSingbar(Theme.Sing.StaticP2MSingBar.x, Theme.Sing.StaticP2MSingBar.y, Theme.Sing.StaticP2MSingBar.w, Theme.Sing.StaticP2MSingBar.h , Player[1].ScorePercent, Player[1].ScoreMax, Player[1].ScoreTotalI);
+ SingDrawSingbar(Theme.Sing.StaticP3SingBar.x, Theme.Sing.StaticP3SingBar.y, Theme.Sing.StaticP3SingBar.w, Theme.Sing.StaticP3SingBar.h , Player[2].ScorePercent, Player[2].ScoreMax, Player[2].ScoreTotalI);
end;
if ScreenAct = 2 then
begin
//SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[3].ScorePercent);
//SingDrawSingbar(370 + 10*ScreenX, 95, 100, 8, Player[4].ScorePercent);
//SingDrawSingbar(670 + 10*ScreenX, 95, 100, 8, Player[5].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP1ThreePSingBar.x, Theme.Sing.StaticP1ThreePSingBar.y, Theme.Sing.StaticP1ThreePSingBar.w, Theme.Sing.StaticP1ThreePSingBar.h , Player[3].ScorePercent, Player[3].ScoreMax);
- SingDrawSingbar(Theme.Sing.StaticP2MSingBar.x, Theme.Sing.StaticP2MSingBar.y, Theme.Sing.StaticP2MSingBar.w, Theme.Sing.StaticP2MSingBar.h , Player[4].ScorePercent, Player[4].ScoreMax);
- SingDrawSingbar(Theme.Sing.StaticP3SingBar.x, Theme.Sing.StaticP3SingBar.y, Theme.Sing.StaticP3SingBar.w, Theme.Sing.StaticP3SingBar.h , Player[5].ScorePercent, Player[5].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP1ThreePSingBar.x, Theme.Sing.StaticP1ThreePSingBar.y, Theme.Sing.StaticP1ThreePSingBar.w, Theme.Sing.StaticP1ThreePSingBar.h , Player[3].ScorePercent, Player[3].ScoreMax, Player[3].ScoreTotalI);
+ SingDrawSingbar(Theme.Sing.StaticP2MSingBar.x, Theme.Sing.StaticP2MSingBar.y, Theme.Sing.StaticP2MSingBar.w, Theme.Sing.StaticP2MSingBar.h , Player[4].ScorePercent, Player[4].ScoreMax, Player[4].ScoreTotalI);
+ SingDrawSingbar(Theme.Sing.StaticP3SingBar.x, Theme.Sing.StaticP3SingBar.y, Theme.Sing.StaticP3SingBar.w, Theme.Sing.StaticP3SingBar.h , Player[5].ScorePercent, Player[5].ScoreMax, Player[5].ScoreTotalI);
end;
end;
end;
@@ -1312,67 +1312,67 @@ begin
if PlayersPlay = 1 then begin
if PlayerInfo.Playerinfo[0].Enabled then
//SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[0].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP1SingBar.x, Theme.Sing.StaticP1SingBar.y, Theme.Sing.StaticP1SingBar.w, Theme.Sing.StaticP1SingBar.h , Player[0].ScorePercent, Player[0].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP1SingBar.x, Theme.Sing.StaticP1SingBar.y, Theme.Sing.StaticP1SingBar.w, Theme.Sing.StaticP1SingBar.h , Player[0].ScorePercent, Player[0].ScoreMax, Player[0].ScoreTotalI);
end;
if PlayersPlay = 2 then begin
if PlayerInfo.Playerinfo[0].Enabled then
//SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[0].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP1TwoPSingBar.x, Theme.Sing.StaticP1TwoPSingBar.y, Theme.Sing.StaticP1TwoPSingBar.w, Theme.Sing.StaticP1TwoPSingBar.h , Player[0].ScorePercent, Player[0].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP1TwoPSingBar.x, Theme.Sing.StaticP1TwoPSingBar.y, Theme.Sing.StaticP1TwoPSingBar.w, Theme.Sing.StaticP1TwoPSingBar.h , Player[0].ScorePercent, Player[0].ScoreMax, Player[0].ScoreTotalI);
if PlayerInfo.Playerinfo[1].Enabled then
//SingDrawSingbar(620 + 10*ScreenX, 95, 100, 8, Player[1].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP2RSingBar.x, Theme.Sing.StaticP2RSingBar.y, Theme.Sing.StaticP2RSingBar.w, Theme.Sing.StaticP2RSingBar.h , Player[1].ScorePercent, Player[1].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP2RSingBar.x, Theme.Sing.StaticP2RSingBar.y, Theme.Sing.StaticP2RSingBar.w, Theme.Sing.StaticP2RSingBar.h , Player[1].ScorePercent, Player[1].ScoreMax, Player[1].ScoreTotalI);
end;
if PlayersPlay = 3 then begin
if PlayerInfo.Playerinfo[0].Enabled then
//SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[0].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP1ThreePSingBar.x, Theme.Sing.StaticP1ThreePSingBar.y, Theme.Sing.StaticP1ThreePSingBar.w, Theme.Sing.StaticP1ThreePSingBar.h , Player[0].ScorePercent, Player[0].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP1ThreePSingBar.x, Theme.Sing.StaticP1ThreePSingBar.y, Theme.Sing.StaticP1ThreePSingBar.w, Theme.Sing.StaticP1ThreePSingBar.h , Player[0].ScorePercent, Player[0].ScoreMax, Player[0].ScoreTotalI);
if PlayerInfo.Playerinfo[1].Enabled then
//SingDrawSingbar(370 + 10*ScreenX, 95, 100, 8, Player[1].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP2MSingBar.x, Theme.Sing.StaticP2MSingBar.y, Theme.Sing.StaticP2MSingBar.w, Theme.Sing.StaticP2MSingBar.h , Player[1].ScorePercent, Player[1].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP2MSingBar.x, Theme.Sing.StaticP2MSingBar.y, Theme.Sing.StaticP2MSingBar.w, Theme.Sing.StaticP2MSingBar.h , Player[1].ScorePercent, Player[1].ScoreMax, Player[1].ScoreTotalI);
if PlayerInfo.Playerinfo[2].Enabled then
//SingDrawSingbar(670 + 10*ScreenX, 95, 100, 8, Player[2].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP3SingBar.x, Theme.Sing.StaticP3SingBar.y, Theme.Sing.StaticP3SingBar.w, Theme.Sing.StaticP3SingBar.h , Player[2].ScorePercent, Player[2].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP3SingBar.x, Theme.Sing.StaticP3SingBar.y, Theme.Sing.StaticP3SingBar.w, Theme.Sing.StaticP3SingBar.h , Player[2].ScorePercent, Player[2].ScoreMax, Player[2].ScoreTotalI);
end;
if PlayersPlay = 4 then begin
if ScreenAct = 1 then begin
if PlayerInfo.Playerinfo[0].Enabled then
//SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[0].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP1TwoPSingBar.x, Theme.Sing.StaticP1TwoPSingBar.y, Theme.Sing.StaticP1TwoPSingBar.w, Theme.Sing.StaticP1TwoPSingBar.h , Player[0].ScorePercent, Player[0].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP1TwoPSingBar.x, Theme.Sing.StaticP1TwoPSingBar.y, Theme.Sing.StaticP1TwoPSingBar.w, Theme.Sing.StaticP1TwoPSingBar.h , Player[0].ScorePercent, Player[0].ScoreMax, Player[0].ScoreTotalI);
if PlayerInfo.Playerinfo[1].Enabled then
//SingDrawSingbar(620 + 10*ScreenX, 95, 100, 8, Player[1].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP2RSingBar.x, Theme.Sing.StaticP2RSingBar.y, Theme.Sing.StaticP2RSingBar.w, Theme.Sing.StaticP2RSingBar.h , Player[1].ScorePercent, Player[1].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP2RSingBar.x, Theme.Sing.StaticP2RSingBar.y, Theme.Sing.StaticP2RSingBar.w, Theme.Sing.StaticP2RSingBar.h , Player[1].ScorePercent, Player[1].ScoreMax, Player[1].ScoreTotalI);
end;
if ScreenAct = 2 then begin
if PlayerInfo.Playerinfo[2].Enabled then
//SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[2].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP1TwoPSingBar.x, Theme.Sing.StaticP1TwoPSingBar.y, Theme.Sing.StaticP1TwoPSingBar.w, Theme.Sing.StaticP1TwoPSingBar.h , Player[2].ScorePercent, Player[2].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP1TwoPSingBar.x, Theme.Sing.StaticP1TwoPSingBar.y, Theme.Sing.StaticP1TwoPSingBar.w, Theme.Sing.StaticP1TwoPSingBar.h , Player[2].ScorePercent, Player[2].ScoreMax, Player[2].ScoreTotalI);
if PlayerInfo.Playerinfo[3].Enabled then
//SingDrawSingbar(620 + 10*ScreenX, 95, 100, 8, Player[3].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP2RSingBar.x, Theme.Sing.StaticP2RSingBar.y, Theme.Sing.StaticP2RSingBar.w, Theme.Sing.StaticP2RSingBar.h , Player[3].ScorePercent, Player[3].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP2RSingBar.x, Theme.Sing.StaticP2RSingBar.y, Theme.Sing.StaticP2RSingBar.w, Theme.Sing.StaticP2RSingBar.h , Player[3].ScorePercent, Player[3].ScoreMax, Player[3].ScoreTotalI);
end;
end;
if PlayersPlay = 6 then begin
if ScreenAct = 1 then begin
if PlayerInfo.Playerinfo[0].Enabled then
//SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[0].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP1ThreePSingBar.x, Theme.Sing.StaticP1ThreePSingBar.y, Theme.Sing.StaticP1ThreePSingBar.w, Theme.Sing.StaticP1ThreePSingBar.h , Player[0].ScorePercent, Player[0].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP1ThreePSingBar.x, Theme.Sing.StaticP1ThreePSingBar.y, Theme.Sing.StaticP1ThreePSingBar.w, Theme.Sing.StaticP1ThreePSingBar.h , Player[0].ScorePercent, Player[0].ScoreMax, Player[0].ScoreTotalI);
if PlayerInfo.Playerinfo[1].Enabled then
//SingDrawSingbar(370 + 10*ScreenX, 95, 100, 8, Player[1].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP2MSingBar.x, Theme.Sing.StaticP2MSingBar.y, Theme.Sing.StaticP2MSingBar.w, Theme.Sing.StaticP2MSingBar.h , Player[1].ScorePercent, Player[1].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP2MSingBar.x, Theme.Sing.StaticP2MSingBar.y, Theme.Sing.StaticP2MSingBar.w, Theme.Sing.StaticP2MSingBar.h , Player[1].ScorePercent, Player[1].ScoreMax, Player[1].ScoreTotalI);
if PlayerInfo.Playerinfo[2].Enabled then
//SingDrawSingbar(670 + 10*ScreenX, 95, 100, 8, Player[2].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP3SingBar.x, Theme.Sing.StaticP3SingBar.y, Theme.Sing.StaticP3SingBar.w, Theme.Sing.StaticP3SingBar.h , Player[2].ScorePercent, Player[2].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP3SingBar.x, Theme.Sing.StaticP3SingBar.y, Theme.Sing.StaticP3SingBar.w, Theme.Sing.StaticP3SingBar.h , Player[2].ScorePercent, Player[2].ScoreMax, Player[2].ScoreTotalI);
end;
if ScreenAct = 2 then begin
if PlayerInfo.Playerinfo[3].Enabled then
//SingDrawSingbar( 75 + 10*ScreenX, 95, 100, 8, Player[3].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP1ThreePSingBar.x, Theme.Sing.StaticP1ThreePSingBar.y, Theme.Sing.StaticP1ThreePSingBar.w, Theme.Sing.StaticP1ThreePSingBar.h , Player[3].ScorePercent, Player[3].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP1ThreePSingBar.x, Theme.Sing.StaticP1ThreePSingBar.y, Theme.Sing.StaticP1ThreePSingBar.w, Theme.Sing.StaticP1ThreePSingBar.h , Player[3].ScorePercent, Player[3].ScoreMax, Player[3].ScoreTotalI);
if PlayerInfo.Playerinfo[4].Enabled then
//SingDrawSingbar(370 + 10*ScreenX, 95, 100, 8, Player[4].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP2MSingBar.x, Theme.Sing.StaticP2MSingBar.y, Theme.Sing.StaticP2MSingBar.w, Theme.Sing.StaticP2MSingBar.h , Player[4].ScorePercent, Player[4].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP2MSingBar.x, Theme.Sing.StaticP2MSingBar.y, Theme.Sing.StaticP2MSingBar.w, Theme.Sing.StaticP2MSingBar.h , Player[4].ScorePercent, Player[4].ScoreMax, Player[4].ScoreTotalI);
if PlayerInfo.Playerinfo[5].Enabled then
//SingDrawSingbar(670 + 10*ScreenX, 95, 100, 8, Player[5].ScorePercent);
- SingDrawSingbar(Theme.Sing.StaticP3SingBar.x, Theme.Sing.StaticP3SingBar.y, Theme.Sing.StaticP3SingBar.w, Theme.Sing.StaticP3SingBar.h , Player[5].ScorePercent, Player[5].ScoreMax);
+ SingDrawSingbar(Theme.Sing.StaticP3SingBar.x, Theme.Sing.StaticP3SingBar.y, Theme.Sing.StaticP3SingBar.w, Theme.Sing.StaticP3SingBar.h , Player[5].ScorePercent, Player[5].ScoreMax, Player[5].ScoreTotalI);
end;
end;
end;
@@ -1596,7 +1596,7 @@ end;
//SingBar Mod
-procedure SingDrawSingbar(X, Y, W, H: real; Percent: integer; ScoreMax: integer);
+procedure SingDrawSingbar(X, Y, W, H: real; Percent, ScoreMax, ScoreCurrent: integer);
var
R: Real;
G: Real;
@@ -1678,28 +1678,52 @@ begin;
if (Ini.PossibleScore=0) then
Exit;
-
- //possible score Front
- glColor4f(1, 1, 1, 0.8);
- glEnable(GL_TEXTURE_2D);
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glBindTexture(GL_TEXTURE_2D, Tex_SingBar_Back.TexNum);
- glBegin(GL_QUADS);
- glTexCoord2f(0, 0); glVertex2f(X, Y+H);
- glTexCoord2f(0, 1); glVertex2f(X, Y+H*3);
- glTexCoord2f(1, 1); glVertex2f(X+W, Y+H*3);
- glTexCoord2f(1, 0); glVertex2f(X+W, Y+H);
- glEnd;
- glColor4f(0, 0, 0, 1);
- SetFontStyle(1);
- SetFontItalic(false);
- SetFontSize(H*0.7);
- str := 'max: ' + IntToStr(ScoreMax);
- wd := glTextWidth(PChar(str));
- SetFontPos (X+W/2-wd/2, Y+H);
- glPrint(PChar(str));
+
+ if (Ini.PossibleScore=1) then
+ begin
+ glEnable(GL_TEXTURE_2D);
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glBindTexture(GL_TEXTURE_2D, Tex_SingBar_Bar.TexNum);
+ glColor4f(1, 0, 0, 0.6);
+ glBegin(GL_QUADS);
+ glTexCoord2f(0, 0); glVertex2f(X, Y+H);
+ glTexCoord2f(0, 1); glVertex2f(X, Y+H*2);
+ glTexCoord2f(1, 1); glVertex2f(X+W*ScoreMax/9990, Y+H*2);
+ glTexCoord2f(1, 0); glVertex2f(X+W*ScoreMax/9990, Y+H);
+ glEnd;
+
+ glColor4f(0, 1, 0, 0.6);
+ glBegin(GL_QUADS);
+ glTexCoord2f(0, 0); glVertex2f(X, Y+H);
+ glTexCoord2f(0, 1); glVertex2f(X, Y+H*2);
+ glTexCoord2f(1, 1); glVertex2f(X+W*ScoreCurrent/9990, Y+H*2);
+ glTexCoord2f(1, 0); glVertex2f(X+W*ScoreCurrent/9990, Y+H);
+ glEnd;
+ end else
+ begin
+ glColor4f(1, 1, 1, 0.8);
+ glEnable(GL_TEXTURE_2D);
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glBindTexture(GL_TEXTURE_2D, Tex_SingBar_Back.TexNum);
+ glBegin(GL_QUADS);
+ glTexCoord2f(0, 0); glVertex2f(X, Y+H);
+ glTexCoord2f(0, 1); glVertex2f(X, Y+H*3);
+ glTexCoord2f(1, 1); glVertex2f(X+W, Y+H*3);
+ glTexCoord2f(1, 0); glVertex2f(X+W, Y+H);
+ glEnd;
+
+ glColor4f(0, 0, 0, 0.7);
+ SetFontStyle(1);
+ SetFontItalic(false);
+ SetFontSize(H*0.7);
+ str := 'max: ' + IntToStr(ScoreMax);
+ wd := glTextWidth(PChar(str));
+ SetFontPos (X+W/2-wd/2, Y+H);
+ glPrint(PChar(str));
+ end;
end;
//end Singbar Mod
diff --git a/Game/Code/Classes/UFiles.pas b/Game/Code/Classes/UFiles.pas
index 242fe092..a8fa8076 100644
--- a/Game/Code/Classes/UFiles.pas
+++ b/Game/Code/Classes/UFiles.pas
@@ -41,6 +41,7 @@ var
PluginPath: string;
PlayListPath: string;
RecordingsPath: string;
+ SessionLogPath: string;
SongFile: TextFile; // all procedures in this unit operates on this file
FileLineNo: integer; //Line which is readed at Last, for error reporting
@@ -74,6 +75,7 @@ begin
PluginPath := GamePath + 'Plugins\';
PlaylistPath := GamePath + 'Playlists\';
RecordingsPath := GamePath + 'Recordings\';
+ SessionLogPath := GamePath + 'SessionLog\';
Writeable := true;
@@ -105,6 +107,9 @@ begin
If Writeable And (not DirectoryExists(RecordingsPath)) then
Writeable := ForceDirectories(RecordingsPath);
+ If Writeable And (not DirectoryExists(SessionLogPath)) then
+ Writeable := ForceDirectories(SessionLogPath);
+
if not Writeable then
Log.LogError('Error: Dir is Readonly');
diff --git a/Game/Code/Classes/UIni.pas b/Game/Code/Classes/UIni.pas
index 6e2f1b16..2c84cec3 100644
--- a/Game/Code/Classes/UIni.pas
+++ b/Game/Code/Classes/UIni.pas
@@ -83,6 +83,7 @@ type
SumPlayers: integer;
DuelRatio: integer;
PossibleScore: integer;
+ LogSession: integer;
// Soundcards
SoundCard: array[0..7, 1..2] of integer;
@@ -170,14 +171,15 @@ const
// Advanced
ILoadAnimation: array[0..1] of string = ('Off', 'On');
IEffectSing: array[0..1] of string = ('Off', 'On');
- IScreenFade: array[0..1] of String =('Off', 'On');
+ IScreenFade: array[0..1] of String = ('Off', 'On');
IAskbeforeDel: array[0..1] of string = ('Off', 'On');
IOnSongClick: array[0..2] of string = ('Sing', 'Select Players', 'Open Menu');
ILineBonus: array[0..2] of string = ('Off', 'At Score', 'At Notes');
IPartyPopup: array[0..1] of string = ('Off', 'On');
ISumPlayers: array[0..2] of string = ('Never', 'Dynamic', 'Always');
IDuelRatio: array[0..9] of string = ('normal', '10%', '20%', '30%', '40%', '50%', '60%', '70%', '80%', '90%');
- IPossibleScore: array[0..1] of string = ('Off', 'On');
+ IPossibleScore: array[0..2] of string = ('Off', 'Bar', 'Numbers');
+ ILogSession: array[0..1] of string = ('Off', 'On');
IChannel: array[0..6] of string = ('Off', '1', '2', '3', '4', '5', '6');
@@ -607,10 +609,15 @@ begin
if Tekst = IDuelRatio[Pet] then Ini.DuelRatio := Pet;
// PossibleScore
- Tekst := IniFile.ReadString('Advanced', 'PossibleScore', IPossibleScore[0]);
+ Tekst := IniFile.ReadString('Advanced', 'PossibleScore', IPossibleScore[1]);
for Pet := 0 to High(IPossibleScore) do
if Tekst = IPossibleScore[Pet] then Ini.PossibleScore := Pet;
+ // LogSession
+ Tekst := IniFile.ReadString('Advanced', 'LogSession', ILogSession[0]);
+ for Pet := 0 to High(ILogSession) do
+ if Tekst = ILogSession[Pet] then Ini.LogSession := Pet;
+
// SongPath
if (Params.SongPath <> '') then
SongPath := IncludeTrailingPathDelimiter(Params.SongPath)
@@ -842,6 +849,10 @@ begin
Tekst := IPossibleScore[Ini.PossibleScore];
IniFile.WriteString('Advanced', 'PossibleScore', Tekst);
+ //LogSession
+ Tekst := ILogSession[Ini.LogSession];
+ IniFile.WriteString('Advanced', 'LogSession', Tekst);
+
IniFile.Free;
end;
end;
diff --git a/Game/Code/Classes/ULog.pas b/Game/Code/Classes/ULog.pas
index 39c334ce..62414999 100644
--- a/Game/Code/Classes/ULog.pas
+++ b/Game/Code/Classes/ULog.pas
@@ -14,7 +14,11 @@ type
FileError: TextFile;
FileErrorO: boolean; // opened
+ FileSession: TextFile;
+ FileSessionO: boolean; // opened
+
NumErrors: integer;
+ NumSungSongs: integer;
Title: String; //Application Title
@@ -38,6 +42,8 @@ type
// voice
function LogVoice(SoundNr: Integer; Player, Artist, Title, Points: string): string;
+ procedure LogSession(names: array of string; points: array of string; Artist, Title, singmode: string);
+
// compability
procedure LogStatus(Log1, Log2: string);
procedure LogError(Log1, Log2: string); overload;
@@ -54,6 +60,8 @@ begin
if FileBenchmarkO then CloseFile(FileBenchmark);
// if FileAnalyzeO then CloseFile(FileAnalyze);
if FileErrorO then CloseFile(FileError);
+ if FileSessionO then CloseFile(FileSession);
+
end;
procedure TLog.BenchmarkStart(Number: integer);
@@ -281,6 +289,65 @@ begin
LogVoice := FileName;
end;
+procedure TLog.LogSession(names: array of string; points: array of string; Artist, Title, singmode: string);
+var
+ Num: integer;
+ FileName: string;
+ I: integer;
+
+begin
+ if not FileSessionO then
+ begin
+ FileSessionO := false;
+ NumSungSongs := 0;
+
+ for Num := 1 to 99999 do
+ begin
+ FileName := IntToStr(Num);
+ while Length(FileName) < 5 do FileName := '0' + FileName;
+ FileName := SessionLogPath + 'Session_' + FileName + '.log';
+ if not FileExists(FileName) then break
+ end;
+
+ AssignFile(FileSession, FileName);
+ {$I-}
+ Rewrite(FileSession);
+ if IOResult = 0 then FileSessionO := true;
+ {$I+}
+
+ //If File is opened write Date to File
+ If (FileSessionO) then
+ begin
+ WriteLn(FileSession, 'Session Log');
+ WriteLn(FileSession, 'Date: ' + DatetoStr(Now) + ' Time: ' + TimetoStr(Now));
+
+ Flush(FileSession);
+ end;
+ end;
+
+ if FileSessionO then
+ begin
+ try
+ Inc(NumSungSongs);
+ WriteLn(FileSession, '');
+ WriteLn(FileSession, '');
+ WriteLn(FileSession, '#----------------------------------------------------------------');
+ WriteLn(FileSession, '# ' + IntToStr(NumSungSongs) + ') ' + 'Date: ' + DatetoStr(Now) + ' Time: ' + TimetoStr(Now));
+ WriteLn(FileSession, '# Sing mode: ' + singmode);
+ WriteLn(FileSession, '#----------------------------------------------------------------');
+ WriteLn(FileSession, '# Song: ' + Artist + ' - ' + Title + ':');
+ for I := 0 to Length(names) - 1 do
+ begin
+ WriteLn(FileSession, '# ' + names[I] + ' - ' + points[I]);
+ end;
+ WriteLn(FileSession, '#-----------------------------------------------------------------');
+ Flush(FileSession);
+ except
+ FileSessionO := false;
+ end;
+ end;
+end;
+
procedure TLog.LogStatus(Log1, Log2: string);
begin
//Just for Debugging
diff --git a/Game/Code/Classes/UMain.pas b/Game/Code/Classes/UMain.pas
index a1df643e..2b947908 100644
--- a/Game/Code/Classes/UMain.pas
+++ b/Game/Code/Classes/UMain.pas
@@ -553,6 +553,7 @@ var
N: integer;
SumN: real;
NumS: integer;
+ tap: integer;
SMin: integer;
SMax: integer;
SDet: integer; // temporary: sentence of detected note
@@ -562,7 +563,6 @@ var
Range: integer;
NoteHit:boolean;
begin
-
for CP := 0 to PlayersPlay-1 do
begin
if (not AktSong.isDuet) then
@@ -711,17 +711,18 @@ begin
begin
for N := 0 to Czesci[P].Czesc[S].HighNut do
begin
- if (Czesci[P].Czesc[S].Nuta[N].Start+Czesci[P].Czesc[S].Nuta[N].Dlugosc
- >= Czas.AktBeatD) then
+ if (Czesci[P].Czesc[S].Nuta[N].Start > Czas.AktBeatD) then
begin
+ tap := Czesci[P].Czesc[S].Nuta[N].Dlugosc;
+ if (Czesci[P].Czesc[S].Nuta[N].Start + tap < Czas.AktBeatD) then
+ tap := Czas.AktBeatD - Czesci[P].Czesc[S].Nuta[N].Start - tap;
+
if (Ini.LineBonus = 0) then
// add points without LineBonus
- SumN := SumN + 10000 / Czesci[P].Wartosc * Czesci[P].Czesc[S].Nuta[N].Wartosc *
- Czesci[P].Czesc[S].Nuta[N].Dlugosc
+ SumN := SumN + 10000 / Czesci[P].Wartosc * Czesci[P].Czesc[S].Nuta[N].Wartosc * tap
else
// add points with Line Bonus
- SumN := SumN + 9000 / Czesci[P].Wartosc * Czesci[P].Czesc[S].Nuta[N].Wartosc *
- Czesci[P].Czesc[S].Nuta[N].Dlugosc;
+ SumN := SumN + 9000 / Czesci[P].Wartosc * Czesci[P].Czesc[S].Nuta[N].Wartosc * tap;
end;
end;
@@ -884,17 +885,18 @@ begin
begin
for N := 0 to Czesci[P].Czesc[S].HighNut do
begin
- if (Czesci[P].Czesc[S].Nuta[N].Start+Czesci[P].Czesc[S].Nuta[N].Dlugosc
- >=Czas.AktBeat) then
+ if (Czesci[P].Czesc[S].Nuta[N].Start > Czas.AktBeatD) then
begin
+ tap := Czesci[P].Czesc[S].Nuta[N].Dlugosc;
+ if (Czesci[P].Czesc[S].Nuta[N].Start + tap < Czas.AktBeatD) then
+ tap := Czas.AktBeatD - Czesci[P].Czesc[S].Nuta[N].Start - tap;
+
if (Ini.LineBonus = 0) then
// add points without LineBonus
- SumN := SumN + 10000 / Czesci[P].Wartosc * Czesci[P].Czesc[S].Nuta[N].Wartosc *
- Czesci[P].Czesc[S].Nuta[N].Dlugosc
+ SumN := SumN + 10000 / Czesci[P].Wartosc * Czesci[P].Czesc[S].Nuta[N].Wartosc * tap
else
// add points with Line Bonus
- SumN := SumN + 9000 / Czesci[P].Wartosc * Czesci[P].Czesc[S].Nuta[N].Wartosc *
- Czesci[P].Czesc[S].Nuta[N].Dlugosc;
+ SumN := SumN + 9000 / Czesci[P].Wartosc * Czesci[P].Czesc[S].Nuta[N].Wartosc * tap;
end;
end;
diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas
index fbf128b0..94c5d162 100644
--- a/Game/Code/Screens/UScreenSing.pas
+++ b/Game/Code/Screens/UScreenSing.pas
@@ -216,7 +216,7 @@ begin
SDLK_S:
begin
- Ini.PossibleScore := (Ini.PossibleScore+1) mod 2;
+ Ini.PossibleScore := (Ini.PossibleScore+1) mod 3;
Ini.Save;
end;
@@ -1040,9 +1040,6 @@ begin
end;
procedure TScreenSing.onShowFinish;
-var
- I: integer;
-
begin
// play movie (II)
if AktSong.VideoLoaded then
@@ -1414,20 +1411,26 @@ begin
for I := 0 to Length(Czesci) - 1 do
begin
+ //init K ...
K := Czesci[I].Akt;
+
+ //find actual line
for J := 0 to Czesci[I].High do
begin
if Czas.AktBeat >= Czesci[I].Czesc[J].Start then
K := J;
end;
+ //time diff
ab := GetTimeFromBeat(Czesci[I].Czesc[K].StartNote) - Czas.Teraz;
+ //last line
if (K = Czesci[I].High) then
ab := Czas.Teraz - GetTimeFromBeat(Czesci[I].Czesc[K].Nuta[Czesci[I].Czesc[K].HighNut].Start+
Czesci[I].Czesc[K].Nuta[Czesci[I].Czesc[K].HighNut].Dlugosc);
- if (ab>2*dt) then
+ //lyric main and other nice things
+ if (ab>2.5*dt) or ((K = Czesci[I].High) and (ab>dt)) then
begin
Alpha[I] := Alpha[I]-TimeSkip/dt;
if (Alpha[I]<0) then
@@ -1440,6 +1443,7 @@ begin
end else
Alpha[I] := 1;
+ //lyric sub
if (K < Czesci[I].High) then
begin
ab := GetTimeFromBeat(Czesci[I].Czesc[K+1].StartNote) - Czas.Teraz;
@@ -1579,12 +1583,16 @@ var
I, J: integer;
len, num: integer;
points: string;
+ scores: array of string;
+ names: array of string;
+ singmode: string;
begin
Music.CaptureStop;
Music.Stop;
- if Ini.SavePlayback = 1 then begin
+ if (Ini.SavePlayback = 1) and not FadeOut then
+ begin
Log.BenchmarkStart(0);
for I := 0 to PlayersPlay - 1 do
@@ -1600,7 +1608,46 @@ begin
Log.LogBenchmark('Creating files', 0);
end;
- if AktSong.VideoLoaded then begin
+ if (Ini.LogSession=1) and not FadeOut then
+ begin
+ SetLength(scores, PlayersPlay);
+ SetLength(names, PlayersPlay);
+ for I := 0 to PlayersPlay - 1 do
+ begin
+ points := IntToStr(Player[I].ScoreTotalI);
+ while Length(points) < 5 do
+ points := '0'+points;
+
+ scores[I] := points;
+ names[I] := Ini.Name[I];
+ end;
+
+ if (ScreenSong.Mode = smParty) then
+ singmode := PartySession.Plugins[PartySession.Rounds[PartySession.CurRound].PluginNr].Name
+ else if (ScreenSong.Mode = smChallenge) then
+ singmode := PartySessionM2.Plugins[PartySessionM2.Rounds[PartySessionM2.CurRound].PluginNr].Name;
+
+ if (ScreenSong.Mode = smMedley) or ScreenSong.PartyMedley then
+ begin
+ if (ScreenSong.Mode = smMedley) then
+ singmode := 'Medley';
+
+ if (PlaylistMedley.CurrentMedleySong<=PlaylistMedley.NumMedleySongs) then
+ singmode := singmode + ' (' + IntToStr(PlaylistMedley.CurrentMedleySong) +
+ '/' + IntToStr(PlaylistMedley.NumMedleySongs) + ')'
+ else
+ singmode := singmode + ' (' + IntToStr(PlaylistMedley.NumMedleySongs) +
+ '/' + IntToStr(PlaylistMedley.NumMedleySongs) + ')';
+
+ end else if(ScreenSong.Mode = smNormal) then
+ begin
+ singmode := 'Normal';
+ end;
+ Log.LogSession(names, scores, AktSong.Artist, AktSong.Title, singmode);
+ end;
+
+ if AktSong.VideoLoaded then
+ begin
acClose;
AktSong.VideoLoaded := false; // to prevent drawing closed video
end;
diff --git a/Game/Code/Screens/UScreenSingModi.pas b/Game/Code/Screens/UScreenSingModi.pas
index 6144c27f..0370509e 100644
--- a/Game/Code/Screens/UScreenSingModi.pas
+++ b/Game/Code/Screens/UScreenSingModi.pas
@@ -83,6 +83,7 @@ begin
begin
PlaylistMedley.CurrentMedleySong:=PlaylistMedley.NumMedleySongs+1;
Finish;
+ FadeOut := true;
Music.PlayBack;
for I := 0 to PlayersPlay-1 do //TODO: leave all this?
@@ -106,6 +107,7 @@ begin
end else
begin
Finish;
+ FadeOut := true;
Music.PlayBack;
if (ScreenSong.Mode=smParty) then
@@ -624,21 +626,28 @@ end;
end;
end;
- for I := 0 to Length(Czesci) - 1 do
+ for I := 0 to Length(Czesci) - 1 do
begin
+ //init K ...
K := Czesci[I].Akt;
+
+ //find actual line
for J := 0 to Czesci[I].High do
begin
if Czas.AktBeat >= Czesci[I].Czesc[J].Start then
K := J;
end;
+
+ //time diff
ab := GetTimeFromBeat(Czesci[I].Czesc[K].StartNote) - Czas.Teraz;
+ //last line
if (K = Czesci[I].High) then
ab := Czas.Teraz - GetTimeFromBeat(Czesci[I].Czesc[K].Nuta[Czesci[I].Czesc[K].HighNut].Start+
Czesci[I].Czesc[K].Nuta[Czesci[I].Czesc[K].HighNut].Dlugosc);
- if (ab>2*dt) then
+ //lyric main and other nice things
+ if (ab>2.5*dt) or ((K = Czesci[I].High) and (ab>dt)) then
begin
Alpha[I] := Alpha[I]-TimeSkip/dt;
if (Alpha[I]<0) then
@@ -651,6 +660,7 @@ end;
end else
Alpha[I] := 1;
+ //lyric sub
if (K < Czesci[I].High) then
begin
ab := GetTimeFromBeat(Czesci[I].Czesc[K+1].StartNote) - Czas.Teraz;
@@ -664,6 +674,7 @@ end;
end;
end;
+
if not AktSong.isDuet then
begin
Alpha[1] := Alpha[0];
diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas
index 56590166..226ae532 100644
--- a/Game/Code/Screens/UScreenSong.pas
+++ b/Game/Code/Screens/UScreenSong.pas
@@ -1118,7 +1118,7 @@ begin
ChangeSorting(Ini.Tabs=1, Ini.Sorting+1)
else
ChangeSorting(Ini.Tabs=1, 0);
- end else
+ end else if (SDL_ModState = KMOD_LCTRL) then
begin
//Change Tabs (on/off)
if (Ini.Tabs=1) then
@@ -1413,7 +1413,6 @@ begin
else
Interaction := I - 1;
- //Show Cat in Top Left Mod
HideCatTL;
//Show Wrong Song when Tabs on Fix
@@ -1445,6 +1444,9 @@ begin
ChangeMusic;
end;
+ if (Ini.Tabs=0) then
+ HideCatTL;
+
Ini.Save;
InfoHandler.changed := true;
diff --git a/Game/Code/UltraStar.bdsproj b/Game/Code/UltraStar.bdsproj
index acdabdad..c08bee96 100644
--- a/Game/Code/UltraStar.bdsproj
+++ b/Game/Code/UltraStar.bdsproj
@@ -170,8 +170,7 @@
<VersionInfoKeys Name="ProductName"></VersionInfoKeys>
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
<VersionInfoKeys Name="Comments"></VersionInfoKeys>
- </VersionInfoKeys>
- <Excluded_Packages>
+ </VersionInfoKeys> <Excluded_Packages>
<Excluded_Packages Name="c:\program files (x86)\borland\bds\4.0\Bin\dclib100.bpl">Borland InterBase Express Components</Excluded_Packages>
<Excluded_Packages Name="c:\program files (x86)\borland\bds\4.0\Bin\dclIntraweb_80_100.bpl">Intraweb 8.0 Design Package for Borland Development Studio 2006</Excluded_Packages>
<Excluded_Packages Name="c:\program files (x86)\borland\bds\4.0\Bin\dclIndyCore100.bpl">Indy 10 Core Design Time</Excluded_Packages>
diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr
index 954b0387..f9dae482 100644
--- a/Game/Code/UltraStar.dpr
+++ b/Game/Code/UltraStar.dpr
@@ -119,7 +119,7 @@ uses
UVideo in 'Classes\UVideo.pas';
const
- Version = 'UltraStar Deluxe Challenge, Medley & Duet Edition r9 beta 4';
+ Version = 'UltraStar Deluxe Challenge, Medley & Duet Edition r9 RC';
var
WndTitle: string;